Skip to main content
Glama

Server Details

Get date-specific quotes and book private UK airport and cruise-port transfers through your AI assistant. Compare vehicle options, validate flights, retrieve bookings, amend details and cancel with customer confirmation. No registration required to start, subject to service limits; optional API-key and OAuth access for registered integrations. Transfer fares are payable separately and cancellation conditions apply.

Live demo and connection instructions: https://ai.airport-pickups-london.com/ Technical documentation: https://mcp.airport-pickups-london.com/docs

Ownership verified
Status
Healthy
Uptime
25.7% over 59 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: quote vs book vs amend vs cancel, UK vs EU quotes, live tracking vs recorded route vs nearest driver availability, flight validation, and service info. The descriptions explicitly guide when to use which tool, leaving little room for confusion.

Naming Consistency4/5

Nine of eleven tools follow a verb-first pattern (amend_booking, book_london_airport_transfer, cancel_booking, find_nearest_drivers, get_driver_route, get_service_info, lookup_booking, track_driver, validate_flight). The two quote tools (london_airport_transfer_quote, eu_transfer_quote) are noun-first, a minor deviation but still readable and predictable.

Tool Count5/5

11 tools is well within the ideal 3–15 range for this domain. Every tool serves a distinct operational need: quoting, booking lifecycle, driver tracking, flight validation, and service information.

Completeness5/5

The surface covers the full booking lifecycle (quote, book, amend, cancel, lookup), driver tracking (live, route, nearest availability), flight validation, EU transfers, and service info. No obvious gaps in the customer-facing transfer workflow.

Available Tools

11 tools
amend_bookingInspect

Modify booking details like passenger name/phone, date/time, flight number, passenger count or special requests. Ask the customer for BOTH their booking reference AND the email address used at booking — same as our website manage-booking login. Do not call this tool without both values. The EMAIL on a booking cannot be changed here — it is the customer's key to the booking. If they need a new email on the booking, tell them to email info@aplcars.com from the original address, quoting the booking reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesPassenger email on the booking — required, must match exactly
changesYesObject containing the fields to change
booking_refYesBooking reference — either "APL-<LT reservation id>" (e.g. "APL-1013869", as on the confirmation email) or the numeric LT reservation ID (e.g. "966244"). Both formats accepted.
book_london_airport_transferBook Airport TransferInspect

Book a London airport or cruise port transfer to/from any UK address. Creates a REAL reservation — only call after the customer confirms.

