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 (18-45 chars, well below the 50-200 char baseline for LLM-optimized descriptions). Parameter descriptions are present but terse. No output schema documentation. Error handling exists (divide-by-zero check) but lacks recovery guidance. Tool names are action-oriented (add, calculate) but lack verb prefixes. No tool annotations (readOnlyHint, idempotentHint). Composition is reasonable, two separate tools rather than one combined tool.
Simple addition tool
Calculator tool with multiple operations
Tool descriptions are too short (18-45 chars vs. 50-200 char baseline). 'Simple addition tool' and 'Calculator tool with multiple operations' lack context for LLM selection. No explanation of when to use add vs. calculate, what each returns, or prerequisites.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. Both tools return text content but no schema specifies the response structure, field names, or data types.
Tool names lack action verbs. 'add' and 'calculate' are nouns/verbs but do not follow verb_noun convention (e.g., 'perform_addition', 'perform_calculation'). This reduces clarity when many tools are available.
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the schema. Agents cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error handling for divide-by-zero returns plain text ('Error: Cannot divide by zero') without recovery guidance. Per pattern:recovery-guide, errors should tell the LLM what to do next or classify as retryable/user-fixable/fatal.