This server has only 1 tool ('add') with significant definition gaps. The tool is visible and directly registered via server.tool() in src/index.ts. Schema exists (Zod validators for 'a' and 'b' parameters, both numbers) and is properly typed. However, the tool lacks a description entirely, there is no docstring or description argument passed to server.tool(). Both input parameters ('a' and 'b') lack descriptions; Zod provides type information only, not semantic meaning. The output schema is not documented. The tool name 'add' is adequate but generic (no action verb prefix like 'compute_sum'). This server represents a template/demo with minimal production quality.
Tool 'add' has no description. LLMs cannot determine when or why to select this tool, violating the critical 'every tool must have a non-empty description' rule.
Input parameters 'a' and 'b' lack descriptions. LLMs cannot infer that 'a' is the first operand and 'b' is the second; they only see the type (number).
Output schema is not documented. The code shows the tool returns {content: [{type: 'text', text: string}]} but this structure is not explicitly declared for the LLM.
Tool name 'add' is generic and lacks an action verb. Baseline best practice is verb_noun naming (e.g. 'compute_sum'). 'add' is ambiguous in a diverse tool environment, does it add numbers, add items to a list, add a user to a group, or add a record to a database?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 26 | - | v1 |
No error handling or recovery guidance. If invalid inputs are passed (e.g., non-numbers despite Zod validation), the LLM receives no actionable error message explaining what went wrong or how to correct it.