REQUIRED FLOW — collect ALL info before booking:

  1. Ask: Where are you travelling from and to?

  2. Ask: What date and time? (ask naturally, never expose technical formats like YYYY-MM-DD to the user)

  3. MANDATORY — Ask: How many passengers travelling, and how many suitcases/large bags? You MUST collect the exact passenger count for EVERY booking, even when the customer has already chosen the largest vehicle (Executive 8 Seater / Minibus). Passenger count is operational data the driver needs (seat allocation, child-seat planning, dispatch) — never skip this question, never assume "they picked the big car so it doesn't matter". Do not proceed without an explicit number.

  4. Call london_airport_transfer_quote to show prices and car options

  5. Ask: Which car type would you like? (show the options with prices)

  6. Ask: Passenger full name

  7. Ask: Phone number (with country code)

  8. Ask: Email address (for booking confirmation)

  9. CRITICAL — POSTCODE / EXACT ADDRESS: NEVER book using only a city, town, or area name (e.g. "Windsor", "Manchester", "central London"). UK city names cover wide areas — pricing and the actual pickup/dropoff point will be wrong (a customer asking for "Windsor" must reach SL4, not Harrow HA). If you only have a city/town name, ask the customer for the FULL UK postcode (e.g. "SL4 5LP") AND the house/building number or name. If you have a postcode but no building number, ask for the building number/name. Do not guess, do not substitute a default. The exact door is required so the driver can reach the customer.

  10. Ask the RIGHT transport detail based on booking type:

  • Airport PICKUP (customer arriving at airport) → Flight number (e.g. BA2534). Use validate_flight to verify and auto-detect terminal.

  • Airport DROPOFF (customer going TO airport) → Flight number is optional, don't require it

  • Cruise port pickup/dropoff → Cruise/ship name (e.g. P&O Ventura)

  • Train station pickup/dropoff → Train number or arriving from where

  • Non-airport/port/station route → skip, no transport detail needed

  1. MANDATORY — Ask: "Do you have any special requests? For example, child seat, extra luggage, wheelchair, pet?" You MUST ask this every time. Do NOT skip it. If they mention a child seat, ask the child's age (baby seat 0-12mo, child seat 1-4yrs, booster 4-12yrs). Check seat limit for their car (Saloon 1, People Carrier 2, 8 Seater 3). If they ask for extra pickup or drop-off stops (via points): the quote covers ONE pickup → ONE drop-off and the quote tool cannot price a stop. Book the main journey, put the stop in special_requests (e.g. "extra stop at 12 High St, Slough"), and tell them: "Extra stops are not included in this price — our office will confirm the extra cost with you before the trip."

  2. MANDATORY — Before confirming the booking, inform the passenger: "We'll create your booking and you can pay the driver in cash on the day. If you prefer to pay online, you can do so via your manage booking link — we accept all major cards including Amex, Apple Pay, Google Pay, PayPal, Revolut, WeChat Pay, and AliPay." Wait for the customer to confirm.

  3. Confirm all details with the customer, then call book_london_airport_transfer

  4. AFTER booking: Share the reservation_id number (the numeric LT reference, e.g. "966811") and the manage_booking_url. This numeric reservation_id is what appears on the customer confirmation email AND what the manage-booking page accepts — it is the customer-facing reference. Do NOT mention the internal booking_reference (APL-XXXXXX format) to the customer; that is for our internal tagging only. Say: "Booking confirmed! Your reference is #{reservation_id}. You can track your driver, view booking details, and pay online (all major cards, Amex, Apple Pay, Google Pay, PayPal, Revolut, WeChat Pay, AliPay) using this link: {manage_booking_url}"

    • Share meeting_point instructions — ALWAYS include the terminal/location name from meeting_point.name (e.g. "Meeting point at Heathrow Terminal 2: ..."). Never show meeting instructions without specifying which terminal or location.

IMPORTANT: Never call book_london_airport_transfer without customer confirmation. Always show the price first via london_airport_transfer_quote. IMPORTANT: The customer MUST choose a car type from the quote. Do NOT auto-select a car — always ask which one they want. IMPORTANT: Email address is REQUIRED — it is used for the booking management link and confirmation. IMPORTANT: Always inform the customer about payment options (cash or card/Apple Pay/Google Pay via manage booking link) BEFORE making the booking. IMPORTANT — PRICING: Quote the prices returned by london_airport_transfer_quote EXACTLY. Do NOT calculate discounts, do NOT round up or down, do NOT modify prices in any way. The prices returned are already final and include all surcharges. Never offer a discount unless it is explicitly returned by the quote tool. The MCP server is the only source of truth for pricing.

