discord-mcp has 4 tools with clear verb-noun naming (get_servers, get_channels, read_messages, send_message). All tools have descriptions (10-80 chars) and input schemas with type definitions. However, descriptions are minimal (under 100 chars) and lack context about when to use each tool or what they return. Parameter descriptions are present but terse. Output schemas are not documented, callers must infer structure from code. Error handling is basic (ValueError for constraints) but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Missing pagination for list results and no guidance on rate limits or Discord API constraints.
List all channels in a specific Discord server
List all Discord servers (guilds) you have access to
Read recent messages from a specific channel
Send a message to a specific Discord channel. Long messages are automatically split.
Output schemas not documented. Callers cannot plan downstream tool calls or extract fields without reading source code. E.g., get_servers returns [{id, name}] but this is inferred, not declared.
Descriptions are minimal (10-80 chars) and lack context. 'List all Discord servers' does not explain when to call this vs get_channels, or what the response structure is. Baseline for A+ tools is 50-200 chars with WHAT/WHEN/RETURN guidance.
No tool annotations. send_message is destructive (WRITE risk) but lacks destructiveHint. get_servers and read_messages are read-only but lack readOnlyHint. Agents cannot infer safety without annotations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
No pagination support. get_servers and get_channels return all results without limit or cursor. Large Discord servers could return hundreds of channels, exhausting context window.
Error messages lack recovery guidance. ValueError('hours_back must be between 1 and 8760') tells the LLM the constraint but not what to do next. Should suggest 'Try hours_back=24 for recent messages.'