Microservice wrapper for weather APIs with LFU caching, pluggable providers, and fallback support
Three tools with clear verb-noun naming (get_*) and reasonable descriptions (100-150 chars each). All tools have input schemas with typed parameters and descriptions. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses. Error handling returns strings rather than structured objects, making it difficult for agents to distinguish success from failure or determine retry strategy. No parameter constraints (enums, ranges) despite 'days' parameter accepting 1-5. Tool descriptions lack WHEN-to-use context and dependency hints. No mention of fallback behavior or caching markers in descriptions, forcing LLMs to infer from response text.
Get the air quality index (AQI) for a city.
Get the current weather conditions for a city.
Get a multi-day weather forecast for a city.
Output schemas completely undocumented. Tools return formatted strings with embedded markers ([CACHED], [FALLBACK]) but LLMs cannot parse these reliably. No structured response definition means agents cannot extract specific fields (temperature, AQI value, forecast dates) for downstream processing.
Error handling returns plain strings instead of structured error objects. LLMs cannot distinguish 'Error fetching weather' (user input error) from 'Error connecting to weather service' (retryable) from 'Invalid city' (user-fixable). No recovery guidance provided.
Parameter 'days' accepts 1-5 but no enum or range constraint declared in schema. Description mentions range but LLMs cannot read constraint text reliably, they need formal min/max in schema. Tool silently clamps to 5 without informing LLM.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Tool descriptions do not explain fallback behavior or caching. Descriptions state WHAT (get weather) but not WHEN to use (vs. forecast) or HOW it behaves (falls back to direct API, caches results). LLMs cannot reason about tool selection or result freshness.
No idempotency guarantees documented. Tools call external weather APIs which may have rate limits or transient failures. No indication whether repeated calls with same city are safe or will incur duplicate charges/requests.