BOOKINGS WITHOUT AN ACCOUNT: passenger_email is REQUIRED (the booking reference + this email is how the customer manages the booking later), and callers without an account may create at most 5 bookings per hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesPickup location — airport name, full UK postcode + building number, or full street address. NEVER pass a bare city/town name (e.g. "Manchester") — ask the customer for the full postcode + building number first.
countryNoSet to "TR" for Turkey routes (Istanbul, Sabiha Gökçen/SAW, Istanbul Airport/IST, Antalya, Dalaman, Bodrum, etc.) — these are cash bookings priced in EUR. Omit for UK routes.
car_typeYesThe car type the customer chose from the quote (e.g. "Saloon", "People Carrier", "Executive Saloon") — REQUIRED. Never pick a car for the customer.
suitcasesYesNumber of suitcases / large bags (hand luggage does not count) — REQUIRED. Ask the customer explicitly.
passengersYesExact number of passengers travelling — REQUIRED. Ask the customer explicitly even if they pre-picked the largest car; never assume from car_type.
cruise_nameNoCruise/ship name for cruise port pickups/dropoffs (e.g. "P&O Ventura")
destinationYesDropoff location — full UK postcode + building number/name (e.g. "SL4 5LP, 12 Castle Hill"), full street address, or airport name. NEVER pass a bare city/town name like "Windsor" or "Manchester" — UK cities cover wide areas, pricing and pickup will be wrong. If the customer only gave a city, ask for the full postcode + building number before calling.
door_numberNoHouse/building number or name for postcode destinations (e.g. "12", "Flat 3", "The Old Rectory"). Required when destination is a postcode.
train_numberNoTrain number or origin for train station pickups/dropoffs (e.g. "from Manchester")
flight_numberNoFlight number for airport pickups/dropoffs (e.g. "BA2534")
transfer_dateYesTransfer date (e.g. "2026-03-15"). Ask the user naturally for their travel date and convert to YYYY-MM-DD internally.
transfer_timeYesTransfer time (e.g. "14:30"). Ask the user naturally for their preferred time and convert to HH:MM internally.
passenger_nameYesFull name of the passenger
passenger_emailYesPassenger email address — REQUIRED: it receives the confirmation and, with the booking reference, is the customer's key to manage the booking later.
passenger_phoneYesPassenger phone number with country code (e.g. "+447123456789")
whatsapp_opt_inYesREQUIRED — the customer's actual answer, never assumed. Ask: "May we send your confirmation, driver details and pickup updates to this number on WhatsApp? (reply STOP any time to opt out)". true = yes, false = no (we then use email/phone).
special_requestsNoAny special requirements (e.g. "child seat needed", "extra luggage")
airport_wait_minutesNoAIRPORT PICKUPS: REQUIRED (the tool refuses an airport pickup without it). Minutes after landing the customer wants the driver in the arrivals hall (30 / 45 / 60 / 90 — most choose 60; ~45 European hand-luggage, ~90 long-haul with bags). Explain it like this: the driver is in the terminal at landing + this many minutes and then waits 30 min free (+30 min for £15 on request). Pass the figure the customer agreed and set transfer_time = landing time + this many minutes.
cancel_booking
DestructiveIdempotent
Inspect

Cancel a booking. Free cancellation 12+ hours before pickup — no fee, full refund. Under 12 hours the booking cannot be cancelled online: call +44 20 8688 7744 (6–12 hours before pickup 50% of the fare is charged, under 6 hours there is no refund). Under 12 hours this tool cannot cancel — the customer must call the office. Ask the customer for BOTH their booking reference AND the email address used at booking — same as our website manage-booking login. Do not call this tool without both values.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesPassenger email on the booking — required, must match exactly
reasonNoReason for cancellation
booking_refYesBooking reference — either "APL-<LT reservation id>" (e.g. "APL-1013869", as on the confirmation email) or the numeric LT reservation ID (e.g. "966244"). Both formats accepted.
customer_confirmedYesREQUIRED — must be true. Set it only AFTER you have told the customer exactly which booking (reference, date, route) will be cancelled and that it is free (12+ hours before pickup), and they answered yes. The tool refuses without it.
eu_transfer_quoteGet European Transfer QuoteA
Read-only
Inspect

Get prices for a EUROPEAN / cross-Channel transfer from London/UK to a continental destination (e.g. Ghent, Bruges, Paris, Brussels, Amsterdam, Cologne, Milan, Barcelona). Use this — NOT london_airport_transfer_quote — whenever the destination is OUTSIDE the UK / on the European continent. Returns per-car-type prices, fixed per vehicle, including the Eurotunnel crossing. Prices are FINAL — quote them exactly, no discounts. If the city is not configured the tool returns the list of available EU destinations; in that case tell the customer the team will confirm a price for it.

ParametersJSON Schema
NameRequiredDescriptionDefault
car_typeNoOptional single EU car type (Standard, Electric, People Carrier, Executive, Large PPL, Executive PPL, Minibus, Luxury). Omit for all car types.
hub_codeNoNearest UK departure hub for the UK leg: LHR, LGW, STN, LTN, LCY, SOU. For a London pickup use LHR.
destinationYesEuropean city name (e.g. "Ghent", "Paris", "Brussels")

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavior beyond that: per-car-type fixed pricing, inclusion of the Eurotunnel crossing, a no-discount pricing rule, and the fallback return (list of available EU destinations) when a city is unconfigured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then routing rule, then return/pricing behavior and the fallback path. Dense and mostly waste-free, though the capitalized emphasis and multiple clauses make it longer than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so (per-car-type prices, fixed per vehicle, Eurotunnel included, final prices). It also covers the failure mode and the correct customer-facing response, leaving no obvious gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents car_type, hub_code and destination with their constraints and examples. The description adds only the domain scope for destination (continental city); baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get prices) and resource (European/cross-Channel transfer from London/UK to a continental destination), with example cities. It explicitly distinguishes itself from the sibling london_airport_transfer_quote, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit use condition ('whenever the destination is OUTSIDE the UK / on the European continent') and names the alternative tool to avoid by name. It even covers the edge case of an unconfigured city and what to tell the customer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_nearest_driversFind Nearest DriversA
Read-only
Inspect

