# Leave Hacker (remote · leavehacker.app)

Which days of annual leave to book around bank holidays for the most days off, and cheap flights.

- Trust score: 79/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-06

## Components

- remote · `leavehacker.app`: 79/100 (this document), [markdown](https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker.md), [page](https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker)

## Channel facts

- Endpoint: `https://leavehacker.app/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-06.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 4252 tokens (~283/item across 15 items; 6 tools + 9 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 37/100
  - Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Leave Hacker MCP server?

Leave Hacker is a hosted endpoint at https://leavehacker.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http app-leavehacker-leave-hacker 'https://leavehacker.app/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "app-leavehacker-leave-hacker": {
      "url": "https://leavehacker.app/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "app-leavehacker-leave-hacker": {
      "type": "http",
      "url": "https://leavehacker.app/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.app-leavehacker-leave-hacker]
url = "https://leavehacker.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-leavehacker-leave-hacker": {
      "type": "remote",
      "url": "https://leavehacker.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-leavehacker-leave-hacker --url 'https://leavehacker.app/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-leavehacker-leave-hacker:
    url: "https://leavehacker.app/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "app-leavehacker-leave-hacker": {
      "Transport": "http",
      "Url": "https://leavehacker.app/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add app-leavehacker-leave-hacker -t streamable-http -u 'https://leavehacker.app/mcp'
```

### Other

