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). No parameter descriptions beyond type hints. Tool names lack action verbs ('add' and 'calculate' are weak; 'perform_addition' and 'perform_calculation' would be clearer). No tool annotations (readOnlyHint, idempotentHint). Composition is reasonable (two separate tools), but descriptions do not guide LLM selection or explain when to use each.
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 each tool does, WHEN to use it, and any prerequisites. Baseline: 50-200 chars.
No parameter descriptions. Parameters 'a', 'b', 'operation' have types but no descriptions explaining their meaning, constraints, or valid ranges. LLMs cannot infer that 'operation' is an enum of arithmetic operations without explicit text.
No output schema documented. Callers do not know what fields to expect in the response. Both tools return text content, but this is not formally specified. LLMs need structured output schemas to plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Weak tool names. 'add' and 'calculate' lack action verbs and are generic. 'perform_addition' or 'add_numbers' would be clearer. 'calculate' is vague, does it only do arithmetic, or other calculations? Naming should convey intent without reading the description.
Error handling is minimal and unstructured. 'calculate' returns a text error for divide-by-zero, but does not categorize it as retryable/user-fixable/fatal or guide recovery. No error classification pattern.