Find the closest available drivers to a location using live fleet GPS. Give a target as an airport code (LHR, LGW, STN, LTN, LCY, EDI, SOU, BHX, MAN), a UK postcode, or lat+lng. Returns the nearest available cars (online, not on a job) with straight-line distance and a rough drive ETA. Set min_pax to require a vehicle size. Customers and partner agents get an availability view only — car type (Saloon / People Carrier / 8 Seater, executive flag), seats and a rough ETA rounded to 5 minutes for up to 5 cars, plus a per-car-type summary; NO driver name, vehicle, plate, position, distance or fleet size (driver details are shared only after a booking is confirmed). Staff see the full detail and can include busy drivers.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoTarget latitude (use with lng).
lngNoTarget longitude (use with lat).
limitNoHow many drivers to return (default 5).
airportNoAirport/hub code, e.g. "LHR", "LGW".
min_paxNoOnly vehicles seating at least this many passengers.
postcodeNoUK postcode, e.g. "SW1A 1AA", or just the district, e.g. "SL4".
include_on_jobNoAlso include drivers currently on a job (default false = available only).

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/openWorld/non-destructive), it discloses substantial behavior: role-based visibility (customers/agents get availability-only, staff get full detail), the exact fields suppressed (driver name, vehicle, plate, position, distance, fleet size), an ETA rounded to 5 minutes, a 5-car cap, and the rule that driver details are released only after a booking is confirmed. This is exactly the kind of context structured fields cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and target formats, then the return/visibility rules; it is a dense paragraph rather than a bloated one, and each clause carries information. It runs slightly long, but no sentence is pure padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so fully: what the response contains (car type, seats, rounded ETA, per-car-type summary), what it omits, and how it differs by caller role. An agent has enough to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so 3 is the baseline, but the description adds real meaning the schema lacks: the enumerable set of airport codes, that min_pax enforces a vehicle size tier, that include_on_job is for staff seeking busy drivers, and a customer-facing result cap of 5 cars even though the schema's limit allows 25. That role/limit interaction is important context above the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource ('Find the closest available drivers to a location using live fleet GPS') and scopes it to availability, which implicitly separates it from route/tracking siblings like track_driver and get_driver_route. It never names a sibling explicitly, so an agent gets clarity but not direct routing guidance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It lists the accepted target formats (airport code, postcode, lat+lng) and role-dependent behavior, which implies usage, but gives no explicit when-to-use/when-not or alternatives ('use this instead of X when...'). The agent must infer that this is the pre-booking availability lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_driver_routeGet Driver RouteA
Read-only
Inspect

Get the driver's recorded GPS route (breadcrumb trail) for a booking's trip — the path the driver actually drove, with a distance/duration summary. Use for route playback or to verify a driver attended. Trail is recorded only while the driver is on the job and kept for 30 days. Needs the booking reference (and the passenger email unless you're internal staff using the numeric reservation ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNoPassenger email on the booking (required for partner/customer lookups; optional for internal staff using a numeric reservation ID).
booking_refYesBooking reference — "APL-<LT reservation id>" (e.g. "APL-1013869") or the numeric LT reservation ID.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, openWorld), yet the description still adds real behavioral context beyond them: the trail is recorded only while the driver is on the job, is retained for 30 days, and access depends on whether the caller is internal staff or a partner/customer. Retention window and recording conditions are exactly the kind of operational detail annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what the tool returns and immediately followed by when to use it and the access constraint. The parenthetical gloss on 'breadcrumb trail' earns its place by disambiguating jargon; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return shape itself (the driven path plus a distance/duration summary) and adds retention and authorization constraints. For a two-parameter read tool with annotations, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, and the description's restatement of the email-vs-numeric-ID rule largely mirrors the schema text. It confirms rather than extends parameter meaning, which is the baseline-3 case when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with unusual precision: the driver's recorded GPS route as a breadcrumb trail for a booking's trip, plus a distance/duration summary. The word 'recorded' implicitly separates it from the live sibling track_driver, but no sibling is named explicitly, so it stops short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives two concrete use cases ('route playback', 'verify a driver attended'), which is clear context for when to reach for it. It offers no when-not guidance and does not name track_driver as the alternative for live position, so an agent must infer the boundary itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_service_infoA
Read-only
Inspect

