MCP server for managing Slack daily standup reports
The server provides 6 tools with visible schemas and descriptions, but several quality gaps prevent a higher score. All tools have names following verb_noun pattern (add_, remove_, get_, send_, clear_, update_). Descriptions are present but vary in quality, some are under 50 chars (get_standup, clear_standup) which is below the 50-200 char ideal. Input schemas are well-formed with proper type definitions and enum constraints for category parameters. However, parameter descriptions are minimal or missing in critical places: the 'item' parameter in add_standup_item lacks validation guidance; remove_standup_item's index parameter lacks bounds documentation; update_standup's array parameters lack cardinality constraints. Output schemas are not documented anywhere, the tools return structured data but LLMs have no formal contract describing the response shape. Error handling is minimal, no recovery guidance, no categorization of errors as retryable vs fatal. Tool descriptions lack context on when to use each (e.g., when does clear_standup vs update_standup make sense?). The design is functional but lacks production-grade clarity.
Add an item to the standup report (in progress, done, blocker, or planned)
Clear all standup data from memory
Get the current standup report from memory
Remove an item from the standup report by index
Send the current standup report to Slack
Replace entire standup data with new content
Output schemas completely undocumented. LLMs have no formal contract for response shape. get_standup returns structured standup data, send_standup returns success/failure status, but neither specifies field types or structure.
Parameter descriptions are minimal or missing validation guidance. 'item' parameter in add_standup_item has no guidance on max length, character restrictions, or format. 'index' in remove_standup_item lacks bounds (0-N constraint). Array parameters in update_standup lack cardinality hints (max items).
Tool descriptions too brief to guide LLM selection. get_standup (8 words), clear_standup (7 words), and remove_standup_item (10 words) are below the 10-word minimum and lack context on when to use them instead of similar tools.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
No error handling guidance. If send_standup fails (e.g., SLACK_WEBHOOK_URL not set), the LLM receives a raw error message with no recovery suggestion. No categorization as retryable vs fatal. No distinction between 'webhook not configured' (fatal, ask user) vs 'Slack API timeout' (retryable).
Ambiguous tool relationships. clear_standup and update_standup both modify the standup state. The descriptions don't clarify when to use each, is clear_standup equivalent to update_standup(inProgress=[], done=[], blockers=[], plannedNext=[])? This forces LLM guessing.
Missing dry-run support for destructive operations. clear_standup destroys all data with no preview or undo capability. send_standup has a preview flag (good), but clear_standup does not. An agent could accidentally clear all standup data.
No tool composition hints in descriptions. If an agent adds multiple items, should it call add_standup_item three times, or is there guidance on batch operations? The description of update_standup doesn't explain it's the batch/replace operation vs the incremental add_standup_item.