Swiss holiday calendar for AI agents — public holidays, school holidays (by Schulart) and long weekends for all 26 cantons
Strong foundation with 10 well-named tools following verb_noun convention (list_, get_, check_, compare_, find_, export_). All tools have descriptions (avg 95 chars, within 10-1024 range). Input schemas are comprehensive with regex patterns and type constraints. Tool annotations present (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). Key gaps: output schemas not explicitly documented in source; error handling guidance minimal; some parameter descriptions could be more prescriptive about constraints and dependencies.
Check if a specific date is a holiday in a canton
Compare school holidays across multiple cantons for a specific year
Export holidays as an iCalendar (.ics) file for a canton and year
Find a free window (no holidays) between two dates in a canton
Get long weekends (3+ consecutive days off) for a specific canton and year
Get public holidays for a specific canton and year
Get school holidays for a specific canton, year, and optional school type
Output schemas not documented in source code. While input schemas are comprehensive, return types for each tool are not explicitly declared, forcing LLMs to infer structure from tool names alone.
Error handling guidance absent. Tools return UpstreamError but no recovery hints provided. LLMs cannot determine if errors are retryable, user-fixable, or fatal.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | <=2025-11-25 | v2 |
Get the status and health of the holiday data sources
List all 26 Swiss cantons with their ISO codes and names
List all school types (Schulart) available for school holiday queries
Parameter constraint descriptions incomplete. Regex patterns (e.g., '^(?i:DE|FR|IT|EN)$' for language) are present in schema but not explained in parameter descriptions. LLMs cannot read JSON Schema patterns, they rely on description text.
Result limits not documented. Tools like list_cantons and compare_school_holidays may return large arrays, but no pagination or limit guidance is provided in descriptions.
get_status tool description is vague ('Get the status and health of the holiday data sources'). Does not explain what 'health' means, what fields are returned, or when to call it.