```json
{
  "mcpServers": {
    "app-leavehacker-leave-hacker": {
      "type": "http",
      "url": "https://leavehacker.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-06 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-05 (score 78, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-11-04 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 74, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “find_trips” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 173 → 241
- [functional improvement] Stability: unverified → 0.03
- [cosmetic] “best_days_to_book” added an optional parameter “next_working_day_off”
- [cosmetic] “best_days_to_book” added an optional parameter “us_holiday_ids”
- [cosmetic] “best_days_to_book” added an optional parameter “us_holidays”
- [cosmetic] “get_bank_holidays” added an optional parameter “next_working_day_off”
- [cosmetic] “plan_leave_year” added an optional parameter “next_working_day_off”
- [cosmetic] “plan_leave_year” added an optional parameter “us_holiday_ids”
- [cosmetic] “plan_leave_year” added an optional parameter “us_holidays”
- [cosmetic] “best_days_to_book” reworded the description of “region”
- [cosmetic] “get_bank_holidays” reworded the description of “region”
- [cosmetic] “leave_request_message” reworded the description of “region”
- [cosmetic] “plan_leave_year” reworded the description of “allowance”
- [cosmetic] “plan_leave_year” reworded the description of “region”

### 2026-10-26 (score 74)

First indexed and scored.

## MCP tools (6)

### `get_bank_holidays` (~351 tokens)

Bank holidays

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.

Input parameters:

- `from` (string): Start of a date range, instead of year (yyyy-MM-dd).
- `next_working_day_off` (boolean): 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 em…
- `region` (string): 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, A…
- `to` (string): End of the date range, inclusive (yyyy-MM-dd).
- `year` (integer): Calendar year, e.g. 2027. Defaults to this year.

Output parameters:

- `attribution` (string): Credit to show with the dates
- `count` (number)
- `from` (string)
- `holidays` (array)
- `licence`
- `notes` (array)
- `region` (string)
- `regionName` (string)
- `source` (string)
- `sourceUrl` (string)
- `to` (string)

### `best_days_to_book` (~787 tokens)

Best days to book

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. For parents in the UK, school: parent keeps leave inside the school holidays, using the council's published term dates when you pass council.

Input parameters:

- `council` (string): With school: parent. The UK council whose term dates the school follows: its name ("Surrey", "Edinburgh"), its id ("surrey", "city-of-edinburgh") or the first half of a postcode ("GU1", "EH1"), looke…
- `from` (string): Start of a date range, instead of year (yyyy-MM-dd).
- `holiday` (string): Only holidays whose name contains this, e.g. "Easter", "Christmas", "May".
- `max_leave_days` (integer): Most days of leave for one break. Default 9.
- `next_working_day_off` (boolean): 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 em…
- `region` (string): 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, A…
- `school` (string): none (default); parent: children at school, so leave is only booked in the school holidays. UK only. School staff can't book leave in term: use plan_leave_year with school: staff.
- `to` (string): End of the date range, inclusive (yyyy-MM-dd).
- `us_holiday_ids` (array): 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-tha…
- `us_holidays` (string): 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 = a…
- `workdays` (array): Days the person works, e.g. ["mon","tue","wed","thu"] for a four-day week. Defaults to Monday to Friday.
- `year` (integer): Calendar year, e.g. 2027. Defaults to this year.

Output parameters:

- `assumptions` (string)
- `attribution` (string): Credit to show with the dates
- `council`: The council whose published dates are used, or null for typical dates
- `from` (string)
- `licence`
- `maxLeaveDays` (number)
- `notes` (array)
- `opportunities` (array)
- `region` (string)
- `regionName` (string)
- `school` (string)
- `schoolYears` (array): Where each school year's dates come from
- `source` (string)
- `sourceUrl` (string)
- `to` (string)
- `trainingDays` (array): The council's staff training (INSET) days: pupils are off, staff work
- `workdays` (array)

### `plan_leave_year` (~942 tokens)

Plan a leave year

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), from the council's published term dates when you pass council and typical dates otherwise. Use for "Plan my 28 days of leave for 2027, I have kids at school in Leeds".

Input parameters:

- `allowance` (integer): 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 i…
- `council` (string): With school: parent or staff. The UK council whose term dates the school follows: its name ("Surrey", "Edinburgh"), its id ("surrey", "city-of-edinburgh") or the first half of a postcode ("GU1", "EH1…
- `days_used` (integer): Days of this leave year's allowance already taken or booked. Default 0.
- `leave_year_start_day` (integer): Day of the month the leave year starts. Default 1.
- `leave_year_start_month` (integer): Month the leave year starts, 1–12 (1 = January, 4 = April). Default 1.
- `leave_year_starting` (integer): Instead of year: the calendar year the leave year starts in, e.g. 2027 for January–December 2027 or April 2027–March 2028.
- `next_working_day_off` (boolean): 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 em…
- `region` (string): 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, A…
- `school` (string): none (default); parent: children at school, so breaks only in the school holidays; staff: works in a school, so the school holidays are the breaks. UK only.
- `style` (string): 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.
- `us_holiday_ids` (array): 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-tha…
- `us_holidays` (string): 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 = a…
- `workdays` (array): Days the person works, e.g. ["mon","tue","wed","thu"] for a four-day week. Defaults to Monday to Friday.
- `year` (string): Which leave year: current or next. Defaults to current, or next when under 90 days are left.

Output parameters:

- `allowance` (number)
- `assumptions` (string)
- `attribution` (string): Credit to show with the dates
- `bankHolidays` (array)
- `breaks` (array)
- `budget` (number)
- `council`: The council whose published dates are used, or null for typical dates
- `daysUsed` (number)
- `leaveYear` (object)
- `licence`
- `notes` (array)
- `plannedFrom` (string)
- `region` (string)
- `regionName` (string)
- `school` (string)
- `schoolHolidays` (array)
- `schoolYears` (array): Where each school year's dates come from
- `source` (string)
- `sourceUrl` (string)
- `style` (string)
- `totals` (object)
- `trainingDays` (array): The council's staff training (INSET) days: pupils are off, staff work
- `workdays` (array)

### `get_school_holidays` (~268 tokens)

School holidays

School holiday dates in the UK for a calendar year (half terms, Easter, summer, Christmas, and training days). With council, that council's published term dates, each school year with the council's source link and the date Leave Hacker last checked it; for a school year it hasn't published, and without a council, TYPICAL dates, which are the usual pattern and not official (Northern Ireland: the Department of Education's dates). Every holiday says which it is. Academies and independent schools can set their own, so tell the person to check their school's.

Input parameters:

- `council` (string): The UK council whose term dates the school follows: its name ("Surrey", "Edinburgh"), its id ("surrey", "city-of-edinburgh") or the first half of a postcode ("GU1", "EH1"), looked up in Leave Hacker'…
- `region` (string): UK nation: england-and-wales, scotland or northern-ireland. Defaults to england-and-wales, or to the council's nation when council is given.
- `year` (integer): Calendar year, e.g. 2027. Defaults to this year.

Output parameters:

- `caveat` (string)
- `council`: The council whose published dates are used, or null for typical dates
- `notes` (array)
- `region` (string)
- `regionName` (string)
- `schoolHolidays` (array)
- `schoolYears` (array): Where each school year's dates come from
- `trainingDays` (array): The council's staff training (INSET) days: pupils are off, staff work
- `typical` (boolean): True when every date here is typical, not published
- `year` (number)

### `find_trips` (~242 tokens)

Find cheap flights for a break

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).

Input parameters:

- `depart` (string, required): Outbound date, the first day of the break (yyyy-MM-dd).
- `limit` (integer): How many destinations to return, up to 20. Default 10.
- `origin` (string, required): Departure airport or city IATA code, e.g. MAN (Manchester), LGW (Gatwick), EDI (Edinburgh), BHX, LON (all London airports).
- `return` (string, required): Return date, the last day of the break (yyyy-MM-dd).

Output parameters:

- `affiliate` (boolean)
- `currency` (string): ISO 4217: GBP from the UK, EUR from Ireland, AUD from Australia, USD from the US
- `depart` (object)
- `disclosure` (string)
- `fares` (array)
- `origin` (string)
- `priceNote` (string)
- `return` (object)
- `sample` (boolean): True: example prices, not real offers
- `searchAllUrl` (string)

### `leave_request_message` (~251 tokens)

Leave request message

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.

Input parameters:

- `break_end` (string): Last day off, if known (yyyy-MM-dd).
- `break_start` (string): First day off, if known (yyyy-MM-dd).
- `dates_to_book` (array, required): The working days to book as leave (yyyy-MM-dd).
- `region` (string): 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-…

Output parameters:

- `break` (object)
- `datesToBook` (array)
- `message` (string)
- `notes` (array)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker#diagnostics

## Score history

- 2026-11-06: 79
- 2026-11-05: 78
- 2026-11-04: 78
- 2026-11-03: 77
- 2026-11-02: 77
- 2026-11-01: 76
- 2026-10-31: 76
- 2026-10-30: 76
- 2026-10-29: 75
- 2026-10-28: 75
- 2026-10-27: 74
- 2026-10-26: 74

## Common questions

### What is the Leave Hacker MCP server?

Leave Hacker is an MCP server listed in the public MCP registry as app.leavehacker/leave-hacker. Which days of annual leave to book around bank holidays for the most days off, and cheap flights. This page covers its hosted endpoint (https://leavehacker.app/mcp).

### Is the Leave Hacker MCP server safe to use?

Leave Hacker scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Leave Hacker MCP server expose?

Leave Hacker exposes 6 tools: get_bank_holidays, best_days_to_book, plan_leave_year, get_school_holidays, find_trips, leave_request_message. Their descriptions and schemas cost roughly 2,841 tokens of context every time the server is loaded.

### Does the Leave Hacker MCP server require authentication?

No. We connected to Leave Hacker without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Leave Hacker MCP server still maintained?

Leave Hacker is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the Leave Hacker MCP server?

VerifyMCP ran 13 checks on Leave Hacker, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://leavehacker.app/mcp
- Website: https://leavehacker.app/mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker.json
- HTML version of this page: https://verifymcp.io/servers/app-leavehacker-leave-hacker/leavehacker
