Two tools with basic verb-noun naming (get_alerts, get_forecast). Both have short descriptions (34-45 chars, below the 50-200 char baseline for LLM optimization). Input schemas are present with typed parameters and descriptions, but output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. No error handling guidance, no parameter constraints (e.g., state code validation), and no indication of pagination or result limits. Tools return free-text strings rather than structured objects, forcing LLMs to parse unstructured output.
Get weather alerts for a US state.
Get weather forecast for a location.
Output schemas completely undocumented. Both tools return free-text strings with no structured schema definition. LLMs cannot extract fields for downstream calls or validate response structure.
Descriptions too short (34-45 chars vs. 50-200 char baseline). Lack context for tool selection. 'Get weather alerts for a US state' does not explain when to use this vs. get_forecast, what data is returned, or prerequisites.
No input validation or constraint documentation. 'state' parameter accepts any string; no enum, regex, or length constraint. LLMs will pass invalid state codes (e.g., 'XX', 'California') without guidance.
No error handling guidance. Code silently returns 'Unable to fetch alerts' or 'No alerts found' with no recovery hints. LLMs cannot distinguish retryable failures from user-fixable errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No pagination or result limits documented. get_alerts may return hundreds of alerts; get_forecast hardcodes 5 periods. No limit parameter, no total count, no next_cursor. Large results will blow context windows.