Two tools with basic verb-noun naming (get_alerts, get_forecast). Both have short descriptions (34-40 chars, below the 50-200 char LLM-optimized baseline). Input schemas are present with type definitions but parameter descriptions are minimal (10-20 chars). No output schema documented. Error handling returns plain strings with no recovery guidance. No tool annotations (readOnlyHint, etc.). Composition is reasonable, each tool does one thing, but responses lack structured output and pagination support.
Get weather alerts for a US state.
Get weather forecast for a location.
Descriptions are too short (34-40 chars vs. 50-200 char baseline). LLMs cannot determine when to select these tools over alternatives. 'Get weather alerts for a US state' lacks context on use cases, prerequisites, or what data is returned.
Parameter descriptions are minimal (10-20 chars). 'Two-letter US state code (e.g. CA, NY)' is acceptable, but 'Latitude of the location' and 'Longitude of the location' lack format constraints, valid ranges, or precision guidance. LLMs may pass invalid values.
No output schema documented. Responses are plain strings with no structured fields. LLMs cannot extract specific data (e.g. alert severity, forecast temperature) or chain to downstream tools. Violates pattern:response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Error handling returns generic strings ('Unable to fetch alerts', 'No alerts found') with no recovery guidance. LLMs cannot determine if the error is retryable, user-fixable, or fatal. Violates pattern:recovery-guide.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the schema. Agents cannot optimize caching or retry logic.