KNMI Weather server has clear, functional tool definitions with reasonable descriptions and basic input schemas. However, there are significant gaps in output schema documentation, parameter descriptions lack detail, and error handling guidance is minimal. The four tools follow a consistent naming pattern (verb_noun) and all have descriptions, but descriptions are short (24-62 chars, below the 50-200 char optimum for LLM reasoning). Parameter descriptions are present but generic. No tool has documented return types or output schemas. Error handling returns raw strings rather than structured guidance. The server uses HTTP transport (good), but lacks modern MCP protocol features like tool annotations (readOnlyHint, destructiveHint) despite all tools being READ_ONLY, and has no per-request logLevel support.
Get current weather data for a location
Find the nearest KNMI weather station to given coordinates
Search for locations in the Netherlands
Get and interpret weather data for a location in the Netherlands
No tool has a documented output/return schema. LLMs cannot infer result structure, forcing unstructured parsing or failed downstream tool chaining.
Tool descriptions are too short (24-62 chars, baseline 50-200 chars optimum). Lack context on WHEN to use, WHAT data is returned, and HOW it differs from related tools. Insufficient for LLM tool selection reasoning.
Parameter descriptions are minimal and lack actionable constraints. 'query' has no length limits; 'latitude'/'longitude' have no range constraints; 'location' has no format guidance. Missing: enums, patterns, min/max, regex constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 11 | - | v1 |
Error handling returns unstructured error strings or raw exceptions. LLM receives no recovery guidance: 'Error: Unable to get weather data for X. ...'. Should return structured error with 'try search_location first' or 'coordinates out of bounds, try another location'.
Tool naming inconsistency: 'what_is_the_weather_like_in' is verbose and mixes natural language with verb_noun. Should be 'describe_weather' or 'interpret_weather_for' for clarity and consistency with other tools.
search_location hardcodes limit=5 in implementation but does not document this in description or offer pagination. LLM cannot control result volume, and large result sets may be silently truncated without warning.
All tools marked READ_ONLY in risk classification but no tool annotations (readOnlyHint) present in schema. Modern MCP spec enables tool annotations to signal intent to LLM; should be used for clarity.