A Ruby implementation of the Model Context Protocol (MCP) server with support for tools, resources, and prompts
Two tools with minimal descriptions (10-20 chars each) and basic schemas. Tool names lack action verbs ('add', 'hello' are generic). Schemas present but lack parameter descriptions. No error handling guidance, no output schema documentation, no security considerations. Descriptions fall below the 20-char hard floor for meaningful LLM guidance. This is a minimal proof-of-concept implementation, not production-ready.
Add two numbers together
Say hello to someone
Tool descriptions are too short (10-20 chars). 'Add two numbers together' and 'Say hello to someone' provide minimal context for LLM selection. Baseline is 34-392 chars; these fall below the hard floor of 20 chars for meaningful guidance.
Tool names lack action verbs or are too generic. 'add' and 'hello' do not follow verb_noun convention (e.g., 'add_numbers', 'greet_user'). Generic names reduce LLM's ability to disambiguate intent.
Parameter descriptions are missing. Input schemas define 'a', 'b', 'name' but provide no descriptions explaining what each parameter controls or its constraints. LLMs cannot infer meaning from names alone.
No output schema documentation. Tools return results but do not document the structure, field names, or types of responses. LLMs cannot plan downstream calls without knowing what fields to expect.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | <=2025-11-25 | v2 |
No error handling or recovery guidance. Tools provide no error messages, categorization (retryable vs. fatal), or hints for LLM recovery. A failed call leaves the agent with no path forward.