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, enum), but descriptions are extremely short (10-40 chars), falling well below the 50-200 char baseline for LLM-optimized descriptions. No output schema documentation. Error handling is minimal (divide-by-zero check in 'calculate' returns text, not structured error). 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 guidance on when to use one tool vs. the other.
Simple addition tool
Calculator tool with multiple operations
Descriptions are critically short (10-40 chars). 'Simple addition tool' and 'Calculator tool with multiple operations' lack context for LLM selection. Should explain WHAT the tool does, WHEN to use it, and what it returns (e.g., 'Adds two numbers and returns their sum as a text response. Use this for simple addition; use calculate() for subtract/multiply/divide.').
No parameter descriptions. Parameters 'a', 'b', and 'operation' lack explanations. LLMs cannot infer that 'operation' is an enum of exactly ['add', 'subtract', 'multiply', 'divide']. Add descriptions like 'First operand (number)' and 'Arithmetic operation: add, subtract, multiply, or divide'.
No output schema documented. Callers do not know the response structure. Document: 'Returns {content: [{type: "text", text: string}]}' or similar. This is required for agents to plan downstream tool calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool names lack action verbs. 'add' and 'calculate' are weak. Prefer 'perform_addition', 'perform_arithmetic', or 'compute_result'. Current names do not clearly signal intent to LLMs.
Error handling is unstructured. 'calculate' returns 'Error: Cannot divide by zero' as plain text. Should return a structured error response with error code and recovery guidance (e.g., 'divisor_is_zero: Cannot divide by zero. Provide a non-zero divisor.').