Get information about Airport Pickups London services, policies, vehicles, pricing rules, cancellation, payment, child seats, pets, accessibility, meet and greet, cruise ports, corporate accounts, and any other frequently asked questions. Use this when customers ask about how the service works.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesThe customer question or topic (e.g. "cancellation policy", "child seats", "payment methods", "meet and greet")

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety and lookup scope are covered structurally. The description adds that this surfaces FAQ/policy content, but says nothing about whether the answer is a static knowledge base versus synthesized, nor about truncation or confidence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause and the usage note follows. The long topic list is helpful for retrieval cueing but borders on padding, with "and any other frequently asked questions" adding no information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only lookup with no output schema, the description supplies enough for an agent to call it correctly. Return format is unmentioned but not strictly required given the simple contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage, so the schema already documents the 'question' field and its examples. The topic enumeration in the description loosely mirrors those examples, adding little beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (get information) plus a concrete, enumerated resource (Airport Pickups London services, policies, vehicles, pricing, cancellation, etc.). The topic list makes it unmistakably distinct from the booking-management siblings like amend_booking and cancel_booking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when customers ask about how the service works" gives a clear triggering context. It does not explicitly name alternatives or state when NOT to use it, but the sibling set makes the FAQ role obvious by contrast.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

london_airport_transfer_quoteGet Airport Transfer Quote
Read-only
Inspect

Get London airport transfer prices between a UK airport or cruise port and any UK address or postcode. Covers all London airports (Heathrow, Gatwick, Stansted, Luton, City Airport), Edinburgh Airport, and all major UK cruise ports (Southampton, Dover, Portsmouth); transfers to and from any UK postcode nationwide. Returns every car type with its fixed price (GBP, per vehicle, final), passenger and suitcase capacity, a photo (photo_url = full-size HTTPS image; car_photos at the end of the result = small inline images by car type, for clients that cannot load external images), and — only when passenger and suitcase counts were given — which cars fit and which one is recommended (capacity_assessed tells you). WHAT IS INCLUDED in every price: Meet & Greet in the arrivals hall (driver with a name board; exception Heathrow Terminal 4, where the driver meets the customer OUTSIDE at Zone 1 during the car-park works), flight monitoring, waiting time, airport parking and tolls. PRICES ARE FINAL: quote them exactly as returned — no discounts, no rounding, no "price after discount"; APL offers no ad-hoc discounts. POSTCODE RULE: if the customer gives only a city or town ("Windsor", "Manchester") or just "London" / "central London", ask for the full postcode or a precise address BEFORE calling — UK place names cover wide areas and the price and pickup point would be wrong. London neighbourhoods, landmarks, stations and uniquely identifiable hotel names ARE fine for a quote (Mayfair, Canary Wharf, Kings Cross, The Shard, Hilton Paddington). transfer_date is REQUIRED (the price depends on the date) — ask for it, never guess it. Passengers and suitcases are optional: if you do not know them, leave them out and the result says what is missing. One pickup → one drop-off only; extra stops are not priced here (see the server instructions).

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesPickup location — airport name (e.g. "Heathrow", "Gatwick"), full UK postcode (e.g. "SW1A 1AA"), or full street address. Do NOT pass a bare city/town name — ask the customer for the postcode first.
suitcasesNoNumber of suitcases / large bags (medium suitcases; hand luggage does not count), ONLY if the customer has told you. Same rule as passengers.
passengersNoNumber of passengers, ONLY if the customer has told you. Do not guess or default: without it the result has capacity_assessed:false, no "fits" flags and no recommended car.
destinationYesDropoff location — full UK postcode (e.g. "SL4 5LP" for Windsor), full street address, a London neighbourhood/landmark/station (Mayfair, The Shard, Kings Cross), or a uniquely identifiable hotel/airport name. Do NOT pass a bare city/town name like "Windsor" or "Manchester" — UK cities cover wide areas and the price and pickup point will be wrong. If the customer gave only a city name, ask them for the full postcode before calling this tool.
transfer_dateYesREQUIRED — the customer's travel date as YYYY-MM-DD. You MUST ask the customer for their travel date and have their answer BEFORE calling this tool: the price depends on the date (seasonal / peak-date pricing), so never assume today or guess. Convert their reply (e.g. "25 December", "next Friday") to YYYY-MM-DD.
transfer_timeNoPickup time as HH:MM (Europe/London). Optional for a quote, but pass it whenever you know it: rush-hour rules and the last-minute surcharge (under 3 hours before pickup) depend on it — so always pass it for same-day requests. It is never assumed; the result states the price basis.
lookup_bookingLook Up Booking
Read-only
Inspect

