Koskamo

Leave Hacker MCP

An MCP server that helps users plan annual leave around bank holidays to maximize time off, find cheap flights for those breaks, and generate leave request messages. It provides tools to query bank holidays, calculate optimal booking days, plan entire leave years based on allowances, and retrieve school holiday dates.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Leave Hacker MCP logo, by Leave HackerVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Leave Hacker
MCP endpoint (Streamable HTTP)
https://leavehacker.app/mcp
Vendor documentation

What you can do with it

  • Calculate which days to book around bank holidays to maximize time off
  • Plan a full annual leave year based on allowance and school holidays
  • Find cheap return flights for specific holiday breaks
  • Generate a polite leave request message for a manager

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
leave-hacker 1.0.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
9 advertised
Resource templates
1 advertised
Prompts
2 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Leave Hacker (https://leavehacker.app) works out which days of annual leave to book around public holidays and weekends to get the most days off in a row, plans a whole leave year, and finds cheap flights that fit a break. It's the same planning logic as the Leave Hacker iPhone app. UK bank holidays come from gov.uk (Open Government Licence v3.0); Ireland's, each Australian state's and the US federal holidays from Leave Hacker's checked copy of the official lists (2026–2028); other countries' public holidays from Nager.Date. How to use the tools well: - Ask or infer the person's region first. In the UK there are three sets of bank holidays: england-and-wales, scotland and northern-ireland. In Australia public holidays depend on the state or territory: pass AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT or AU-NT. Ireland is IE. Elsewhere, pass a two-letter country code (US, DE...). - In the US, private employers choose which holidays they give: ask, and pass us_holidays (common = the usual six, federal = all 11, or custom with us_holiday_ids). Say "PTO" for leave there. In Ireland and Australia full-time workers get at least 20 days (four weeks) on top of public holidays. - In Ireland a public holiday at a weekend isn't moved. If the person gets the next working day off instead (ask; many employers give it), pass next_working_day_off: true. - "Which days should I book around Easter / Christmas / the May bank holiday?" → best_days_to_book (use the holiday filter). It lists "book N days, get M off" options per holiday. - "Plan my year" / "I have 28 days of leave" → plan_leave_year. Ask for their allowance, days already used, when their leave year starts (often January or April) and whether school holidays matter (school: parent or staff). Use year: next for next leave year. - "Find flights for that break" → find_trips with a departure airport (MAN, LGW, LON...) and the break's first and last day. Fares are cached and may change; when the result says sample, they are example prices only. The links are affiliate links: say that Leave Hacker may earn a commission. - "How do I ask my manager?" → leave_request_message with the dates to book. - get_bank_holidays and get_school_holidays list dates. School holidays are typical dates only: councils set their own, so tell people to check. Always show dates with the weekday (the tools give labels like "Fri 26 Mar 2027"), say which region the answer is for, and credit gov.uk for UK bank holidays. Breaks count every day off from first to last, weekends included. The tools only need regions, dates, numbers and airport codes: never send names, employers or calendar details. Nothing is stored.

Tools

6 advertised

get_bank_holidays — Bank holidays
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the bank holidays (UK, from gov.uk) or public holidays (other countries, from Nager.Date) for a region in a year or between two dates, with weekdays and substitute days. Use it for questions like "When are the bank holidays in Scotland in 2027?". Ranges can be up to three years.

get_bank_holidays input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of the date range, inclusive (yyyy-MM-dd)."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of a date range, instead of year (yyyy-MM-dd)."
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2019,
      "description": "Calendar year, e.g. 2027. Defaults to this year."
    },
    "region": {
      "type": "string",
      "default": "england-and-wales",
      "maxLength": 40,
      "minLength": 2,
      "description": "Where the person works: england-and-wales, scotland or northern-ireland for UK bank holidays (from gov.uk); IE for Ireland; an Australian state or territory as AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT or AU-NT (their public holidays differ a lot); US for US federal holidays; or a two-letter ISO 3166-1 country code such as DE or FR for other countries' public holidays (from Nager.Date). Defaults to england-and-wales."
    },
    "next_working_day_off": {
      "type": "boolean",
      "description": "Ireland only: true if the person's employer gives the next working day off when a public holiday falls on a Saturday or Sunday (the civil service and banks do; Irish law doesn't require it, so the employer may give a day within a month, an extra day's leave or a day's pay instead). Adds those days, e.g. Mon 27 and Tue 28 Dec 2027. Default false."
    }
  }
}
get_bank_holidays output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region",
    "regionName",
    "from",
    "to",
    "count",
    "holidays",
    "notes",
    "source",
    "sourceUrl",
    "licence",
    "attribution"
  ],
  "properties": {
    "to": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "count": {
      "type": "number"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "region": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "licence": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "name",
            "url"
          ],
          "properties": {
            "url": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "holidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "label",
          "name",
          "substitute"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "substitute": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "sourceUrl": {
      "type": "string"
    },
    "regionName": {
      "type": "string"
    },
    "attribution": {
      "type": "string",
      "description": "Credit to show with the dates"
    }
  },
  "additionalProperties": false
}
get_bank_holidays annotations
{
  "title": "Bank holidays",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
best_days_to_book — Best days to book
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find the days of annual leave to book around each public holiday (or cluster, such as Christmas and New Year) to get the most days off in a row: "book 4 days, get 10 off" options, cheapest first, with the exact dates. Use for "Which days should I book around Easter 2027 in Scotland?". Filter by holiday name (Easter, Christmas, Early May, Spring, Summer, St Patrick...). Past days are skipped.

best_days_to_book input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of the date range, inclusive (yyyy-MM-dd)."
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of a date range, instead of year (yyyy-MM-dd)."
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2019,
      "description": "Calendar year, e.g. 2027. Defaults to this year."
    },
    "region": {
      "type": "string",
      "default": "england-and-wales",
      "maxLength": 40,
      "minLength": 2,
      "description": "Where the person works: england-and-wales, scotland or northern-ireland for UK bank holidays (from gov.uk); IE for Ireland; an Australian state or territory as AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT or AU-NT (their public holidays differ a lot); US for US federal holidays; or a two-letter ISO 3166-1 country code such as DE or FR for other countries' public holidays (from Nager.Date). Defaults to england-and-wales."
    },
    "holiday": {
      "type": "string",
      "maxLength": 60,
      "description": "Only holidays whose name contains this, e.g. \"Easter\", \"Christmas\", \"May\"."
    },
    "workdays": {
      "type": "array",
      "items": {
        "enum": [
          "mon",
          "tue",
          "wed",
          "thu",
          "fri",
          "sat",
          "sun"
        ],
        "type": "string"
      },
      "maxItems": 7,
      "minItems": 1,
      "description": "Days the person works, e.g. [\"mon\",\"tue\",\"wed\",\"thu\"] for a four-day week. Defaults to Monday to Friday."
    },
    "us_holidays": {
      "enum": [
        "common",
        "federal",
        "custom"
      ],
      "type": "string",
      "default": "federal",
      "description": "US only: which holidays the person's employer gives. Private employers choose: common = the usual six (New Year's Day, Memorial Day, Independence Day, Labor Day, Thanksgiving, Christmas); federal = all 11 federal holidays; custom = the ones in us_holiday_ids. Default here: federal, to show every option."
    },
    "max_leave_days": {
      "type": "integer",
      "default": 9,
      "maximum": 15,
      "minimum": 1,
      "description": "Most days of leave for one break. Default 9."
    },
    "us_holiday_ids": {
      "type": "array",
      "items": {
        "enum": [
          "new-years-day",
          "mlk-day",
          "washingtons-birthday",
          "memorial-day",
          "juneteenth",
          "independence-day",
          "labor-day",
          "columbus-day",
          "veterans-day",
          "thanksgiving",
          "day-after-thanksgiving",
          "christmas-day"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "description": "US only, with us_holidays: custom. Any of: new-years-day, mlk-day, washingtons-birthday, memorial-day, juneteenth, independence-day, labor-day, columbus-day, veterans-day, thanksgiving, day-after-thanksgiving, christmas-day (day-after-thanksgiving isn't federal, but many employers give it)."
    },
    "next_working_day_off": {
      "type": "boolean",
      "description": "Ireland only: true if the person's employer gives the next working day off when a public holiday falls on a Saturday or Sunday (the civil service and banks do; Irish law doesn't require it, so the employer may give a day within a month, an extra day's leave or a day's pay instead). Adds those days, e.g. Mon 27 and Tue 28 Dec 2027. Default false."
    }
  }
}
best_days_to_book output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region",
    "regionName",
    "from",
    "to",
    "maxLeaveDays",
    "workdays",
    "opportunities",
    "assumptions",
    "notes",
    "source",
    "sourceUrl",
    "licence",
    "attribution"
  ],
  "properties": {
    "to": {
      "type": "string"
    },
    "from": {
      "type": "string"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "region": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "licence": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "name",
            "url"
          ],
          "properties": {
            "url": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "workdays": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sourceUrl": {
      "type": "string"
    },
    "regionName": {
      "type": "string"
    },
    "assumptions": {
      "type": "string"
    },
    "attribution": {
      "type": "string",
      "description": "Credit to show with the dates"
    },
    "maxLeaveDays": {
      "type": "number"
    },
    "opportunities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "holidays",
          "best",
          "options"
        ],
        "properties": {
          "best": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "start",
                  "end",
                  "daysOff",
                  "leaveDays",
                  "datesToBook",
                  "holidays"
                ],
                "properties": {
                  "end": {
                    "type": "object",
                    "required": [
                      "date",
                      "label"
                    ],
                    "properties": {
                      "date": {
                        "type": "string",
                        "description": "yyyy-MM-dd"
                      },
                      "label": {
                        "type": "string",
                        "description": "e.g. \"Fri 26 Mar 2027\""
                      }
                    },
                    "additionalProperties": false
                  },
                  "start": {
                    "type": "object",
                    "required": [
                      "date",
                      "label"
                    ],
                    "properties": {
                      "date": {
                        "type": "string",
                        "description": "yyyy-MM-dd"
                      },
                      "label": {
                        "type": "string",
                        "description": "e.g. \"Fri 26 Mar 2027\""
                      }
                    },
                    "additionalProperties": false
                  },
                  "daysOff": {
                    "type": "number",
                    "description": "Days off in a row, weekends and holidays included"
                  },
                  "holidays": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "date",
                        "label",
                        "name"
                      ],
                      "properties": {
                        "date": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "label": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "leaveDays": {
                    "type": "number",
                    "description": "Days of leave to book"
                  },
                  "datesToBook": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "required": [
                        "date",
                        "label"
                      ],
                      "properties": {
                        "date": {
                          "type": "string",
                          "description": "yyyy-MM-dd"
                        },
                        "label": {
                          "type": "string",
                          "description": "e.g. \"Fri 26 Mar 2027\""
                        }
                      },
                      "additionalProperties": false
                    }
                  },
                  "daysOffPerLeaveDay": {
                    "type": "number",
                    "description": "Left out when the break needs no leave"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "options": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "start",
                "end",
                "daysOff",
                "leaveDays",
                "datesToBook",
                "holidays"
              ],
              "properties": {
                "end": {
                  "type": "object",
                  "required": [
                    "date",
                    "label"
                  ],
                  "properties": {
                    "date": {
                      "type": "string",
                      "description": "yyyy-MM-dd"
                    },
                    "label": {
                      "type": "string",
                      "description": "e.g. \"Fri 26 Mar 2027\""
                    }
                  },
                  "additionalProperties": false
                },
                "start": {
                  "type": "object",
                  "required": [
                    "date",
                    "label"
                  ],
                  "properties": {
                    "date": {
                      "type": "string",
                      "description": "yyyy-MM-dd"
                    },
                    "label": {
                      "type": "string",
                      "description": "e.g. \"Fri 26 Mar 2027\""
                    }
                  },
                  "additionalProperties": false
                },
                "daysOff": {
                  "type": "number",
                  "description": "Days off in a row, weekends and holidays included"
                },
                "holidays": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "date",
                      "label",
                      "name"
                    ],
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "leaveDays": {
                  "type": "number",
                  "description": "Days of leave to book"
                },
                "datesToBook": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "date",
                      "label"
                    ],
                    "properties": {
                      "date": {
                        "type": "string",
                        "description": "yyyy-MM-dd"
                      },
                      "label": {
                        "type": "string",
                        "description": "e.g. \"Fri 26 Mar 2027\""
                      }
                    },
                    "additionalProperties": false
                  }
                },
                "daysOffPerLeaveDay": {
                  "type": "number",
                  "description": "Left out when the break needs no leave"
                }
              },
              "additionalProperties": false
            }
          },
          "holidays": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "date",
                "label",
                "name"
              ],
              "properties": {
                "date": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
best_days_to_book annotations
{
  "title": "Best days to book",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_leave_year — Plan a leave year
Advertised by the server during the last successful anonymous check.
Advertised read-only

Plan a whole leave year: the set of breaks that turns the person's annual leave allowance into the most days off, using every bank holiday, with the dates to book for each break and the totals. Handles any leave year start date, part-time working days, three plan styles and school holidays (parents: breaks only in school holidays; school staff: the holidays themselves). Use for "Plan my 28 days of leave for 2027, I have kids at school".

plan_leave_year input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "year": {
      "enum": [
        "current",
        "next"
      ],
      "type": "string",
      "description": "Which leave year: current or next. Defaults to current, or next when under 90 days are left."
    },
    "style": {
      "enum": [
        "mix",
        "longWeekends",
        "bigTrips"
      ],
      "type": "string",
      "default": "mix",
      "description": "mix: two proper holidays of 9+ days, the rest long weekends (default). longWeekends: as many 3–5 day weekends as possible. bigTrips: fewer trips of 9+ days."
    },
    "region": {
      "type": "string",
      "default": "england-and-wales",
      "maxLength": 40,
      "minLength": 2,
      "description": "Where the person works: england-and-wales, scotland or northern-ireland for UK bank holidays (from gov.uk); IE for Ireland; an Australian state or territory as AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT or AU-NT (their public holidays differ a lot); US for US federal holidays; or a two-letter ISO 3166-1 country code such as DE or FR for other countries' public holidays (from Nager.Date). Defaults to england-and-wales."
    },
    "school": {
      "enum": [
        "none",
        "parent",
        "staff"
      ],
      "type": "string",
      "default": "none",
      "description": "none (default); parent: children at school, so breaks only in typical school holidays; staff: works in a school, so the school holidays are the breaks. UK only."
    },
    "workdays": {
      "type": "array",
      "items": {
        "enum": [
          "mon",
          "tue",
          "wed",
          "thu",
          "fri",
          "sat",
          "sun"
        ],
        "type": "string"
      },
      "maxItems": 7,
      "minItems": 1,
      "description": "Days the person works, e.g. [\"mon\",\"tue\",\"wed\",\"thu\"] for a four-day week. Defaults to Monday to Friday."
    },
    "allowance": {
      "type": "integer",
      "maximum": 60,
      "minimum": 0,
      "description": "Days of annual leave (PTO in the US) a year, not counting public holidays. Defaults to the usual for the region: 25 in the UK, 20 in Ireland and Australia (the legal minimum for full-time work), 15 in the US."
    },
    "days_used": {
      "type": "integer",
      "default": 0,
      "maximum": 60,
      "minimum": 0,
      "description": "Days of this leave year's allowance already taken or booked. Default 0."
    },
    "us_holidays": {
      "enum": [
        "common",
        "federal",
        "custom"
      ],
      "type": "string",
      "default": "common",
      "description": "US only: which holidays the person's employer gives. Private employers choose: common = the usual six (New Year's Day, Memorial Day, Independence Day, Labor Day, Thanksgiving, Christmas); federal = all 11 federal holidays; custom = the ones in us_holiday_ids. Default here: common."
    },
    "us_holiday_ids": {
      "type": "array",
      "items": {
        "enum": [
          "new-years-day",
          "mlk-day",
          "washingtons-birthday",
          "memorial-day",
          "juneteenth",
          "independence-day",
          "labor-day",
          "columbus-day",
          "veterans-day",
          "thanksgiving",
          "day-after-thanksgiving",
          "christmas-day"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "description": "US only, with us_holidays: custom. Any of: new-years-day, mlk-day, washingtons-birthday, memorial-day, juneteenth, independence-day, labor-day, columbus-day, veterans-day, thanksgiving, day-after-thanksgiving, christmas-day (day-after-thanksgiving isn't federal, but many employers give it)."
    },
    "leave_year_starting": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2019,
      "description": "Instead of year: the calendar year the leave year starts in, e.g. 2027 for January–December 2027 or April 2027–March 2028."
    },
    "leave_year_start_day": {
      "type": "integer",
      "default": 1,
      "maximum": 31,
      "minimum": 1,
      "description": "Day of the month the leave year starts. Default 1."
    },
    "next_working_day_off": {
      "type": "boolean",
      "description": "Ireland only: true if the person's employer gives the next working day off when a public holiday falls on a Saturday or Sunday (the civil service and banks do; Irish law doesn't require it, so the employer may give a day within a month, an extra day's leave or a day's pay instead). Adds those days, e.g. Mon 27 and Tue 28 Dec 2027. Default false."
    },
    "leave_year_start_month": {
      "type": "integer",
      "default": 1,
      "maximum": 12,
      "minimum": 1,
      "description": "Month the leave year starts, 1–12 (1 = January, 4 = April). Default 1."
    }
  }
}
plan_leave_year output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region",
    "regionName",
    "leaveYear",
    "plannedFrom",
    "allowance",
    "daysUsed",
    "budget",
    "style",
    "school",
    "workdays",
    "totals",
    "breaks",
    "bankHolidays",
    "schoolHolidays",
    "assumptions",
    "notes",
    "source",
    "sourceUrl",
    "licence",
    "attribution"
  ],
  "properties": {
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "style": {
      "type": "string"
    },
    "breaks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "start",
          "end",
          "daysOff",
          "leaveDays",
          "datesToBook",
          "holidays"
        ],
        "properties": {
          "end": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          },
          "start": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          },
          "daysOff": {
            "type": "number",
            "description": "Days off in a row, weekends and holidays included"
          },
          "holidays": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "date",
                "label",
                "name"
              ],
              "properties": {
                "date": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "leaveDays": {
            "type": "number",
            "description": "Days of leave to book"
          },
          "datesToBook": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "date",
                "label"
              ],
              "properties": {
                "date": {
                  "type": "string",
                  "description": "yyyy-MM-dd"
                },
                "label": {
                  "type": "string",
                  "description": "e.g. \"Fri 26 Mar 2027\""
                }
              },
              "additionalProperties": false
            }
          },
          "daysOffPerLeaveDay": {
            "type": "number",
            "description": "Left out when the break needs no leave"
          }
        },
        "additionalProperties": false
      }
    },
    "budget": {
      "type": "number"
    },
    "region": {
      "type": "string"
    },
    "school": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "totals": {
      "type": "object",
      "required": [
        "breaks",
        "daysOff",
        "leaveUsed",
        "leftover"
      ],
      "properties": {
        "breaks": {
          "type": "number"
        },
        "daysOff": {
          "type": "number"
        },
        "leftover": {
          "type": "number"
        },
        "leaveUsed": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "licence": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "name",
            "url"
          ],
          "properties": {
            "url": {
              "type": "string"
            },
            "name": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "daysUsed": {
      "type": "number"
    },
    "workdays": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "allowance": {
      "type": "number"
    },
    "leaveYear": {
      "type": "object",
      "required": [
        "start",
        "end"
      ],
      "properties": {
        "end": {
          "type": "object",
          "required": [
            "date",
            "label"
          ],
          "properties": {
            "date": {
              "type": "string",
              "description": "yyyy-MM-dd"
            },
            "label": {
              "type": "string",
              "description": "e.g. \"Fri 26 Mar 2027\""
            }
          },
          "additionalProperties": false
        },
        "start": {
          "type": "object",
          "required": [
            "date",
            "label"
          ],
          "properties": {
            "date": {
              "type": "string",
              "description": "yyyy-MM-dd"
            },
            "label": {
              "type": "string",
              "description": "e.g. \"Fri 26 Mar 2027\""
            }
          },
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "sourceUrl": {
      "type": "string"
    },
    "regionName": {
      "type": "string"
    },
    "assumptions": {
      "type": "string"
    },
    "attribution": {
      "type": "string",
      "description": "Credit to show with the dates"
    },
    "plannedFrom": {
      "type": "string"
    },
    "bankHolidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "label",
          "name"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "label": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "schoolHolidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "start",
          "end",
          "typical"
        ],
        "properties": {
          "end": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          },
          "name": {
            "type": "string"
          },
          "start": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          },
          "typical": {
            "type": "boolean",
            "const": true
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
plan_leave_year annotations
{
  "title": "Plan a leave year",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_school_holidays — Typical school holidays
Advertised by the server during the last successful anonymous check.
Advertised read-only

Typical state-school holiday dates for a UK nation in a year (half terms, Easter, summer, Christmas). These are the usual pattern, NOT official dates: councils and schools set their own, so always tell the person to check their school's term dates.

get_school_holidays input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 2019,
      "description": "Calendar year, e.g. 2027. Defaults to this year."
    },
    "region": {
      "enum": [
        "england-and-wales",
        "scotland",
        "northern-ireland"
      ],
      "type": "string",
      "default": "england-and-wales",
      "description": "UK nation: england-and-wales, scotland or northern-ireland."
    }
  }
}
get_school_holidays output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region",
    "regionName",
    "year",
    "typical",
    "schoolHolidays",
    "caveat"
  ],
  "properties": {
    "year": {
      "type": "number"
    },
    "caveat": {
      "type": "string"
    },
    "region": {
      "type": "string"
    },
    "typical": {
      "type": "boolean",
      "const": true
    },
    "regionName": {
      "type": "string"
    },
    "schoolHolidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "start",
          "end",
          "days"
        ],
        "properties": {
          "end": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          },
          "days": {
            "type": "number"
          },
          "name": {
            "type": "string"
          },
          "start": {
            "type": "object",
            "required": [
              "date",
              "label"
            ],
            "properties": {
              "date": {
                "type": "string",
                "description": "yyyy-MM-dd"
              },
              "label": {
                "type": "string",
                "description": "e.g. \"Fri 26 Mar 2027\""
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
get_school_holidays annotations
{
  "title": "Typical school holidays",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_trips — Find cheap flights for a break
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Find the cheapest return flights from a departure airport that fit a break, one per destination, cheapest first, with booking links. Prices are cached airline fares in the departure country's currency (GBP, EUR, AUD or USD) and can change; if the result says sample, they are example prices only. Links go through leavehacker.app/go and are affiliate links: Leave Hacker may earn a commission if you book, at no extra cost to you. Say so when you share them. Use for "Find cheap flights from Manchester that fit the May bank holiday weekend" (work out the break's dates with best_days_to_book first).

find_trips input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "origin",
    "depart",
    "return"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1,
      "description": "How many destinations to return, up to 20. Default 10."
    },
    "depart": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Outbound date, the first day of the break (yyyy-MM-dd)."
    },
    "origin": {
      "type": "string",
      "maxLength": 3,
      "minLength": 3,
      "description": "Departure airport or city IATA code, e.g. MAN (Manchester), LGW (Gatwick), EDI (Edinburgh), BHX, LON (all London airports)."
    },
    "return": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Return date, the last day of the break (yyyy-MM-dd)."
    }
  }
}
find_trips output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "origin",
    "depart",
    "return",
    "currency",
    "sample",
    "priceNote",
    "fares",
    "searchAllUrl",
    "affiliate",
    "disclosure"
  ],
  "properties": {
    "fares": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "destination",
          "city",
          "country",
          "price",
          "transfers",
          "departAt",
          "returnAt",
          "fitsDates",
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "Affiliate booking link"
          },
          "city": {
            "type": "string"
          },
          "price": {
            "type": "number",
            "description": "Per person, return, in currency"
          },
          "airline": {
            "type": "string",
            "description": "IATA airline code, when known"
          },
          "country": {
            "type": "string"
          },
          "departAt": {
            "type": "string"
          },
          "returnAt": {
            "type": "string"
          },
          "fitsDates": {
            "type": "boolean",
            "description": "False: a from-price on other dates that month; the link searches the break's dates"
          },
          "transfers": {
            "type": "number"
          },
          "destination": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "depart": {
      "type": "object",
      "required": [
        "date",
        "label"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "yyyy-MM-dd"
        },
        "label": {
          "type": "string",
          "description": "e.g. \"Fri 26 Mar 2027\""
        }
      },
      "additionalProperties": false
    },
    "origin": {
      "type": "string"
    },
    "return": {
      "type": "object",
      "required": [
        "date",
        "label"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "yyyy-MM-dd"
        },
        "label": {
          "type": "string",
          "description": "e.g. \"Fri 26 Mar 2027\""
        }
      },
      "additionalProperties": false
    },
    "sample": {
      "type": "boolean",
      "description": "True: example prices, not real offers"
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217: GBP from the UK, EUR from Ireland, AUD from Australia, USD from the US"
    },
    "affiliate": {
      "type": "boolean",
      "const": true
    },
    "priceNote": {
      "type": "string"
    },
    "disclosure": {
      "type": "string"
    },
    "searchAllUrl": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
