A remote MCP server providing calculator tools without authentication, deployed on Cloudflare Workers
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-40 chars), falling well below the 50-200 char baseline for LLM-optimized descriptions. No output schemas documented. Error handling is minimal (divide-by-zero check in 'calculate' returns plain text, not structured error guidance). Tool names lack action verbs ('add' and 'calculate' are weak; 'perform_addition' and 'perform_calculation' would be clearer). No parameter descriptions beyond type hints. No tool annotations (readOnlyHint, idempotentHint). Composition is reasonable (two separate tools), but descriptions do not explain WHEN to use each tool or what distinguishes them.
Simple addition tool
Calculator tool with multiple operations
Tool descriptions are critically short (10-40 chars). 'Simple addition tool' and 'Calculator tool with multiple operations' lack context for LLM selection. Should explain WHAT each tool does, WHEN to use it vs the other, and what it returns. Baseline: 50-200 chars.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. Both tools return plain text in a content array, but this is not formally specified in tool definitions.
Parameter descriptions missing. 'a' and 'b' parameters have no descriptions beyond type hints. LLMs cannot infer whether 'a' is the first operand, the minuend, or something else. Every parameter needs a description explaining its role.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Tool names lack action verbs. 'add' and 'calculate' are generic. Better names: 'perform_addition', 'perform_arithmetic_operation', or 'compute_math'. Verb-noun naming helps LLMs parse intent from the name alone.
Error handling is unstructured. 'calculate' returns 'Error: Cannot divide by zero' as plain text. Should return a structured error with guidance: 'Division by zero is not allowed. Please provide a non-zero divisor.' Errors must guide recovery.