A remote MCP server providing calculator tools with no authentication requirements, deployed via Cloudflare Workers
Two simple tools with basic schemas and minimal descriptions. Tool names lack action verbs (add, calculate are nouns, not verb_noun pattern). Both tools have input schemas with typed parameters, which is good. However, descriptions are extremely brief (10-15 words), below the recommended 10-1024 character range for depth. No error handling guidance provided. No output schema documentation. The divide-by-zero check in 'calculate' returns an error message as plain text rather than structured output. Parameter descriptions are present but terse. No tool chaining metadata (tools don't return IDs useful for downstream calls). Overall score is conservative, the server works but lacks LLM-optimized descriptions and error guidance expected of production tools.
Simple addition tool that adds two numbers
Calculator tool with multiple operations (add, subtract, multiply, divide) supporting two operands
Tool names lack action verbs. 'add' and 'calculate' are nouns/descriptors, not verb_noun pattern (e.g., 'perform_addition', 'compute_arithmetic'). LLMs rely on verb-first naming to infer intent from the tool name alone.
Descriptions are too brief (<50 chars) to guide LLM tool selection. 'Simple addition tool that adds two numbers' and 'Calculator tool with multiple operations...' lack context for WHEN to use each tool or WHY one differs from the other. Recommend 50-150 character descriptions explaining use case and distinctiveness.
No output schema documented. Tools return untyped text content. LLMs cannot plan downstream calls or validate results. Specify return structure: e.g., {type: 'object', properties: {result: {type: 'number'}, error?: {type: 'string'}}}.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 37 | - | v1 |
Error handling is unstructured. 'calculate' returns 'Error: Cannot divide by zero' as plain text. Per pattern:recovery-guide, errors should guide the LLM: 'Cannot divide by zero. Use positive or negative non-zero divisor.' Error classification (retryable vs fatal) is absent.
No parameter descriptions for 'a' and 'b' in 'add' tool. Schema defines type: 'number' but no context (range, units, valid bounds). LLMs may pass absurd values (e.g., 1e308) without guidance.
Parameter descriptions in 'calculate' are minimal. 'a' and 'b' have no guidance on range, type restrictions, or relationship to operation. The 'operation' param description is absent from visible schema.
No idempotency guarantees. Both tools are side-effect free (read-only), which is good, but this is not explicit in tool metadata. Modern MCP uses idempotentHint and readOnlyHint annotations to signal safety to LLMs.