find_trips annotations
{
  "title": "Find cheap flights for a break",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
leave_request_message — Leave request message
Advertised by the server during the last successful anonymous check.
Advertised read-only

Write the short, polite message asking a manager for the leave days of a break, in the same words as the Leave Hacker app. Pass the dates to book; the break's first and last day are worked out from the weekends (and bank holidays, if you pass region) either side unless you pass them.

leave_request_message input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "dates_to_book"
  ],
  "properties": {
    "region": {
      "type": "string",
      "maxLength": 40,
      "minLength": 2,
      "description": "Optional, to count bank holidays next to the dates: england-and-wales, scotland or northern-ireland for UK bank holidays (from gov.uk); IE for Ireland; an Australian state or territory as AU-NSW, AU-VIC, AU-QLD, AU-WA, AU-SA, AU-TAS, AU-ACT or AU-NT (their public holidays differ a lot); US for US federal holidays; or a two-letter ISO 3166-1 country code such as DE or FR for other countries' public holidays (from Nager.Date)."
    },
    "break_end": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Last day off, if known (yyyy-MM-dd)."
    },
    "break_start": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First day off, if known (yyyy-MM-dd)."
    },
    "dates_to_book": {
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        "description": "A day of leave (yyyy-MM-dd)."
      },
      "maxItems": 60,
      "minItems": 1,
      "description": "The working days to book as leave (yyyy-MM-dd)."
    }
  }
}
leave_request_message output schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "message",
    "datesToBook",
    "break",
    "notes"
  ],
  "properties": {
    "break": {
      "type": "object",
      "required": [
        "start",
        "end",
        "daysOff",
        "leaveDays"
      ],
      "properties": {
        "end": {
          "type": "object",
          "required": [
            "date",
            "label"
          ],
          "properties": {
            "date": {
              "type": "string",
              "description": "yyyy-MM-dd"
            },
            "label": {
              "type": "string",
              "description": "e.g. \"Fri 26 Mar 2027\""
            }
          },
          "additionalProperties": false
        },
        "start": {
          "type": "object",
          "required": [
            "date",
            "label"
          ],
          "properties": {
            "date": {
              "type": "string",
              "description": "yyyy-MM-dd"
            },
            "label": {
              "type": "string",
              "description": "e.g. \"Fri 26 Mar 2027\""
            }
          },
          "additionalProperties": false
        },
        "daysOff": {
          "type": "number"
        },
        "leaveDays": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "message": {
      "type": "string"
    },
    "datesToBook": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "label"
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "yyyy-MM-dd"
          },
          "label": {
            "type": "string",
            "description": "e.g. \"Fri 26 Mar 2027\""
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
leave_request_message annotations
{
  "title": "Leave request message",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

2 advertised

plan_my_year — Plan my leave year

Advertised by the server during the last successful anonymous check.

Plan a whole leave year with Leave Hacker: the best breaks for your allowance, then flights and a message to your manager.

region
england-and-wales, scotland, northern-ireland or a country code
allowance
Days of annual leave a year, e.g. 25
school
none, parent or staff
best_days_around — Best days to book around a holiday

Advertised by the server during the last successful anonymous check.

Which days of leave to book around one bank holiday (Easter, Christmas, a May bank holiday) for the most days off.

holiday
e.g. "Easter", "Christmas", "Early May" (required)
year
e.g. 2027
region
england-and-wales, scotland, northern-ireland or a country code

Resources

9 advertised

bank-holidays-england-and-wales-2026 — Bank holidays 2026: England and Wales

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-england-and-wales-2026 URI
leavehacker://bank-holidays/england-and-wales/2026

MIME type: application/json

bank-holidays-england-and-wales-2027 — Bank holidays 2027: England and Wales

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-england-and-wales-2027 URI
leavehacker://bank-holidays/england-and-wales/2027

MIME type: application/json

bank-holidays-england-and-wales-2028 — Bank holidays 2028: England and Wales

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-england-and-wales-2028 URI
leavehacker://bank-holidays/england-and-wales/2028

MIME type: application/json

bank-holidays-scotland-2026 — Bank holidays 2026: Scotland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-scotland-2026 URI
leavehacker://bank-holidays/scotland/2026

MIME type: application/json

bank-holidays-scotland-2027 — Bank holidays 2027: Scotland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-scotland-2027 URI
leavehacker://bank-holidays/scotland/2027

MIME type: application/json

bank-holidays-scotland-2028 — Bank holidays 2028: Scotland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-scotland-2028 URI
leavehacker://bank-holidays/scotland/2028

MIME type: application/json

bank-holidays-northern-ireland-2026 — Bank holidays 2026: Northern Ireland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-northern-ireland-2026 URI
leavehacker://bank-holidays/northern-ireland/2026

MIME type: application/json

bank-holidays-northern-ireland-2027 — Bank holidays 2027: Northern Ireland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-northern-ireland-2027 URI
leavehacker://bank-holidays/northern-ireland/2027

MIME type: application/json

bank-holidays-northern-ireland-2028 — Bank holidays 2028: Northern Ireland

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays-northern-ireland-2028 URI
leavehacker://bank-holidays/northern-ireland/2028

MIME type: application/json

bank-holidays — Bank holidays by region and year

Advertised by the server during the last successful anonymous check.

UK bank holidays (gov.uk, Open Government Licence v3.0) or other countries' public holidays (Nager.Date) for a region and year, as JSON. region: england-and-wales, scotland, northern-ireland or a two-letter country code.

bank-holidays URI template
leavehacker://bank-holidays/{region}/{year}

MIME type: application/json

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1189 ms
95th percentile latency
1189 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1189 ms · metadata changed · 6 tool(s), 9 resource(s), 1 resource template(s), 2 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http leave-hacker-mcp https://leavehacker.app/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add leave-hacker-mcp --url https://leavehacker.app/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable leave-hacker-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "leave-hacker-mcp": {
      "url": "https://leavehacker.app/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "leave-hacker-mcp": {
      "type": "streamableHttp",
      "url": "https://leavehacker.app/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start leave-hacker-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "leave-hacker-mcp": {
      "type": "http",
      "url": "https://leavehacker.app/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http leave-hacker-mcp https://leavehacker.app/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "leave-hacker-mcp": {
      "url": "https://leavehacker.app/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "leave-hacker-mcp": {
      "serverUrl": "https://leavehacker.app/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Leave Hacker MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Leave Hacker MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing