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 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. Schemas are present but sparse.
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 WHEN to use each tool, what they return, and any prerequisites.
No parameter descriptions. Zod schema defines types but LLMs cannot read JSON Schema directly. Each parameter (a, b, operation) needs a text description explaining its role, valid range, and format.
Output schema not documented. Tool responses return {content: [{type: 'text', text: string}]} but this structure is not declared. LLMs cannot plan downstream calls or validate results without knowing the response shape.
Tool names lack action verbs. 'add' and 'calculate' are generic. Prefer 'perform_addition', 'perform_arithmetic', or 'compute_math' to signal intent clearly. Current names are ambiguous, 'add' could mean append, insert, or sum.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Error handling is unstructured. 'calculate' returns plain text 'Error: Cannot divide by zero' instead of a structured error with recovery guidance. Should return {error: {code: 'DIVISION_BY_ZERO', message: '...', recoverable: true}}.