Comprehensive Model Context Protocol server for managing Home Assistant through AI assistants.
Untap is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Check UK Delay Repay, UK261 flights and TfL refunds. Save claims and check commutes on request.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http untap-mcp https://untap.money/api/mcp
# 2 — ask your agent for something these tools do
# find_money_owed, check_train_delay, check_flight_compensation and 17 more
Untap costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http untap-mcp https://untap.money/api/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
20 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Takes a plain-language description of what happened (a late or cancelled train, a delayed or cancelled flight, a TfL overcharge, a parking ticket, a council tax, water or broadband problem) and returns the UK refund and compensation schemes Untap covers that may apply. For each one it gives the fact that decides it, the Untap check that covers it and Untap’s free guide. It also picks out any fligh
| Parameter | Type | Required | Notes |
|---|---|---|---|
| situation | string | yes | What happened, in the person’s own words. For example: "my train from Brighton to Victoria was 40 minutes late on Monday" or "I think my council tax band is wrong". |
Checks a late or cancelled train in Great Britain against National Rail’s historic running records and works out Delay Repay. Takes the two stations (names, partial names or three-letter codes), the date and roughly when the train left; the operator, ticket type and price paid are optional. Returns the matched train with scheduled and actual times, the delay at the destination, the operator and it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | Station the person got on at. A name, part of a name or a three-letter code: "Brighton", "Kings Cross", "BTN". |
| to | string | yes | Station the person got off at, in the same forms. |
| date | string | yes | Date of travel. YYYY-MM-DD is best; "25/09/2026", "25 September", "yesterday" and "last Friday" also work. |
| departure_time | no | Roughly when the train left the first station, UK time: "08:05", "8am", "around 8". Needed to find the train unless service_id is given. | |
| operator | no | Train company if known, as the person says it: "Southern", "GWR", "Avanti". Used to narrow the match. | |
| ticket_type | no | As printed: "Anytime Return", "Off-Peak Single", "Advance", "Annual Season", "Monthly Season", "Flexi Season". A return halves the single fare the amount is worked from. A season is valued per journey | |
| price_paid | no | What one ticket cost, in pounds: "£24.50", 24.5 or 17 (read as £17.00). For a season ticket, the price of the whole season. Needed for a cash amount; without it the percentage is returned. | |
| tickets | no | How many tickets of this price are on the booking, one per passenger. Defaults to 1. The amount is per ticket times this. | |
| service_id | no | The service_id of a train listed in an earlier result. With it, that train is checked directly. |
Works out compensation for a delayed or cancelled flight under UK261 or EU261. Takes the flight number and date. What happened comes from flight-status records, which cover about the last year, or from what_happened and arrival_delay_minutes when given. Returns the matched route, the arrival delay, the distance band, the amount per passenger, the extraordinary-circumstances caveat, the airline’s c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| flight_number | string | yes | Airline code and number, as on the booking: "BA2551", "U2 8123". |
| date | string | yes | Date the flight was due to depart, local time. YYYY-MM-DD is best. |
| from_airport | no | Three-letter departure airport code, if known: "LGW". Helps pick the right flight on multi-stop numbers. | |
| to_airport | no | Three-letter arrival airport code, if known: "BCN". | |
| what_happened | no | What happened, if known. When left out, Untap looks it up in flight-status records. | |
| arrival_delay_minutes | no | How late the flight arrived at the gate, in minutes, if the person knows. Compensation turns on arrival, not departure. | |
| cancellation_notice_days | no | For a cancellation: how many days before departure the airline told the person. 14 or more means no compensation. | |
| price_paid | no | Optional, in pounds: "£180" or 180. Not used for the amount, which is fixed in law, but needed to save the claim to an account. |
Checks Transport for London contactless or Oyster journeys for overcharges: incomplete journeys (no touch out, so the maximum fare was charged) and missed Hopper fares. Takes journey rows from a journey history, or the text of the CSV download from a TfL account. PDFs and images are not accepted. TfL refunds an incomplete journey as the maximum fare minus the fare for the journey actually made. Wi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| journeys | no | Journey rows from a TfL contactless or Oyster journey history. Used when csv_text is not given. | |
| csv_text | no | The text of the CSV journey history downloaded from a TfL account. Takes priority over journeys. |
Returns one train operator’s Delay Repay rules: the delay at which it starts paying, each payout tier, the claim deadline, the link to its claim form, any automatic or one-click scheme, and the date the rules were last checked against the operator’s own page. Accepts the operator’s name as people say it, such as Avanti, GWR or Southern. No sign-in needed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| operator | string | yes | Train company name as people say it: "Avanti", "GWR", "Southern", "LNER", or a two-letter operator code. |
Returns how to submit one train, flight or TfL compensation claim on the company’s own form. Takes the claim type and the train operator or airline, with the journey date, ticket type, where it was booked and the airports as optional extras. Returns the eligibility rules for that company and claim type, the official claim page (marked unverified where Untap could not confirm it), numbered submissi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| claim_type | string | yes | What the claim is for: a late or cancelled train, a delayed or cancelled flight, denied boarding, a TfL incomplete journey or another TfL overcharge. |
| company | no | The train operator or airline, by name or code as people say it: "Southern", "LNER", "easyJet", "BA", "U2". Not needed for TfL. | |
| journey_date | no | Date of travel, YYYY-MM-DD. With it, the result gives the last day to claim as a date. | |
| ticket_type | no | Ticket type as printed, such as "Anytime Return", "Advance Single" or "Season". Decides the rail return-ticket rule. | |
| booked_via | no | Where the ticket was bought: from the operator or airline itself, from a ticket retailer such as Trainline, through a travel agent, or as part of a package holiday. | |
| departure_airport | no | Three-letter departure airport code, such as "CDG". Decides whether UK261 or EU261 applies, and with the arrival airport, the distance band. | |
| arrival_airport | no | Three-letter arrival airport code, such as "LHR". |
Reads up to 25 emails (sender, subject, date and plain-text body) and picks out the ones that point to a train, flight or TfL claim: booking confirmations, delay and cancellation notices, airline schedule changes and denied boarding, TfL incomplete journey and maximum fare emails, and claim acknowledgements and decisions. Detection is by sender domain, subject pattern and fixed phrases, with no la
| Parameter | Type | Required | Notes |
|---|---|---|---|
| emails | array | yes | Up to 25 emails, each with its sender, subject, date and plain-text body. |
Saves the result of a train, flight or TfL check to the person’s Untap account, so it appears on their dashboard with its deadline. Accepts the save_claim arguments returned by a check, with the price paid added where the check listed it as missing. The verdict is worked out again from those facts rather than copied. A train journey that is already saved is returned as it is, not saved twice. Requ
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | yes | Which kind of check the claim came from. |
| train | no | For category "train": the train booking, in the shape a train check returns in save_claim.arguments.train, with ticket_price_pence set. | |
| flight | no | For category "flight": the flight, in the shape a flight check returns in save_claim.arguments.flight, with ticket_price_pence set. | |
| tfl | no | For category "tfl": the journeys, in the shape a TfL check returns in save_claim.arguments.tfl. |
Saves or updates one direction of a usual train journey (a commute) in the person’s Untap account: stations, usual departure time, travel days and day-ticket fare. An outward and a homeward journey are two separate routes. Saving the same route and time again updates it. Nothing is checked automatically; a saved route is checked only on request. Day tickets only; season tickets are not supported.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commute_id | no | The id of an existing commute in this account, to update or restore it. When left out, a new route is saved. | |
| label | no | Optional short name such as Morning commute. | |
| from | string | yes | Departure station name or three-letter code. |
| to | string | yes | Arrival station name or three-letter code. |
| departure_time | string | yes | Usual UK departure time, for example 08:05 or 8am. |
| weekdays | array | no | Usual travel days: Monday=1 through Sunday=7. Informational only; no automatic checks. |
| ticket_type | string | no | Day ticket type. For return, the price is the whole return fare. Season tickets are not supported by saved commutes. |
| ticket_price_pence | no | Usual day-ticket price in pence, £24.50=2450. Optional, for when the fare is known and stays the same. A day-ticket price, not a weekly or monthly season price. |
Lists the person’s saved train routes with their ids, usual times, days and fares. Makes no National Rail lookups. Requires sign-in to Untap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_stopped | boolean | no | Include stopped routes so they can be restored. |
Hides a saved train route from the active list. The route is kept and can be restored by saving it again with its commute_id. No claims or bookings change. Requires sign-in to Untap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commute_id | string | yes | The id of a saved commute. The route is kept and can be restored. |
Checks a saved train route against National Rail’s running records for one travel date and works out Delay Repay: the matched train, the delay, the amount, the deadline and a claim pack. When several trains match, the result lists them, each with a service_id. A saved route does not show that the person travelled that day, and the result says so. Nothing is saved or filed. Requires sign-in to Unta
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commute_id | string | yes | The id of a saved commute. |
| date | string | yes | The travel date to check, preferably YYYY-MM-DD. "yesterday" also works. |
| service_id | no | The service_id of a train listed in an earlier result. With it, that train is checked directly. |
Lists the claims in the person’s Untap account with amounts, deadlines, the verdict and their progress (not sent, sent, paid, rejected or archived). By default it shows claims that are still open; include_closed adds paid, rejected and archived ones. Requires sign-in to Untap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | no | Restricts the list to one category. When left out, all categories are listed. | |
| include_closed | boolean | no | Also show claims marked paid, rejected or archived, and ones with nothing to claim. |
| limit | integer | no | Most rows to return. Defaults to 25. |
Records progress on a claim in the person’s Untap account: sent (submitted to the operator or airline), paid (with the amount received, if known), rejected, or archived. Takes the claim_id given when the claim was saved or listed. This updates Untap’s record only; it does not contact the operator or airline. Requires sign-in to Untap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| claim_id | string | yes | The claim_id given when the claim was saved or listed. |
| status | string | yes | sent: submitted to the operator or airline. paid: money received. rejected: the claim was refused. archived: hide it without an outcome. |
| amount_received_pence | no | For paid: the amount actually received, in pence. £12.40 = 1240. | |
| note | no | Optional short note, such as the operator’s reference or the reason given for a refusal. |
Adds a UK train booking to the person’s Untap account and works out Delay Repay for it. One booking per call, with each journey in legs (one for a single, two for a return, in travel order). Untap checks National Rail’s Historical Service Performance records for each journey; the delay, actual arrival and cancellation fields are optional, and when left out Untap looks them up. Operators accept one
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ticket_price_pence | integer | yes | Total fare paid in pence for the whole booking. £62.00 = 6200. |
| ticket_type | string | yes | Ticket type as printed. For "return" and "open_return" the single fare is half the price paid; for "season" the amount is a share of one journey value (see season_type); every other type uses the full |
| season_type | no | Season tickets only: how long the season runs. The operator divides the season price into single journeys (for example annual 464, monthly 40, weekly 10, flexi 16) and pays a share of one journey. Whe | |
| booking_reference | string/null | yes | Booking reference if available, otherwise null. |
| legs | array | yes | Each journey on this booking, in travel order: one for a single, two for a return (outward first), more for a multi-stop booking. Untap works out Delay Repay for each journey and adds them up. |
Adds a flight to the person’s Untap account and returns the UK261 or EU261 verdict, the amount and the airline’s claim link. For past flights Untap checks AeroDataBox flight-status records; the status, delay and actual arrival fields are optional, and when left out Untap looks them up. Takes the airline’s two-letter IATA code (BA, U2, FR) and three-letter airport codes (LHR, BCN). When the airport
| Parameter | Type | Required | Notes |
|---|---|---|---|
| airline_iata | string | yes | Two-letter IATA airline code, e.g. "BA" for British Airways, "U2" for easyJet. |
| flight_number | string | yes | Flight number including the airline prefix, e.g. "BA2551". |
| departure_iata | string | yes | Three-letter IATA departure airport code, e.g. "LHR". |
| arrival_iata | string | yes | Three-letter IATA arrival airport code, e.g. "BCN". |
| scheduled_departure | string | yes | Scheduled departure as ISO 8601 datetime. |
| scheduled_arrival | string | yes | Scheduled arrival as ISO 8601 datetime. |
| ticket_price_pence | integer | yes | Total fare paid in pence. |
| booking_reference | string/null | yes | PNR / airline booking reference if available, otherwise null. |
| passenger_name | string/null | yes | Passenger name as printed on the ticket, or null if not visible. |
| status | no | Optional. What happened to the flight, if known. When left out, Untap looks the flight up in AeroDataBox flight-status records. | |
| actual_arrival | string/null | no | Optional. Actual arrival as an ISO 8601 datetime, if known. |
| delay_minutes | no | Optional. Arrival delay in minutes, if known. |
Adds TfL contactless journeys to the person’s Untap account, up to 500 rows per call, and checks everything they have saved for incomplete journeys, missed Hopper fares and other overcharges. Each row carries flags for an incomplete journey, a revenue-inspection maximum fare, a free Hopper fare, a TfL correction and the daily or weekly cap, as shown on the statement. Journeys already saved are ski
| Parameter | Type | Required | Notes |
|---|---|---|---|
| card_last4 | string/null | yes | Last 4 digits of the contactless card, if shown. |
| period_start | string/null | yes | Statement period start date YYYY-MM-DD. |
| period_end | string/null | yes | Statement period end date YYYY-MM-DD. |
| journeys | array | yes | Every journey on the statement. Up to 500 per call. |
Adds a UK parking ticket (a council PCN or a private parking charge) to the person’s Untap account and runs Untap’s appeal-grounds engine. Returns the grounds that may apply, how confident the match is, the appeal route and deadline. Grounds are matched against the contravention, the location and observed_notes; with no observed_notes, only general grounds come back and the result is a possible ap
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pcn_reference | string | yes | PCN or notice reference number printed on the document. |
| issuer_type | string | yes | Council = local authority issued under TMA 2004. Private = on private land by a parking operator (BPA or IPC member). |
| issuer_name | string | yes | Issuer name as written, e.g. "London Borough of Camden" or "ParkingEye Ltd". |
| contravention_code | string/null | yes | Council contravention code, e.g. "01", "12", "MR11". Null for private tickets. |
| contravention_description | string | yes | Full text of the alleged contravention as printed on the notice. |
| vehicle_registration | string/null | yes | Vehicle registration mark, or null if not shown. |
| location | string | yes | Street or car park name where the contravention allegedly occurred. |
| contravention_date | string | yes | Date the contravention allegedly occurred, ISO 8601 date. |
| issued_date | string | yes | Date the notice was issued or served, ISO 8601 date. |
| amount_pence | integer | yes | Full charge amount in pence. £65 = 6500. |
| discounted_amount_pence | yes | Reduced amount in pence if paid promptly (usually 50% within 14 or 21 days). Null if none stated. | |
| discount_deadline | string/null | yes | ISO date by which the discount applies, or null if not stated. |
| full_deadline | string/null | yes | Last date on the notice for paying the full amount or lodging an appeal, as an ISO date. |
| appeal_url | yes | Direct https URL on the notice for online appeals, or null if none. | |
| has_windscreen_notice | boolean | yes | True if a paper notice was placed on the windscreen. False if it arrived in the post only. |
| keeper_notice_served_date | string/null | yes | Private only: date the Notice to Keeper was served. |
| observed_notes | array | yes | Short phrases from the notice or the person’s account that may support an appeal, such as unclear signs, a broken machine or a few minutes over. The appeal-grounds engine matches against these; with n |
Lists the savings rows in the person’s Untap account, filtered by category and status. Each row has the verdict status (claimable, pending_check, not_eligible and so on) and user_progress, what the person has recorded since: none, submitted (sent), received (paid) or archived. Requires sign-in to Untap.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | yes | Restrict to a single category, or null for all categories. | |
| status | yes | Restrict to a single status, or null for all. | |
| limit | integer | no | Maximum number of savings rows to return. Defaults to 25, capped at 100. |
Deletes every booking, statement, saved commute and claim in the person’s Untap account, in two steps. A call with confirm=false deletes nothing and returns a summary of what would be deleted, with a confirmation_token valid for 5 minutes. A call with confirm=true and that token deletes the data permanently; each token works once. The account itself is kept so Untap can still be used; deleting the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| confirm | boolean | no | false returns a preview of what would be deleted and a confirmation_token, and deletes nothing. true deletes, and works only with an unexpired confirmation_token from a preview. |
| confirmation_token | string/null | no | The confirmation_token from a preview. Required when confirm is true; each token works once. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Untap or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither: the repository linked on this page is where this record was collected from, not a copy of what the address serves, so it is not graded in its place. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.3.3.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Untap can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.