Weather data server providing current weather and forecast information via Open-Meteo API
Two tools with minimal but present schemas and descriptions. Both tools have proper input schemas with typed parameters (latitude, longitude as floats with descriptions). Descriptions exist but are extremely brief (10-11 chars each, well below the 50-200 char LLM-optimized baseline). No output schemas documented. No error handling guidance. No parameter constraints or validation hints. Tools return unstructured strings rather than typed objects. No tool annotations (readOnlyHint present in metadata but not declared in schema). Composition is reasonable (two distinct weather operations), but overall quality is below production baseline.
Get current weather for a location.
Get weather forecast for a location.
Descriptions are critically short (10-11 chars). Rubric requires 50-200 chars for LLM optimization. Current descriptions ('Get current weather for a location.' and 'Get weather forecast for a location.') lack context on when to use each tool, what data is returned, or how they differ.
No output schema documented. Tools return raw strings (unstructured JSON serialization or error messages). LLMs cannot plan downstream operations or extract structured fields. Rubric baseline: 100% of A+ tools have documented return types.
No error handling guidance. make_openmeteo_request() silently returns None on any exception, and tools respond with generic strings ('Unable to fetch...'). LLMs receive no actionable recovery hints (retry? check input? call alternative tool?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
No parameter constraints or validation hints. Latitude/longitude accept any float but lack documented ranges (-90 to 90, -180 to 180). LLMs may pass invalid coordinates without guidance.
Tool annotations declared in metadata (Risk: READ_ONLY) but not in schema. FastMCP should expose readOnlyHint in the tool schema for MCP clients to parse.