Look up booking details including status, price, payment, driver info, and manage booking URL. For "where is my driver" use track_driver alone (it already includes the journey and the driver) — do not call both for one question. Ask the customer for BOTH their booking reference AND the email address used at booking — same as our website manage-booking login. Do not call this tool without both values. Booking reference can be either the APL-XXXXXX format from the customer's confirmation email, or the numeric LT reservation ID — both work.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesPassenger email on the booking — required, must match exactly
booking_refYesBooking reference — either "APL-<LT reservation id>" (e.g. "APL-1013869", as on the confirmation email) or the numeric LT reservation ID (e.g. "966244"). Both formats accepted.
track_driverTrack Driver
Read-only
Inspect

Get the assigned driver's live GPS position, vehicle details, photo, ETA and the journey (pickup → drop-off, pickup time). This is the COMPLETE answer to 'where is my driver' / 'show me the driver' — call it once and answer from its result; do NOT also call lookup_booking unless the customer asks about the booking itself (price, payment, changes). The card it renders keeps updating by itself, so never call it again just to refresh. GPS updates every 2 minutes with tunnel interpolation. Ask the customer for BOTH their booking reference AND the email address used at booking — same as our website manage-booking login. Do not call this tool without both values.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesPassenger email on the booking — required, must match exactly
booking_refYesBooking reference — either "APL-<LT reservation id>" (e.g. "APL-1013869", as on the confirmation email) or the numeric LT reservation ID (e.g. "966244"). Both formats accepted.
validate_flightValidate Flight NumberA
Read-only
Inspect

