MCP server with HTTP and stdio transport support, providing tools for arithmetic, BMI calculation, weather fetching, and greeting resources
Three tools with basic schemas and minimal descriptions. All tools have input schemas with proper types (Zod validation), but descriptions are generic and lack context for LLM selection. No parameter descriptions beyond type hints. No output schemas documented. No error handling guidance. Tools lack verb-noun naming clarity (e.g., 'fetch-weather' is acceptable but 'add' and 'calculate-bmi' are weak). No indication of idempotency, destructiveness, or retry safety. Composition is reasonable (single responsibility), but descriptions do not explain WHEN to use each tool or what to expect.
Addition tool that adds two numbers
Calculates Body Mass Index from weight in kilograms and height in meters
Fetches weather data for a specified city from an external weather API
Tool descriptions are too generic and lack LLM-selection context. 'Addition tool that adds two numbers' (34 chars) does not explain when to use it vs other math tools, what it returns, or prerequisites. Baseline: 194 chars average for A+ tools.
No parameter descriptions. Zod schemas define types (number, string) but LLMs cannot infer meaning from names alone. 'city' could mean city name, city code, or city ID. 'heightM' is ambiguous, is it height in meters or millimeters? 100% of A+ tools have parameter descriptions.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. fetch-weather returns raw API text; no schema tells the LLM what fields to expect (temperature, humidity, forecast, etc.).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
Weak tool naming. 'add' is a generic verb without context, does it add numbers, items to a list, or users to a group? 'calculate-bmi' is acceptable but could be 'compute_bmi' for consistency. Baseline: 90% of A+ tools start with action verbs; average length 18 chars.
No error handling guidance. fetch-weather calls an external API without documented timeout, retry logic, or recovery hints. If the API fails, the LLM receives no guidance on what to do next.