Strong tool definitions with clear, descriptive naming and detailed parameter schemas. All five tools have excellent descriptions (150-350 chars each) that explain purpose, use cases, and examples. Parameter schemas are well-defined with proper type constraints (enums, min/max bounds, descriptions). However, output schemas are not explicitly documented in the visible source code, they are inferred from return type annotations (Location, CurrentWeather, Forecast, AirQuality, list[Location]). Error handling guidance is absent; tools do not indicate what errors can occur or how to recover. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are declared in the FEATURES block as present, but not visible in the provided source snippet, this prevents full verification. The geocode tool file reference points to a Vue component (apps/location-picker/src/App.vue), which is suspicious for a tool definition location and suggests metadata inconsistency.
Search for locations by city name. Returns a list of matching locations with coordinates, sorted by population. Use this to find the exact coordinates of a city before querying weather data, or to disambiguate cities with common names (e.g., 'Springfield', 'London').
Get air quality and pollutant data for a location. Returns: - US EPA Air Quality Index (AQI) with category - European Air Quality Index with category - Pollutant concentrations (PM2.5, PM10, O3, NO2, SO2, CO) - Pollen levels (Europe only, if include_pollen=True) Examples: - get_air_quality(city="Beijing") - get_air_quality(city="Berlin", include_pollen=True) - get_air_quality(latitude=34.05, longitude=-118.24)
Get current weather conditions for a location. Provide either: - city (optionally with country for disambiguation), OR - latitude and longitude coordinates Examples: - get_current_weather(city="Berlin") - get_current_weather(city="London", country="UK") - get_current_weather(latitude=52.52, longitude=13.41) - get_current_weather(city="New York", units="imperial")
Get weather forecast for a location. Returns daily forecast by default. Set hourly=True for hourly breakdown. Examples: - get_forecast(city="Berlin", days=7) - get_forecast(city="Miami", units="imperial", days=5) - get_forecast(latitude=48.85, longitude=2.35, hourly=True)
Output schemas not explicitly documented. Tools declare return type annotations (Location, CurrentWeather, Forecast, AirQuality) but no structured output documentation visible in tool registration. Agents cannot reliably plan downstream tool calls without knowing response field names and types.
Error handling guidance absent. No tool description indicates what errors can occur (e.g., 'Location not found', 'API rate limit exceeded', 'Invalid coordinates'), how they map to recovery actions, or whether they are retryable. Agents have no guidance on failure modes.
pick_location output schema completely undocumented. Tool returns a 'result' from an interactive map selection, but the data structure (coordinates, location name, etc.) is not specified. Blocks downstream tool chaining.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 83 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 56 | - | v1 |
Open interactive map to pick a location. Returns an interactive map where the user can click to select a location or search for a city. The selected coordinates will be available for subsequent weather queries. Use this tool when: - The user wants to visually select a location on a map - The user is unsure of exact coordinates - You need to help the user choose from nearby locations
Tool annotation claims (readOnlyHint, destructiveHint, idempotentHint) declared in FEATURES but not visible in provided source code. Cannot verify actual annotations on tool definitions.
Geocode tool file reference points to Vue component (apps/location-picker/src/App.vue) rather than server.py. Metadata inconsistency suggests possible copy-paste error in tool registry.