Record and replay MCP server interactions for deterministic testing.
This is a test fixture server, not a production MCP tool provider. All four tools have basic descriptions (10-30 chars each) and simple input schemas, but lack the depth, error guidance, and composition patterns expected in production agents. Tools are named correctly (verb_noun pattern), parameters are typed, but descriptions are minimal ('Add two numbers', 'Echo back the input message'). No output schemas documented. No error handling or recovery guidance. No parameter constraints or validation hints. The server itself is a test infrastructure tool (recording/replay framework), not a domain-specific tool suite.
Add two numbers.
Echo back the input message.
Get fake weather data for a city.
Multiply two numbers.
Minimal tool descriptions (10-30 characters). Descriptions like 'Add two numbers' lack context for LLM tool selection. Baseline for production tools is 34-392 chars (p10-p90), and 100% of A+ tools have detailed docstrings explaining when to use each tool and what it returns.
No documented output schemas. 'get_weather' returns dict[str, Any] with fields {city, temp_c, condition, humidity}, but LLM has no visibility into this structure. 100% of A+ tools have documented return types so agents can plan downstream calls and extract required fields.
No error handling or recovery guidance. Tools return bare values; no indication of failure modes (e.g., city not found for get_weather). Pattern requires error responses that tell LLM what to do next, categorized as retryable/user-fixable/fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 47 | 2025-11-25+ | v1 |
No parameter constraints or hints. 'add(a: int, b: int)' lacks min/max bounds, negative number guidance, or use-case examples. Baseline rule: specify range for numeric params (e.g., 'range: -999,999,999 to 999,999,999').
No tool composition hints. Tools are isolated; no guidance on chaining (e.g., 'use get_weather first to validate city'). Baseline: when A's output feeds into B, document this in descriptions.