Skip to main content
Glama

Public holidays

get_public_holidays
Read-onlyIdempotent

National public holidays between two dates: data.holidays[] {date, name} by date, plus one citation per year in data.facts[]. Use it to check travel dates for closures and crowds; get_country_facts has this year's list with other facts, get_trip_brief covers a whole trip. Data spans the current year and the next two (outside: empty list plus coverage_note); no regional holidays. Each fact is cited: sources[] (url, license), last_verified, confidence. Parameters: from and to are inclusive: pass the travel dates, or YYYY-01-01 to YYYY-12-31 for a year. Over two years, or to before from, is an error. Example: {"country":"JP","from":"2026-12-28","to":"2027-01-05"}. Read-only; keyless (free key or x402 lifts limits: https://citedtravel.com/pricing/); errors RFC 9457.

Input Schema

NameRequiredDescriptionDefault
toYesLast day of the range (inclusive), on or after from and at most two years later. Calendar date, YYYY-MM-DD.
fromYesFirst day of the range (inclusive). Calendar date, YYYY-MM-DD.
langNoLanguage for localized names (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; aliases such as zh, zh-CN, zh-TW and zh-HK are mapped, and anything else falls back to English. Only names are localized; verbatim official quotes stay in their original language.en
countryYesCountry as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country whose national public holidays to list as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."New value: +"Country as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."
  2. Changed1 schema field changed
    • changedInput schema / properties / country / description
      Previous value: -"Country as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."New value: +"Country whose national public holidays to list as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."
  3. Changed13 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"Country as ISO 3166-1 alpha-2 or alpha-3 code, e.g. JP or JPN. Use resolve_country for names."New value: +"Country as an ISO 3166-1 alpha-2 or alpha-3 code, case-insensitive (e.g. JP, jp or JPN). Names are not accepted: resolve them with resolve_country first."
    • addedInput schema / properties / country / examples
      Added value: +[
      +  "JP",
      +  "GB",
      +  "USA"
      +]
    • addedInput schema / properties / country / pattern
      Added value: +"^[A-Za-z]{2,3}$"
    • changedInput schema / properties / from / description
      Previous value: -"Start date, YYYY-MM-DD"New value: +"First day of the range (inclusive). Calendar date, YYYY-MM-DD."
    • addedInput schema / properties / from / examples
      Added value: +[
      +  "2026-12-20"
      +]
    • addedInput schema / properties / from / format
      Added value: +"date"
    • addedInput schema / properties / lang / default
      Added value: +"en"
    • changedInput schema / properties / lang / description
      Previous value: -"Response language (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; falls back to English. Verbatim official quotes always stay in their original language."New value: +"Language for localized names (BCP 47). Supported: en, ja, zh-Hans, zh-Hant; aliases such as zh, zh-CN, zh-TW and zh-HK are mapped, and anything else falls back to English. Only names are localized; verbatim official quotes stay in their original language."
    • addedInput schema / properties / lang / examples
      Added value: +[
      +  "en",
      +  "ja",
      +  "zh-Hans",
      +  "zh-Hant"
      +]
    • changedInput schema / properties / to / description
      Previous value: -"End date, YYYY-MM-DD"New value: +"Last day of the range (inclusive), on or after from and at most two years later. Calendar date, YYYY-MM-DD."
    • addedInput schema / properties / to / examples
      Added value: +[
      +  "2027-01-10"
      +]
    • addedInput schema / properties / to / format
      Added value: +"date"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "attribution": {
      +          "description": "Attribution strings to show to users when you display these facts.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "category": {
      +          "const": "holidays"
      +        },
      +        "country": {
      +          "description": "Country (ISO codes and name, localized to lang).",
      +          "properties": {
      +            "iso2": {
      +              "type": "string"
      +            },
      +            "iso3": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "name_lang": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "iso2"
      +          ],
      +          "type": "object"
      +        },
      +        "data": {
      +          "properties": {
      +            "coverage_note": {
      +              "description": "Present when there is no data for the range.",
      +              "type": "string"
      +            },
      +            "facts": {
      +              "description": "One cited fact per calendar year covered (value replaced by holiday_count).",
      +              "items": {
      +                "properties": {
      +                  "attribution": {
      +                    "description": "Attribution strings required by the source licenses.",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "confidence": {
      +                    "description": "Deterministic confidence: score from 0 to 1, a level, and the reasons (source kind, cross-checks, staleness...).",
      +                    "properties": {
      +                      "level": {
      +                        "examples": [
      +                          "high",
      +                          "medium",
      +                          "low"
      +                        ],
      +                        "type": "string"
      +                      },
      +                      "reasons": {
      +                        "description": "Why the score is what it is.",
      +                        "items": {
      +                          "type": "string"
      +                        },
      +                        "type": "array"
      +                      },
      +                      "score": {
      +                        "maximum": 1,
      +                        "minimum": 0,
      +                        "type": "number"
      +                      }
      +                    },
      +                    "required": [
      +                      "score",
      +                      "level"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "cross_checks": {
      +                    "description": "Independent datasets the value was checked against, with the result.",
      +                    "type": "array"
      +                  },
      +                  "holiday_count": {
      +                    "type": "integer"
      +                  },
      +                  "id": {
      +                    "type": "string"
      +                  },
      +                  "last_verified": {
      +                    "description": "Date the value was last verified (YYYY-MM-DD).",
      +                    "type": "string"
      +                  },
      +                  "next_review_due": {
      +                    "description": "Date of the next scheduled review (YYYY-MM-DD).",
      +                    "type": "string"
      +                  },
      +                  "sources": {
      +                    "description": "Cited sources for this fact.",
      +                    "items": {
      +                      "description": "One cited source.",
      +                      "properties": {
      +                        "license": {
      +                          "description": "License of the source, e.g. CC0-1.0, OGL-UK-3.0, MIT.",
      +                          "type": "string"
      +                        },
      +                        "publisher": {
      +                          "type": "string"
      +                        },
      +                        "quote": {
      +                          "description": "Verbatim text from the source, when quoted.",
      +                          "type": "string"
      +                        },
      +                        "retrieved_at": {
      +                          "description": "When the source was fetched (ISO 8601).",
      +                          "type": "string"
      +                        },
      +                        "source_id": {
      +                          "type": "string"
      +                        },
      +                        "source_value": {
      +                          "description": "The raw value as given by the source, when not quoted."
      +                        },
      +                        "url": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "publisher",
      +                        "url",
      +                        "license"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "year": {
      +                    "type": "integer"
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "sources",
      +                  "last_verified",
      +                  "confidence"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "holidays": {
      +              "description": "Holidays in the range, sorted by date.",
      +              "items": {
      +                "properties": {
      +                  "date": {
      +                    "type": "string"
      +                  },
      +                  "fact_id": {
      +                    "description": "The yearly fact (in facts[]) that lists this holiday.",
      +                    "type": "string"
      +                  },
      +                  "name": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "date",
      +                  "name"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "holidays",
      +            "facts"
      +          ],
      +          "type": "object"
      +        },
      +        "dataset_version": {
      +          "description": "Version of the dataset that answered.",
      +          "type": "string"
      +        },
      +        "disclaimer": {
      +          "description": "Informational-use disclaimer.",
      +          "type": "string"
      +        },
      +        "range": {
      +          "properties": {
      +            "from": {
      +              "type": "string"
      +            },
      +            "to": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "from",
      +            "to"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "country",
      +        "range",
      +        "data",
      +        "attribution"
      +      ],
      +      "title": "Result",
      +      "type": "object"
      +    },
      +    {
      +      "description": "Only on error results (isError: true): RFC 9457 problem, e.g. unknown country, no data, key required, rate limited, sanctions block.",
      +      "properties": {
      +        "detail": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": "integer"
      +        },
      +        "title": {
      +          "type": "string"
      +        },
      +        "type": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "title",
      +        "status"
      +      ],
      +      "title": "Error (problem details)",
      +      "type": "object"
      +    },
      +    {
      +      "description": "Only on error results (isError: true): x402 v2 payment requirements. Pay and retry with _meta[\"x402/payment\"].",
      +      "properties": {
      +        "accepts": {
      +          "type": "array"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "extensions": {
      +          "type": "object"
      +        },
      +        "resource": {
      +          "type": "object"
      +        },
      +        "x402Version": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "x402Version",
      +        "accepts"
      +      ],
      +      "title": "Error (x402 payment request)",
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: coverage window (current year + next two), out-of-range behavior, absence of regional holidays, explicit error conditions (span over two years, to before from), citation provenance fields (sources[], last_verified, confidence), keyless access with x402 limit lifts, and RFC 9457 error format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool returns and why to use it, then packs constraints, coverage limits, and access notes into dense but well-ordered sentences. Slightly crowded, but essentially every clause carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still outlines the response shape (data.holidays[], data.facts[] citations) and covers coverage boundaries, error cases, and auth/limits. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents each param, but the description adds operational meaning: inclusiveness of from/to, the practical strategy of passing travel dates or a full YYYY-01-01–YYYY-12-31 year, and a concrete worked example. More than baseline, though the schema carries most weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('National public holidays between two dates') and immediately names the sibling tools it overlaps with (get_country_facts, get_trip_brief), so an agent can distinguish it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use this to check travel dates for closures/crowds, get_country_facts for this year's list plus other facts, get_trip_brief for a whole trip. It also states when-not conditions (outside coverage returns an empty list plus coverage_note; no regional holidays).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources