# Empty Leg Index > Openly published empty-leg private jet flights in the UK and Europe. Enquiry only. No booking and no payment. This file is the long note for assistants. The short index is https://theemptylegindex.com/llms.txt. Install steps for a person are at https://theemptylegindex.com/mcp. ## What the data is The index covers empty legs whose airports are in the UK or Europe. Collectors read pages the operators publish openly. A listing shows the route, date, aircraft, a price or a price band when the source gave one, the source name, the source URL, and the time the row was collected (`fetchedAt`). Prices are indicative. They are the source's published number, not a quote from this site, and they can change or vanish. Empty Leg Index is not a carrier, broker, or travel agent. It does not sell the seat. A country or region filter matches when either end of the route is in that place. ## MCP endpoint https://theemptylegindex.com/api/mcp Streamable HTTP. Send `Accept: application/json, text/event-stream`. No Authorization header. Browser clients may call it; the response carries CORS headers. Registry name: `com.theemptylegindex/empty-leg-index` Version: 0.1.0 Protocol versions this process negotiates: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07 Server instructions (also returned by initialize): Empty Leg Index lists openly published empty-leg private jet flights in the UK and Europe. It is not a carrier, broker, or travel agent. Prices are indicative, as published by each source, and a leg can move or be withdrawn. Use search_empty_legs to find legs, get_leg for one id, and list_sources for who was fetched and when. A region or country matches when either end of the route is in that place. fetchedAt is when this index collected the row. submit_enquiry records a request for a person to follow up. It does not book a seat, take payment, or confirm availability. It returns a reference and the sentence "No booking or payment made; the operator will contact you / enquire via their link", plus the operator or broker's own booking URL. consent must be the boolean true, and only after the person has asked to enquire. set_alert stores a free route alert and emails a confirmation link. It does not book a seat or take payment. consent must be the boolean true, and only after the person has asked to be emailed. No alert is sent until they open the link. The tool is registered when free alerts are switched on. There is no public email address. Listing removal and direct feeds go through the contact form at https://theemptylegindex.com/contact. Do not invent a booking or a payment. ## Tools ### search_empty_legs Search empty-leg private jet flights currently published for the UK and Europe. A country or region matches when either airport is in that place. Prices are indicative, copied from the publishing source, and are not a quote. Each row includes the source name, the source URL, and fetchedAt, which is when this index collected the row. An empty list means nothing published matches. It does not mean the route cannot be chartered. This tool does not book a flight and does not take payment. - `origin` (optional): Departure only. City, airport name, or IATA or ICAO code, for example LTN or London. Omit to leave that end open. - `destination` (optional): Arrival only. City, airport name, or IATA or ICAO code, for example NCE or Nice. Omit to leave that end open. - `country` (optional): ISO 3166-1 alpha-2 country code, for example GB or FR. A leg matches when either airport is in that country. - `region` (optional): Either "uk" (United Kingdom) or "europe" (this index's UK and Europe set). A leg matches when either airport is in the region. - `dateFrom` (optional): Inclusive first departure date, YYYY-MM-DD. Compared with the published date, not a time of day. - `dateTo` (optional): Inclusive last departure date, YYYY-MM-DD. - `aircraftCategory` (optional): One of very-light, light, midsize, super-midsize, heavy, ultra-long-range, turboprop. Aircraft this index cannot classify are "unspecified" and do not match a category filter. - `maxPrice` (optional): Highest published amount to include. Non-negative number, in the leg's own currency unless currency is also set. Legs with no numeric price are left out when this is set. - `currency` (optional): Three-letter currency code such as EUR or GBP. Applied only together with maxPrice: legs priced in another currency are left out. Ignored when maxPrice is omitted. Annotations: read-only; destructiveHint false; closed world. ### get_leg Return one published empty leg by id, including the route, date, aircraft, indicative price or price band, each source name and source URL, and fetchedAt (when this index collected the row, not a live quote). An unknown id returns an error and no leg. This does not hold or book the seat. - `id` (required): Id of a published leg, as returned by search_empty_legs. Example: leg-ltn-nce. Annotations: read-only; destructiveHint false; closed world. ### list_sources List every configured empty-leg source: its id, public page, whether it is enabled, and the last refresh result (when it was attempted, whether that attempt worked, how many valid legs it yielded, and the failure text when it failed). A disabled source is not fetched. This is the census of this index, not a booking directory. Call it with an empty object. No parameters. Call it with an empty object. Annotations: read-only; destructiveHint false; closed world. ### submit_enquiry Store an enquiry about one published leg and return a reference. The result includes the sentence "No booking or payment made; the operator will contact you / enquire via their link" and the operator or broker's own booking URL. It does not reserve a seat, charge a card, or confirm the flight still exists. Call it only after the person has asked to enquire and has given their name, email, passenger count, and agreement to be contacted. consent must be the boolean true. - `leg_id` (required): Id of a published leg, as returned by search_empty_legs. Example: leg-ltn-nce. - `name` (required): Name of the person who wants to be contacted. 1 to 200 characters. - `email` (required): Email address of that person. The operator or broker is who follows up. - `passengers` (required): How many people would fly. A whole number from 1 to 19. This does not reserve seats. - `notes` (optional): Optional note, at most 2000 characters. Omit it when there is nothing to add. - `consent` (required): Must be the boolean true. That means the person agreed to be contacted about this leg. Any other value is rejected, and the enquiry is not stored. Annotations: stores an enquiry; destructiveHint false; closed world. ### set_alert Store a free email alert for new empty legs on a route. Set an origin, a destination, or both. Each end is an airport (city, name, or IATA or ICAO code) or a country (ISO code or English name, for example GB or France). originCountry and destinationCountry name the country for that end when you want it on its own. dateFrom and dateTo are an optional inclusive window, YYYY-MM-DD. maxPrice is an optional highest published amount, in the leg's own currency unless currency is also set. email is the address that receives the alert. consent must be the boolean true, and only after the person has asked to be emailed. The watch is stored as pending and a confirmation link is emailed. No alert is sent until that link is opened. Each alert email includes an unsubscribe link, and a delete-my-data link removes every watch stored for that address. This does not book a seat and it does not take payment. A leg is included only when every source on it is enabled. Villiers is never included. - `origin` (optional): Departure airport or country. An airport is a city, a name, or an IATA or ICAO code, for example LTN or London Luton. A country is an ISO code or an English name, for example GB or France. Two letters are always a country. Omit this when originCountry carries the country, or when only the destination is set. - `destination` (optional): Arrival airport or country, in the same form as origin. Omit this when destinationCountry carries the country, or when only the origin is set. - `originCountry` (optional): Country of departure on its own, as an ISO code or an English name, for example FR or France. A leg matches when the departure airport is in that country. Use this when origin is an airport and you also want to name the country, or instead of origin. - `destinationCountry` (optional): Country of arrival on its own, as an ISO code or an English name. A leg matches when the arrival airport is in that country. - `dateFrom` (optional): Optional inclusive first departure date, YYYY-MM-DD. Omit it for no start. - `dateTo` (optional): Optional inclusive last departure date, YYYY-MM-DD. Omit it for no end. - `maxPrice` (optional): Optional highest published amount to include. Non-negative number, in the leg's own currency unless currency is also set. Legs with no numeric price are left out when this is set. - `currency` (optional): Three-letter currency code such as EUR or GBP. Applied only together with maxPrice. Omit it when maxPrice is omitted. - `email` (required): Email address that receives the confirmation and, after that, the alerts. One address, no spaces. - `consent` (required): Must be the boolean true. That means the person asked to be emailed about this route. Any other value is rejected, and the watch is not stored. Annotations: stores a route alert; destructiveHint false; closed world. ## Install Claude custom connector, or `claude_desktop_config.json`: ```json { "mcpServers": { "empty-leg-index": { "url": "https://theemptylegindex.com/api/mcp" } } } ``` Cursor (`~/.cursor/mcp.json`): ```json { "mcpServers": { "empty-leg-index": { "url": "https://theemptylegindex.com/api/mcp" } } } ``` Add to Cursor: cursor://anysphere.cursor-deeplink/mcp/install?name=empty-leg-index&config=eyJ1cmwiOiJodHRwczovL3RoZWVtcHR5bGVnaW5kZXguY29tL2FwaS9tY3AifQ%3D%3D VS Code (`.vscode/mcp.json` or the user mcp.json): ```json { "servers": { "empty-leg-index": { "type": "http", "url": "https://theemptylegindex.com/api/mcp" } } } ``` Install in VS Code: vscode:mcp/install?%7B%22name%22%3A%22empty-leg-index%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Ftheemptylegindex.com%2Fapi%2Fmcp%22%7D ChatGPT: add a custom connector in developer mode and paste https://theemptylegindex.com/api/mcp. There is no local config file for the hosted app. ## Example prompts - Which empty legs leave the UK in the next two weeks under 5000 EUR? Prices are indicative. - List the sources and say when each one was last fetched, including any that failed. - Get the full record for that leg id, including the source URL and when the row was collected. - I want to enquire about that leg for two passengers. Ask me for my name and email, and do not book or charge anything. - Watch London Luton to France through the end of next month, under 4000 EUR. Ask for my email and my consent, and do not book anything. ## Discovery documents - https://theemptylegindex.com/server-card — MCP server card (SEP-2127), media type application/mcp-server-card+json - https://theemptylegindex.com/.well-known/ai-catalog.json — domain catalog that points at the card - https://theemptylegindex.com/.well-known/mcp.json — the same server card, for clients that still request this path - https://theemptylegindex.com/.well-known/mcp/server-card.json — Smithery scan fallback (a different shape, with the tool list) - https://theemptylegindex.com/server.json — the MCP Registry manifest ## Enquiry submit_enquiry stores the leg id, name, email, passenger count, note, consent, and the time. It returns a reference and this sentence: No booking or payment made; the operator will contact you / enquire via their link. The next step is the operator or broker's own URL, which is included in the result. Privacy: https://theemptylegindex.com/privacy. Listing removal and direct feeds use the contact form at https://theemptylegindex.com/contact. There is no public email address. ## Route alert set_alert stores the email, the route (airport or country on each end you set), the date window, any maximum price, consent, and the time. The watch stays pending until the confirmation link is opened. Only a confirmed watch is matched, and only against legs whose sources are all enabled. Villiers is never included. The same call is POST https://theemptylegindex.com/api/alerts. Each alert email links to the operator page with ref=eli-alert and includes an unsubscribe link. A delete-my-data link removes every watch for that address.