Discord bot for supporting AI/LLM chat applications powered by the Model Context Protocol (MCP), allowing for numerous integrations
This server has 4 tools with minimal viable definitions. All tools have basic descriptions and input schemas, but descriptions are generic and lack actionable context. No parameter descriptions exist, schemas show type info but no descriptions field is visible in the input objects. Tool names are action-starting (add, magic_8_ball, long_task, error_tool) but lack clarity on when to use each. The 'magic_8_ball' description explicitly states '(Question is ignored)' which is unusual and suggests poor UX design. Schema structures are present but parameters lack descriptive text that would help an LLM understand purpose and constraints. Error handling is minimal, error_tool exists to test errors, but there's no guidance in descriptions on recovery paths. No tool annotations (readOnlyHint/destructiveHint) are visible. Overall, these are demo/toy tools that would not pass production code review.
Adds two integers together.
Intentionally raises a ValueError for testing error handling.
Simulates a task that takes some time to complete.
Consult the Magic 8-Ball for a glimpse into the future! (Question is ignored).
Parameter descriptions missing: All 4 tools have input parameters (a, b, question, delay, message) but the JSON schemas shown do NOT include description fields for parameters. Schemas only show type and name. LLMs cannot infer parameter purpose from type alone, a 'delay' param needs to explain units (seconds, milliseconds?), constraints (min/max), and use case.
Tool descriptions lack context and recovery guidance: 'magic_8_ball' says '(Question is ignored)', a red flag that the param is useless, yet it's still exposed. Descriptions do not explain WHEN to use each tool or what downstream actions might follow. No mention of prerequisites, error cases, or what to do if a call fails.
Tool naming lacks clarity: 'long_task' is vague, does it compute, fetch data, or simulate work? 'error_tool' is even worse, LLMs will not know why this tool exists or when to call it (presumably for testing only, not production). 'magic_8_ball' is whimsical but appropriate for a toy server.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 26 | - | v1 |
No tool annotations: Tools lack readOnlyHint, destructiveHint, or idempotentHint. Even though all tools are marked READ_ONLY in the summary, this is not visible in the schema. An LLM cannot infer idempotency (safe to retry) without explicit annotation.
No output schemas documented: No evidence in source that return types are documented for tools. LLMs need to know: does 'add' return an int or a structured object with {result: int}? What does 'magic_8_ball' return, a string, or {answer: string, confidence: float}? Undocumented outputs force LLMs to guess.