Validate a flight number and get flight details including airline name, arrival airport, terminal, and arrival time. Use this to verify a customer's flight number before booking and auto-detect the correct terminal. Works with future scheduled flights.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesFlight date in YYYY-MM-DD format
flight_numberYesFlight number (e.g. "BA2534", "EK007", "FR1234")

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, destructiveHint false, openWorldHint). The description adds a real behavioral limit not in the annotations: it only works with future scheduled flights, which tells the agent when validation will fail. Return payload contents are also previewed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: the first delivers purpose and return fields, the second delivers usage context and the scheduling constraint. No redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the returned fields (airline name, airport, terminal, arrival time), and the date parameter is fully specified in the schema. Only minor gaps remain, such as error behavior for invalid or past flight numbers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both flight_number and date fully documented including format examples, so the schema carries the parameter semantics. The description adds no format or constraint detail beyond what the schema provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (validate a flight number) and enumerates the resulting data (airline, arrival airport, terminal, arrival time). This is unmistakably distinct from the surrounding booking-management siblings without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a concrete use case (verify a customer's flight number before booking, auto-detect the terminal) and a scope constraint (works with future scheduled flights). It does not name an alternative tool, but no sibling overlaps this function, so the guidance is effectively complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedlondon_airport_transfer_quote2 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Dropoff location — full UK postcode (e.g. \"SL4 5LP\" for Windsor), full street address, or a uniquely identifiable hotel/airport name. Do NOT pass a bare city/town/area name like \"Windsor\" or \"Manchester\" — UK cities cover wide areas and the price and pickup point will be wrong. If the customer gave only a city name, ask them for the full postcode before calling this tool."New value: +"Dropoff location — full UK postcode (e.g. \"SL4 5LP\" for Windsor), full street address, a London neighbourhood/landmark/station (Mayfair, The Shard, Kings Cross), or a uniquely identifiable hotel/airport name. Do NOT pass a bare city/town name like \"Windsor\" or \"Manchester\" — UK cities cover wide areas and the price and pickup point will be wrong. If the customer gave only a city name, ask them for the full postcode before calling this tool."
      • changedInput schema / properties / transfer_time / description
        Previous value: -"Pickup time as HH:MM (Europe/London). Optional for a quote: the time of day does not change the price, but transfers less than 6 hours ahead carry a last-minute surcharge — so pass it for same-day requests. It is never assumed; the result states the price basis."New value: +"Pickup time as HH:MM (Europe/London). Optional for a quote, but pass it whenever you know it: rush-hour rules and the last-minute surcharge (under 3 hours before pickup) depend on it — so always pass it for same-day requests. It is never assumed; the result states the price basis."
  2. 1 tool update
    • Changedbook_london_airport_transfer1 field changed
      • changedInput schema / properties / airport_wait_minutes / description
        Previous value: -"AIRPORT PICKUPS: REQUIRED (the tool refuses an airport pickup without it). Minutes after landing the customer wants the driver ready (e.g. 30, 45, 60, 90 — ~45 European, ~60 international). Pass the figure you agreed with the customer; it sets the actual driver wait. Also set transfer_time = landing time + this many minutes."New value: +"AIRPORT PICKUPS: REQUIRED (the tool refuses an airport pickup without it). Minutes after landing the customer wants the driver in the arrivals hall (30 / 45 / 60 / 90 — most choose 60; ~45 European hand-luggage, ~90 long-haul with bags). Explain it like this: the driver is in the terminal at landing + this many minutes and then waits 30 min free (+30 min for £15 on request). Pass the figure the customer agreed and set transfer_time = landing time + this many minutes."
  3. 4 tool updates
    • Changedamend_booking1 field changed
      • removedInput schema / properties / changes / properties / passenger_email
        Removed value: -{
        -  "description": "New email address",
        -  "maxLength": 100,
        -  "type": "string"
        -}
    • Changedbook_london_airport_transfer13 fields changed
      • changedInput schema / properties / airport_wait_minutes / description
        Previous value: -"AIRPORT PICKUPS ONLY: minutes after landing the customer needs (e.g. 30, 45, 60, 90 — ~45 European, ~60 international). Pass the figure you confirmed with the customer; it sets the actual driver wait. Also set transfer_time = landing time + this many minutes. If omitted on an airport pickup the wait can default to only 15 minutes."New value: +"AIRPORT PICKUPS: REQUIRED (the tool refuses an airport pickup without it). Minutes after landing the customer wants the driver ready (e.g. 30, 45, 60, 90 — ~45 European, ~60 international). Pass the figure you agreed with the customer; it sets the actual driver wait. Also set transfer_time = landing time + this many minutes."
      • changedInput schema / properties / airport_wait_minutes / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / car_type / description
        Previous value: -"Car type (e.g. \"Saloon\", \"People Carrier\", \"Executive Saloon\"). Auto-selected if not specified."New value: +"The car type the customer chose from the quote (e.g. \"Saloon\", \"People Carrier\", \"Executive Saloon\") — REQUIRED. Never pick a car for the customer."
      • changedInput schema / properties / passenger_email / description
        Previous value: -"Passenger email address for confirmation"New value: +"Passenger email address — REQUIRED: it receives the confirmation and, with the booking reference, is the customer's key to manage the booking later."
      • addedInput schema / properties / passenger_email / format
        Added value: +"email"
      • removedInput schema / properties / passengers / default
        Removed value: -1
      • changedInput schema / properties / passengers / description
        Previous value: -"Exact number of passengers travelling. MANDATORY for every booking — ask the customer explicitly even if they pre-picked the largest car. Never default to 1 without asking; never assume from car_type."New value: +"Exact number of passengers travelling — REQUIRED. Ask the customer explicitly even if they pre-picked the largest car; never assume from car_type."
      • changedInput schema / properties / passengers / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / properties / suitcases / default
        Removed value: -1
      • changedInput schema / properties / suitcases / description
        Previous value: -"Number of suitcases/large bags. Ask the customer explicitly."New value: +"Number of suitcases / large bags (hand luggage does not count) — REQUIRED. Ask the customer explicitly."
      • changedInput schema / properties / suitcases / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / whatsapp_opt_in / description
        Previous value: -"Whether the customer agreed to receive their booking confirmation, driver details and pickup updates on WhatsApp at passenger_phone (tell them: \"Airport Pickups London will send your booking updates to this number on WhatsApp; reply STOP to opt out\"). Default true. Pass false if they declined — we then keep the record and contact them by email/phone instead."New value: +"REQUIRED — the customer's actual answer, never assumed. Ask: \"May we send your confirmation, driver details and pickup updates to this number on WhatsApp? (reply STOP any time to opt out)\". true = yes, false = no (we then use email/phone)."
      • changedInput schema / required
        Previous value: -[
        -  "origin",
        -  "destination",
        -  "transfer_date",
        -  "transfer_time",
        -  "passenger_name",
        -  "passenger_phone"
        -]New value: +[
        +  "origin",
        +  "destination",
        +  "transfer_date",
        +  "transfer_time",
        +  "passenger_name",
        +  "passenger_phone",
        +  "passenger_email",
        +  "passengers",
        +  "suitcases",
        +  "car_type",
        +  "whatsapp_opt_in"
        +]
    • Changedcancel_booking2 fields changed
      • addedInput schema / properties / customer_confirmed
        Added value: +{
        +  "description": "REQUIRED — must be true. Set it only AFTER you have told the customer exactly which booking (reference, date, route) will be cancelled and that it is free (12+ hours before pickup), and they answered yes. The tool refuses without it.",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "booking_ref",
        -  "email"
        -]New value: +[
        +  "booking_ref",
        +  "email",
        +  "customer_confirmed"
        +]
    • Changedlondon_airport_transfer_quote7 fields changed
      • removedInput schema / properties / passengers / default
        Removed value: -1
      • changedInput schema / properties / passengers / description
        Previous value: -"Number of passengers (determines recommended car type)"New value: +"Number of passengers, ONLY if the customer has told you. Do not guess or default: without it the result has capacity_assessed:false, no \"fits\" flags and no recommended car."
      • changedInput schema / properties / passengers / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / properties / suitcases / default
        Removed value: -1
      • changedInput schema / properties / suitcases / description
        Previous value: -"Number of suitcases/large bags (helps recommend the right car)"New value: +"Number of suitcases / large bags (medium suitcases; hand luggage does not count), ONLY if the customer has told you. Same rule as passengers."
      • changedInput schema / properties / suitcases / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / transfer_time / description
        Previous value: -"Transfer time (e.g. \"14:30\"). Ask the user naturally for their preferred time and convert to HH:MM. Defaults to now."New value: +"Pickup time as HH:MM (Europe/London). Optional for a quote: the time of day does not change the price, but transfers less than 6 hours ahead carry a last-minute surcharge — so pass it for same-day requests. It is never assumed; the result states the price basis."
  4. 1 tool update
    • Changedfind_nearest_drivers1 field changed
      • changedInput schema / properties / postcode / description
        Previous value: -"UK postcode, e.g. \"SW1A 1AA\"."New value: +"UK postcode, e.g. \"SW1A 1AA\", or just the district, e.g. \"SL4\"."
  5. 11 tool updates
    • First observedamend_booking
    • First observedbook_london_airport_transfer
    • First observedcancel_booking
    • First observedeu_transfer_quote
    • First observedfind_nearest_drivers
    • First observedget_driver_route
    • First observedget_service_info
    • First observedlondon_airport_transfer_quote
    • First observedlookup_booking
    • First observedtrack_driver
    • First observedvalidate_flight

Publisher details

Operator
Airport Pickups London · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Unknown
Restrictions
Public MCP access requires no registration, subject to service limits. Optional API-key and OAuth access is available. Transfer fares are payable separately. Booking management requires the booking reference and passenger email; cancellation conditions apply. · Publisher source

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to get fixed-price quotes and book London airport transfers, with flight validation and inter-agent communication via A2A protocol.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Fixed London chauffeur prices for AI agents: Heathrow/Gatwick/Stansted/Luton and cruise-port transfers, hourly and full-day hire, private day trips, Heathrow VIP meet & greet, plus pre-filled booking links. Public remote endpoint, no API key.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI assistants to search flights and hotels, compare travel dates, explore destinations, and look up airport codes via a local MCP server, with results including prices and links.
    16
    690 PyPI
    11
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources