Create a booking intent — returns a deep-link the user clicks to complete the booking on autonomad.ai. Signing up is free, with no trial and no subscription. ALWAYS call this instead of trying to book directly through MCP — bookings require payment + identity verification that must happen on the web.
WHEN TO CALL — two distinct triggers:
(a) PICK intents (flight / hotel / activity / event / trip): call AFTER the user has chosen a specific offer.
(b) BROWSE intent ('experiences'): call IMMEDIATELY in the SAME assistant turn that you ran search_activities and/or search_events for a browse query. Do NOT wait for the user to ask 'where's the link?' — the user already told you they want this when they asked to browse. Showing search results without also producing the deep-link is a UX failure: it forces the subscriber to manually request something they already implicitly asked for.
INTENT TYPE GUIDE — pick exactly one:
- 'flight' → user picked a flight only. offer_data = the flight offer object verbatim from search_flights, PLUS a top-level `passengers: <number>` field (the number of travelers the user originally requested — search_flights individual offers don't echo this back, so you must add it explicitly).
- 'hotel' → user picked a hotel only. offer_data = the hotel offer object verbatim from search_hotels (or just {city, check_in, check_out} if you want to send them to a hotel-search results page rather than a specific hotel). Include `adults: <number>` and `rooms: <number>` so the booking page pre-fills the right party size.
- 'activity' → user picked a Viator activity. offer_data = the activity offer.
- 'event' → user picked a Ticketmaster/SeatGeek event. offer_data = the event offer.
- 'trip' → user picked MULTIPLE things together (e.g. flight + hotel for the same trip). Pack them in offer_data as { flight: { ...offer, passengers: <n> }, hotel: { ...offer, adults: <n>, rooms: <n> }, activities: [<activity_offer>, ...] } — only include the keys the user actually picked. ONE deep-link covers all of them.
- 'experiences' → BROWSE intent. The user wants to look at all activities AND events for a destination + date window WITHOUT picking a specific one. STRONGLY PREFER this over picking one activity yourself when the user asks to 'browse', 'see what's available', 'look at experiences in X', or just describes a destination/date range with no specific tour name. offer_data shape: { destination: 'City, Region', date_from: 'YYYY-MM-DD', date_to: 'YYYY-MM-DD', travelers?: <number>, activity_keywords?: [...], event_categories?: [...] }. The deep-link lands the subscriber on autonomad.ai's add-ons step with destination + dates pre-filled, where Viator activities and Ticketmaster/SeatGeek events for the area are surfaced together — and they can edit dates / traveler count inline. Use this whenever the subscriber's intent is 'show me everything', not 'I want this one specific tour'.
Prefer 'trip' when the user said something like 'book me a flight and hotel for X' and you have both picked. Prefer 'experiences' when the user is asking to BROWSE activities/events without picking one (e.g. 'experiences between July 9 and July 13 near Stintino' → ONE deep-link, not 24 individual activity intents). Don't generate two separate intents (flight + hotel) for the same trip — that produces two deep-links and a confusing user experience.
USER-FACING REPLY REQUIREMENTS — every time you create a booking intent, your reply text MUST include:
1. The deep_link as a clickable markdown link, e.g. '[Complete on autonomad.ai →](<deep_link>)' or 'Open: <deep_link>'.
2. That the account is free. Autonomad costs the traveller nothing — no subscription, no trial, no card required to sign up; they pay only for the travel they book. NEVER describe a trial, a free month, or Premium: none of those exist, and promising one is a claim we cannot honour.
3. The link expiry window (e.g. '~30 minutes — say the word and I'll regenerate if it lapses.').
CRITICAL: always echo the original passenger / adults / travelers count into offer_data. Without it the booking page defaults to 2 travelers regardless of what the user asked for.