An MCP server with OAuth 2.0 authorization integrated with Cloudflare Workers, demonstrating a demo arithmetic tool.
The 'add' tool has a visible Zod schema with typed parameters but critical deficiencies across naming, description, and parameter documentation. The tool name 'add' is a generic math operation, not prefixed with an action verb (e.g., 'calculate_sum'). The tool definition in src/index.ts shows NO description string whatsoever, only schema registration. Both parameters 'a' and 'b' have Zod type constraints (z.number()) but the schema extraction shows descriptions as null, meaning parameter documentation is completely absent. The output is a simple text response without documented schema. This fails multiple hard scoring rules: no tool description (description score = 0), null parameter descriptions (critical deficiency), and a naming pattern misaligned with production tool conventions. The server provides zero guidance to an LLM on when to use this tool, what each parameter means, or what the output structure is beyond a raw text response.
Both parameters 'a' and 'b' have null descriptions in the parsed schema. The Zod schema defines type (z.number()) but provides no human-facing parameter description explaining what 'a' and 'b' represent, why an LLM would pass them, or what values are acceptable.
Tool name 'add' lacks an action verb prefix. 'add' is ambiguous, does it add a user, add a task, or perform arithmetic? Suggested rename: 'calculate_sum' or 'sum_numbers'.
Output schema is undocumented. The tool returns { content: [{ type: 'text', text: String(a + b) }] } but no schema definition or description is provided to the LLM, violating the pattern that tools must document return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 25 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
No error handling or recovery guidance. If the tool is called with non-numeric values, no error message tells the LLM how to recover or what constraint was violated.