This is a minimal calculator server with 2 simple tools. Both tools have basic descriptions and visible input schemas with type definitions and parameter descriptions. However, the definitions lack depth for production use: descriptions are very short (11-43 chars, well below the 50-200 char LLM-optimized baseline), output schemas are not documented, error handling is absent, and no tool annotations (readOnlyHint, destructiveHint, idempotentHint) are declared. The tools themselves are well-named with action verbs (add, random_number) but serve as proof-of-concept rather than production-grade definitions. Per-tool analysis: 'add' scores 60 (clear naming, basic description at 28 chars, complete schema with types and param descriptions), 'random_number' scores 56 (good naming, description at 43 chars, complete schema with defaults but lacks output schema documentation). Average: 58.
Add two numbers together
Generate a random number within a range.
Tool descriptions are too short (11-43 chars), LLM-optimized descriptions should be 50-200 chars and answer WHAT the tool does, WHEN to use it, and any prerequisites. Current descriptions lack context for LLM selection.
Output schemas are not documented. LLMs need to know what fields and types to expect so they can plan downstream tool calls and extract the right data. Both tools return int but this is not declared in schema metadata.
No error handling guidance. If add() receives non-integer inputs or random_number() receives min_value > max_value, no recovery message is provided. Error responses should guide the LLM on next steps.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared in tool definitions. Both tools are read-only and idempotent but this is not formally declared.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 51 | - | v1 |
No parameter constraints or validation guidance. random_number accepts min_value and max_value with defaults but does not document what happens if min_value > max_value, or if either is negative. Should specify valid ranges or document edge cases.