Plan vacation days around public holidays, bridge days and school holidays in DE, AT and CH
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The six best non-overlapping vacation levers of a year for a region: classic bridge days (1 vacation day → 4 days off) and holiday clusters (e.g. 4 days → 10 days off), with booking dates, holidays used and factor. Includes a markdown table and the page URL.
Region as name, slug or ISO code, e.g. "Bayern", "bavaria", "DE-BY", "Tirol", "Zürich" or a country like "Deutschland" / "AT". Germany, Austria and Switzerland only.
Planning year, 2025 to 2030; defaults to the year people currently plan for
Language of names and explanations (German only)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
The six best non-overlapping vacation levers of a year for a region: classic bridge days (1 vacation day → 4 days off) and holiday clusters (e.g. 4 days → 10 days off), with booking dates, holidays used and factor. Includes a markdown table and the page URL.
| Argument | Type | Description |
|---|---|---|
| year | integer | Planning year, 2025 to 2030; defaults to the year people currently plan for |
| locale | string | Language of names and explanations (German only) |
| region* | string | Region as name, slug or ISO code, e.g. "Bayern", "bavaria", "DE-BY", "Tirol", "Zürich" or a country like "Deutschland" / "AT". Germany, Austria and Switzerland only. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"region"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
},
"locale": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "de",
"description": "Language of names and explanations (German only)"
},
"region": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
}
}
}How much of a region's school holidays two vacation accounts cover, and which weeks stay open. School holidays run to about 60 working days a year while a vacation account holds 25 to 30 days, so a care day always costs exactly one vacation day and a joint family holiday costs two and covers one. Answers "can we cover the school holidays" for parents.
| Argument | Type | Description |
|---|---|---|
| year | integer | Planning year, 2025 to 2030; defaults to the year people currently plan for |
| locale | string | Language of names and explanations (German only) |
| region* | string | Region as name, slug or ISO code, e.g. "Bayern", "bavaria", "DE-BY", "Tirol", "Zürich" or a country like "Deutschland" / "AT". Germany, Austria and Switzerland only. |
| jointDays | integer | Care days the family wants to spend together; they cost both parents a day and cover one. Default 10. |
| vacationDays | integer | Vacation days of the first parent; defaults to 30 in Germany, 25 in Austria and Switzerland |
| partnerVacationDays | integer | Vacation days of the second parent; omit to ask for one person alone |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"region"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
},
"locale": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "de",
"description": "Language of names and explanations (German only)"
},
"region": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
},
"jointDays": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Care days the family wants to spend together; they cost both parents a day and cover one. Default 10."
},
"vacationDays": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "Vacation days of the first parent; defaults to 30 in Germany, 25 in Austria and Switzerland"
},
"partnerVacationDays": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "Vacation days of the second parent; omit to ask for one person alone"
}
}
}Countries and their regions (German states, Austrian states, Swiss cantons, …) with codes, names and slugs accepted by the other tools.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Optimal vacation plan for a region and year: which days to book so that public holidays and weekends turn into the longest breaks. Returns the plan blocks (booking dates, days off, factor, holidays used), further opportunities, a markdown table and a link to the interactive plan on urlaub-smart.de. Cite the URL when answering.
| Argument | Type | Description |
|---|---|---|
| year | integer | Planning year, 2025 to 2030; defaults to the year people currently plan for |
| shift | object | Rolling shift rotation instead of Mon–Fri, e.g. 4 days on / 2 days off. Replaces the weekday assumption entirely. |
| locale | string | Language of names and explanations (German only) |
| region* | string | Region as name, slug or ISO code, e.g. "Bayern", "bavaria", "DE-BY", "Tirol", "Zürich" or a country like "Deutschland" / "AT". Germany, Austria and Switzerland only. |
| strategy | string | balanced = mix, long-weekends = max 2 vacation days per block, extended = blocks of 4+ days |
| fixedDates | array | ISO dates already booked as vacation; the plan works around them |
| vacationDays | integer | Vacation days available for the year; defaults to the usual account of the country: 30 in Germany, 25 in Austria and Switzerland |
All public holidays (with weekday, national/regional scope, weekend flag) and school holiday periods for a region and year. Source: OpenHolidaysAPI.
| Argument | Type | Description |
|---|---|---|
| year | integer | Planning year, 2025 to 2030; defaults to the year people currently plan for |
| locale | string | Language of names and explanations (German only) |
| region* | string | Region as name, slug or ISO code, e.g. "Bayern", "bavaria", "DE-BY", "Tirol", "Zürich" or a country like "Deutschland" / "AT". Germany, Austria and Switzerland only. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"region"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
},
"locale": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "de",
"description": "Language of names and explanations (German only)"
},
"region": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
}
}
}| carryoverDays |
| integer |
| Part of vacationDays that is carry-over from last year and expires on March 31; spent first on periods before the deadline |
| closuresOnTop | boolean | Set true only if the employer gives the closures on top of the vacation days; then they are treated like public holidays |
| schoolHolidays | string | any = ignore, avoid = no overlap with school holidays, prefer = book only inside school holidays |
| companyClosures | array | Company closures (Betriebsferien) as inclusive ISO date ranges. By default their working days come off vacationDays, as Betriebsferien are normally scheduled annual leave |
| companyFreeDates | array | Working days the employer gives off without a vacation day, ISO dates (e.g. 2027-12-24, 2027-12-31); treated like public holidays |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"region"
],
"properties": {
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
},
"shift": {
"type": "object",
"required": [
"onDays",
"offDays",
"firstWorkingDay"
],
"properties": {
"onDays": {
"type": "integer",
"maximum": 14,
"minimum": 1
},
"offDays": {
"type": "integer",
"maximum": 14,
"minimum": 1
},
"firstWorkingDay": {
"type": "string",
"maxLength": 10,
"description": "ISO date of the first working day of a cycle"
}
},
"description": "Rolling shift rotation instead of Mon–Fri, e.g. 4 days on / 2 days off. Replaces the weekday assumption entirely."
},
"locale": {
"enum": [
"de",
"en"
],
"type": "string",
"default": "de",
"description": "Language of names and explanations (German only)"
},
"region": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
},
"strategy": {
"enum": [
"balanced",
"long-weekends",
"extended"
],
"type": "string",
"default": "balanced",
"description": "balanced = mix, long-weekends = max 2 vacation days per block, extended = blocks of 4+ days"
},
"fixedDates": {
"type": "array",
"items": {
"type": "string",
"maxLength": 10
},
"maxItems": 60,
"description": "ISO dates already booked as vacation; the plan works around them"
},
"vacationDays": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "Vacation days available for the year; defaults to the usual account of the country: 30 in Germany, 25 in Austria and Switzerland"
},
"carryoverDays": {
"type": "integer",
"maximum": 60,
"minimum": 0,
"description": "Part of vacationDays that is carry-over from last year and expires on March 31; spent first on periods before the deadline"
},
"closuresOnTop": {
"type": "boolean",
"description": "Set true only if the employer gives the closures on top of the vacation days; then they are treated like public holidays"
},
"schoolHolidays": {
"enum": [
"any",
"avoid",
"prefer"
],
"type": "string",
"default": "any",
"description": "any = ignore, avoid = no overlap with school holidays, prefer = book only inside school holidays"
},
"companyClosures": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"maxLength": 10
},
"from": {
"type": "string",
"maxLength": 10
}
}
},
"maxItems": 12,
"description": "Company closures (Betriebsferien) as inclusive ISO date ranges. By default their working days come off vacationDays, as Betriebsferien are normally scheduled annual leave"
},
"companyFreeDates": {
"type": "array",
"items": {
"type": "string",
"maxLength": 10
},
"maxItems": 60,
"description": "Working days the employer gives off without a vacation day, ISO dates (e.g. 2027-12-24, 2027-12-31); treated like public holidays"
}
}
}