Exposes weather tools over MCP (Model Context Protocol) so a Databricks Agent Bricks agent can call them. Provides current weather, forecasts, umbrella/jacket recommendations, severe weather alerts, and city weather comparisons using Open-Meteo and National Weather Service APIs.
Five tools with clear verb-noun naming and comprehensive descriptions (avg 180 chars, within baseline 194). All tools have input schemas with typed parameters and descriptions. However, output schemas are documented only in docstrings, not as formal JSON Schema. Error handling returns status/message dicts but lacks recovery guidance (e.g., 'Try search_users first'). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being READ_ONLY. Parameter descriptions are solid but some lack explicit constraints (e.g., days 1-16 stated in description but not as JSON Schema min/max). Location parameter accepts multiple formats (city, lat/lon) but no enum or pattern constraint to guide LLM input validation.
Compare current conditions across multiple cities side by side.
Get current conditions for a location: temperature, humidity, wind, and a short description of conditions (e.g. "Partly cloudy").
Get a multi-day forecast for a location: daily high/low temperature, precipitation chance, and conditions.
Get active severe-weather alerts (NWS) for a location. US locations only - NWS does not cover international locations.
Derived judgment call: pulls the forecast for the requested day and decides whether an umbrella and/or jacket are worth bringing. Umbrella recommended if precipitation_chance_pct exceeds 40%. Jacket recommended if low_f is below 55°F.
Output schemas not formally documented in JSON Schema format. Docstrings describe return structure but LLMs cannot parse docstrings as machine-readable schemas. Returns are inferred from code (status/weather dict, status/forecast dict, etc.) but not declared in tool registration.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all five tools being READ_ONLY. Annotations enable LLMs to reason about safety and retry semantics without parsing descriptions.
Error responses lack recovery guidance. Errors return {status: 'error', message: '...'} but do not suggest next steps (e.g., 'Location not found. Try a different format: City, State or latitude,longitude'). LLM cannot self-correct without explicit guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 79 | 2026-07-28+ | v2 |
Location parameter accepts multiple formats (city, lat/lon) but no enum or regex pattern constraint in schema. Description lists examples but LLMs may hallucinate invalid formats. Should add JSON Schema pattern or oneOf constraint.
Days parameter in get_forecast has default=5 and description '1-16' but no JSON Schema min/max constraints. Unbounded integers let LLMs pass invalid values (0, 100, -1) that fail at runtime.