MCP client-server example with calculator and knowledge base tools
Two tools with minimal documentation. 'multiply' is a trivial arithmetic operation with adequate schema but lacks context for when an LLM should invoke it. 'get_knowledge_base' has a longer description but no input parameters (empty schema), making it impossible to customize behavior. Both tools lack error recovery guidance, and descriptions do not explain prerequisites or failure modes. No tool annotations (readOnlyHint, idempotentHint) despite both being read-only operations. Naming is clear but generic; descriptions are present but below production quality (multiply: 34 chars, get_knowledge_base: 108 chars). No parameter validation rules documented.
Retrieve the entire knowledge base as a formatted string. Returns: A formatted string containing all Q&A pairs from the knowledge base.
Multiply two numbers together
get_knowledge_base has empty input schema (no parameters). Cannot accept filters, pagination, or format options. Reduces composability and forces full KB retrieval on every call.
No tool annotations (readOnlyHint, idempotentHint) despite both tools being read-only and safe to retry. LLMs cannot infer safety properties without explicit hints.
multiply tool lacks context for LLM selection. Description does not explain when to use it vs. other arithmetic or calculation tools. No use-case guidance.
get_knowledge_base error handling returns plain strings ('Error: ...') instead of structured error objects with recovery guidance. LLM cannot distinguish success from failure or know what to do next.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No output schema documented for either tool. LLMs cannot plan downstream operations or extract structured data. multiply returns int (implicit); get_knowledge_base returns string with no field structure.