A simple MCP server providing calculator tools without authentication
This server presents severe definition quality gaps. Both tools have minimal or missing descriptions (8-40 chars, well below the 10-1024 baseline). Parameter descriptions are entirely absent (null values in schema). The 'add' tool is redundant given the more general 'calculate' tool. While input schemas are technically present using Zod validators, they lack the descriptive metadata LLMs need for proper tool selection and error recovery. No error handling guidance is provided, the divide-by-zero case returns text instead of a structured error object with recovery steps. Output is unstructured text rather than typed JSON objects.
Simple addition tool
Calculator tool with multiple operations
Tool descriptions are critically short and lack context. 'Simple addition tool' (22 chars) and 'Calculator tool with multiple operations' (40 chars) do not explain WHEN to use each tool, WHAT the output means, or distinguish between the two. Baseline is 194 chars average; these are 9 - 20% of that.
ALL input parameter descriptions are null. The schema shows 'a', 'b', 'operation' parameters but provides zero context for the LLM. Parameter descriptions are REQUIRED (100% of A+ tools have them).
Output schema is undocumented. Both tools return text wrapped in {content: [{type: 'text', text: String}]} but the LLM has no spec of this structure. LLMs need to know what fields to expect.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 34 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Error handling is unstructured and non-actionable. The divide-by-zero case returns plain text: 'Error: Cannot divide by zero'. No recovery guidance provided.
Tool redundancy. The 'add' tool is a strict subset of 'calculate' (operation=add). Both tools coexist unnecessarily, forcing the LLM to reason about which to call.
Enum constraint for 'operation' parameter lacks documentation in the description itself.