Cultural events & activities in Madrid, Spain for the next ~100 days, from the city's open-data portal (datos.madrid.es). Keyless JSON feed (~870 events), filtered/normalized in-pack by keyword, free admission and date window. Rich per-event data: venue, address, geo, audience, price. Content is in Spanish.
Single tool 'events' has a well-structured schema with 6 parameters, all typed and described. Tool description is clear and specific (145 chars), explaining what it does, the data source, and content language. However, output schema is not documented, the response structure (city, country, source, date_from, date_to, total_matching, count, events array with nested venue object) is inferred from code, not declared in the tool definition. Parameter descriptions are good but lack explicit constraints (e.g., 'limit: 1-50' is in description but not as JSON Schema min/max). No error handling guidance for common failures (network timeout, invalid date format, API unavailability). Tool name 'events' is generic and lacks action verb, 'search_events' or 'list_events' would be clearer.
Find cultural events & activities in Madrid, Spain (next ~100 days). Filter by keyword, free admission, and date window. Returns events with venue, address, geo, audience and price. Content is in Spanish.
Tool name lacks action verb. 'events' is a noun; should be 'search_events' or 'list_events' to signal the action to LLMs.
Output schema not documented. Response structure (city, country, source, date_from, date_to, total_matching, count, events array with venue object) is inferred from code, not declared. LLMs cannot plan downstream operations without knowing return fields.
Numeric constraints not expressed in JSON Schema. 'limit' description says '1-50' but schema lacks minimum/maximum properties. LLMs may pass invalid values; validation happens at runtime.
No error handling guidance. Tool throws generic errors ('Madrid events: HTTP 500') without recovery hints. LLM cannot determine if error is retryable or requires user intervention.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Date parameter format not validated in schema. 'from' and 'to' accept strings but lack format constraint (e.g., 'date-time' or regex pattern). Invalid dates like '2026-13-45' pass schema validation and fail at runtime.