A simple MCP server providing calculator tools without authentication
Two tools with basic schemas and minimal descriptions. Both tools have input schemas with proper types (number, string, enum), but descriptions are extremely short (10-50 chars) and lack context for LLM selection. No output schema documentation. Error handling is minimal (divide-by-zero check in 'calculate' but no guidance for recovery). Tool names are action-oriented but descriptions don't explain WHEN to use each tool or what distinguishes them. No parameter descriptions beyond type hints in schema.
Simple addition tool
Calculator tool with multiple operations
Descriptions are critically short (10-50 chars). 'Simple addition tool' and 'Calculator tool with multiple operations' lack context for LLM selection. Baseline for A+ tools is 50-200 chars with WHAT/WHEN/WHY guidance.
No parameter descriptions in tool definitions. Schema shows types (number, string, enum) but LLMs cannot infer meaning from names alone. 'a' and 'b' are ambiguous, are they operands, indices, or something else? Parameter descriptions are required by pattern:tool-description.
No output schema documented. Callers cannot predict response structure. Both tools return {content: [{type: 'text', text: string}]} but this is not declared in tool metadata. LLMs need documented return types to plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Minimal error handling. 'calculate' checks divide-by-zero but returns plain text error. No error classification (retryable vs fatal), no recovery guidance. Pattern:recovery-guide requires 'what to do next' in error responses.
Tool overlap not addressed. Both 'add' and 'calculate' can add numbers. LLM must reason about which to call. Pattern:tool requires each tool to do exactly one thing; consider removing 'add' or clarifying when to use it vs 'calculate'.