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
11. 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, tell them: "No problem! Extra stops will change the price — let me get you an updated quote." Then call london_airport_transfer_quote again with the full route.
12. 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.
13. Confirm all details with the customer, then call book_london_airport_transfer
14. 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.