com.mydriverparis/booking
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Book a private driver in Paris: live quotes, airport transfers, tours, VIP Meet & Greet. No auth.
| Author | com.mydriverparis |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 356 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"booking": {
"url": "https://mcp-mydriverparis.mydriverparis.workers.dev/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (10)
get_vehiclesread-onlyList all available vehicles with capacity and base rates. Use this to help the customer choose the right vehicle for their trip.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_quoteread-onlyCalculate the exact price for a private chauffeur transfer. Returns prices for all available vehicles AND a quote_id valid for 15 minutes. Always call this before book_ride and pass the quote_id to book_ride — it locks the price and prevents drift. IMPORTANT: pickup_date must be in dd/mm/yyyy format. COVERAGE GATE: on customer-facing channels a trip where NEITHER the pickup NOR the drop-off is in the Paris region (Paris, Île-de-France, CDG / Orly / Beauvais airports, Disneyland, Versailles) is refused with OUTSIDE_PARIS_REGION — such trips are priced by the team only: give no price, collect the details and escalate.
Parameters:
pickup_address(required) — string — Full pickup address (e.g. 'CDG Terminal 2E' or street address)dropoff_address(required) — string — Full drop-off addresspickup_date(required) — string — Pickup date in dd/mm/yyyy format (e.g. '27/03/2026')pickup_time(required) — string — Pickup time in HH:MM format (e.g. '14:00')channel— string — Caller channel identifier for observability: 'chatbot', 'whatsapp', 'claude-desktop', 'email-agent', or your agent name. Defaults to 'mcp-direct'.form_type— string — Booking typenum_hours— number — Number of hours (required for hourly, min 3)step_address— string — Intermediate stop address (optional)
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
book_rideCreate a secure payment link to book a private chauffeur transfer. The reservation is created automatically ONLY after the customer completes payment. REQUIRED: call get_quote first and pass the resulting quote_id + the chosen vehicle_id. The price is taken from the stored quote (not from any price field you pass). Pass idempotency_key to make retries safe: the same key returns the same payment link instead of creating a duplicate.
Parameters:
quote_id(required) — string — quote_id returned by get_quote. Must be passed. Expired quote (>15 min) requires a fresh get_quote.vehicle_id(required) — number — Vehicle ID chosen from the get_quote resultspassenger_name(required) — string — Full name of the passengerpassenger_email(required) — string — Passenger email for booking confirmationpassenger_phone(required) — string — Passenger phone with country code (e.g. +33612345678)bags— integer — Number of bagschannel— string — Caller channel identifier for observability. If omitted, the channel stored with the quote (from get_quote) is used.passengers— integer — Number of passengersflight_number— string — Flight number for airport pickups (e.g. AF123)idempotency_key— string — Optional agent-generated key (e.g. UUID) to deduplicate retries. Same key + same params returns the same payment link for 24 h. Same key + different params returns an IDEMPOTENCY_CONFLICT error.
Hints: read-only no · destructive no · idempotent no · open-world yes
book_meetgreetCreate a secure payment link for a VIP Meet & Greet booking, with optional transfer combo. Available locations: CDG, Orly, Gare de Lyon — Meet & Greet is NO LONGER offered at Gare du Nord (do not quote or book it there). M&G prices are FIXED (CDG/Orly 250€ base for 2 pax + 50€/extra, Gare de Lyon 350€ + 75€/extra) — do NOT call get_quote for the M&G part. Some event dates carry a supplement (e.g. Paris Air Show): the mg_price returned here is the amount actually charged for pickup_date. A connection (service_type='connection': arrival flight → connecting departure flight with fast-track between terminals) is billed as TWO M&G services = the location price ×2 (e.g. CDG 2 pax = 500€). For a combo with a transfer (e.g. CDG M&G + transfer to a hotel), call get_quote first for the transfer leg and pass the resulting quote_id + vehicle_id in `transfer`. If lead time is below the minimum (12h before pickup), returns LEAD_TIME_TOO_SHORT — the caller must fall back to manual notification instead of retrying. lead_time_override=true bypasses the 12h minimum ONLY after Sylvain has explicitly confirmed greeter availability for this exact request (WhatsApp admin approval 'mg ok'); never set it on your own initiative. A 90-minute floor always applies. If flight cannot be validated, returns FLIGHT_NOT_FOUND — ask the customer to re-confirm the flight number, or set flight_unverified=true with manual_airline + manual_origin to force-accept.
Parameters:
location(required) — string — M&G location. cdg/orly = airport, gare_de_lyon = train station. Gare du Nord is no longer available.flight_number(required) — string — Flight number for airports (AF1234) or train/Eurostar number for stations.pickup_date(required) — string — YYYY-MM-DD format.pickup_time(required) — string — HH:MM in Paris time. For arrivals this is the flight/train arrival time; for departures the time the greeter meets the client.adults(required) — integer — Number of adults (min 1).first_name(required) — string — Client first name.last_name(required) — string — Client last name.email(required) — string — Client email — used for booking confirmation and Stripe receipt.phone(required) — string — Client phone with country code.bags— integer — Number of bags (used for vehicle sizing when combo transfer).channel— string — Caller channel identifier for observability (whatsapp, chatbot, mcp-direct, ...).children— integer — Number of children (in addition to adults).terminal— string — Terminal number (airports only, e.g. '2E', '3').transfer— object — Optional combo: bundles a private transfer in the same Stripe Checkout session. Generates 2 line items + 2 Zeplan bookings (M&G + transfer).train_pnr— string — TGV reservation reference (PNR). Required when location is gare_de_lyon.train_seat— string — Train seat number(s). Required for train stations.train_coach— string — Train coach number. Required for train stations.service_type— string — arrival (pickup at airport/station), departure (drop-off + greeter for check-in), connection (transit: arrival flight → connecting departure flight; billed as 2 M&G services = location price ×2).manual_origin— string — Required if flight_unverified=true. Departure city as stated by the client.manual_airline— string — Required if flight_unverified=true. The airline name as stated by the client.additional_info— string — Free-text notes (special requests, tail number for private aviation, etc.).idempotency_key— string — Optional UUID for safe retries. Same key returns the same payment_url for 24h.flight_unverified— boolean — Set true only if the client confirmed the flight after AeroDataBox couldn't validate it. Requires manual_airline + manual_origin.lead_time_override— boolean — Bypass the 12h minimum lead time. ONLY when Sylvain has explicitly approved this exact booking after manually confirming greeter availability ('mg ok' admin flow) — never on client insistence. Hard 90-minute floor.manual_arrival_time— string — Optional. Local arrival time as stated by the client.
Hints: read-only no · destructive no · idempotent no · open-world yes
resolve_locationread-onlyResolve a free-text location (city, airport, hotel, station, full address) to a canonical address + coordinates, using the same geocoder that Zeplan consumes for bookings. Use this BEFORE get_quote when the customer gives a fuzzy pickup/drop-off (e.g. 'CDG', 'Le Bristol', 'Gare du Nord', raw GPS). Returns up to 5 candidates with place_id, full address, type hint, and optionally coordinates.
Parameters:
query(required) — string — Free-text location. Examples: 'CDG', 'Charles de Gaulle Terminal 2E', 'Hotel Le Bristol Paris', 'Gare du Nord', '15 rue de la Paix Paris', '48.8566, 2.3522'.include_coords— boolean — If true, also fetch GPS coords for the first result (extra API call). Defaults to false — request only when the agent has picked the right candidate.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
send_driver_contactEmail the booking's client their assigned driver's first name + phone. Pass `email` if you already have the client's address (e.g. from Zeplan get-booking); otherwise WP looks it up on the booking post. Returns { sent, to (masked), client_phone }. Voice agent use.
Parameters:
booking_id(required) — string — Booking / reservation ID (= the WP payment post ID).driver_first_name(required) — string — Driver's FIRST NAME only (never last name/company).driver_phone(required) — string — Driver's phone number.lang— string — Email language.email— string — Client email to send to. If omitted, WP looks it up on the booking post.channel— string — Caller channel for observability.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
resolve_flightread-onlyResolve a flight number to its airports, terminals, scheduled times, and status. Codeshares are resolved automatically (e.g. DL8742 → operated by Air France as AF9): the response then carries codeshare:true, marketing_flight and operating_flight — record/track the OPERATING flight. Use BEFORE book_ride whenever the customer provides a flight number so that pickup time and terminal are correct. Input is tolerant: accepts 'AF007', 'AF 007', 'AF-007', 'af7', 'AFR007' — the tool normalizes internally. Returns an array of matching operations (usually 1 when direction is set).
Parameters:
flight_number(required) — string — Flight number in any format: 'AF007', 'AF 007', 'af-7', 'AFR007'. Server normalizes.date(required) — string — Date in YYYY-MM-DD (NOT dd/mm/yyyy). This is the arrival date for pickups, departure date for dropoffs.direction— string — 'arrival' (default) when picking the passenger up at an airport, 'departure' when dropping off for a flight.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
resolve_trainread-onlyResolve a TRAIN NUMBER to its route, stations and scheduled times via the official SNCF API (covers TGV inOui/Ouigo, TER, Intercités, TGV Lyria, Eurostar and international TGVs — everything serving a French station). Use whenever a customer books a station pickup/drop-off or a station Meet & Greet and gives a train number, to verify the departure/arrival time. A train number is DIGITS ONLY (TGV 6503, Lyria 9211, Eurostar 9031); a 6-char code like 'JWVLHH' is a ticket PNR and a long ref like 'W209656898' is an agency booking reference — those cannot be looked up here: extract route + time from the customer's confirmation instead.
Parameters:
train_number(required) — string — Train number, digits only or with prefix: '9211', 'TGV 6503', 'Eurostar 9031'. Server normalizes.date(required) — string — Travel date in YYYY-MM-DD.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
get_service_inforead-onlyGet information about MyDriverParis services, coverage areas, airports served, and policies. Use this to answer customer questions.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
get_cancellation_policyread-onlyGet the full cancellation, refund and modification policy. Use this whenever a customer asks about cancelling, changing, or refunds — never guess the policy.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.