MCP server for GetStream Feeds — investigate push notification delivery and subscription state.
Server has 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (getstream_feed_*). Descriptions are present but generic (avg 95 chars, below 194-char baseline). Parameters are typed with Zod and have descriptions. Error handling returns structured text responses but lacks recovery guidance. No output schema documentation. Missing tool annotations (readOnlyHint/destructiveHint). Confirm gates on write operations are good practice but not a substitute for proper error classification.
Get recent activities on a feed with timestamps and payloads
Subscribe a feed to another feed (create a follow relationship). Requires confirm: true as a safety gate.
Get followers of a specific feed (i.e. who is subscribed to a feed). Example: feed_slug=timeline, feed_id=timeline_global
Get what feeds a specific feed follows (i.e. what a feed is subscribed to). Example: feed_slug=notification, feed_id=user_123
Unsubscribe a feed from another feed (remove a follow relationship). Requires confirm: true as a safety gate.
No output schema documentation. LLMs cannot predict response structure or plan downstream calls. Tools return JSON via ok() helper but structure is undocumented.
Error responses lack recovery guidance. err() helper returns plain text 'Error: <message>' without actionable next steps or error classification (retryable vs fatal).
Missing tool annotations. Write operations (follow/unfollow) lack destructiveHint; read operations lack readOnlyHint. Agents cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Description for getstream_feed_activities is too generic ('Get recent activities on a feed with timestamps and payloads'). Does not explain when to use vs other tools or what 'activities' means in GetStream context.
Confirm parameter defaults to false but is required for write operations. If LLM omits it, operation silently fails with 'confirm must be true' error. Should validate and return actionable error message.