book_car
ChatGPTReserve a rental car (pay-at-pickup — nothing is charged at booking). Confirm vendor, class, dates, locations, and total price with the user before calling. Search ids expire in ~15 minutes; book promptly after search_cars.
book_flight
ChatGPTBook the selected flight using the user's saved payment method and returns a PNR confirmation. For round-trip, book the return flight_id — it books both legs.
book_hotel
ChatGPTBook the selected hotel room using the user's saved payment method and returns a reservation confirmation. Confirm price and cancellation policy with the user before calling.
cancel_booking
ChatGPTCancel a flight, hotel, or car rental booking. Two-step flow: first call with confirmed=false to see cancellation details (refund, fees, policy), then confirmed=true to execute. Irreversible — always confirm with user before executing. Requires booking_management skill key.
get_bookings
ChatGPTRetrieve the user's confirmed flight and hotel bookings with live status and confirmation codes.
get_hotel_rooms
ChatGPTLoad the bookable room options for one or more hotels with prices, bed types, and cancellation policies. These rates ARE bookable quotes (unlike search_hotels which only previews a 'from' anchor). ALWAYS call this tool to surface room options once the user has picked a hotel (or a small shortlist) — the search_hotels brief alone is not enough to book. Present the top 3 rooms as a numbered list and wait for the user to pick — typically the cheapest refundable, the cheapest overall, and one notable upgrade. Do NOT call book_hotel on a room you chose yourself, even if the user said 'book the cheapest' or 'book the best'. See the hotel_search skill for the full presentation rule.
query_flights
ChatGPTFilter the previously returned flight search results with SQL to find specific options by price, time, airline, stops, or seat availability. ALWAYS call this tool to present or refine flight options — search_flights alone returns only a summary brief and a queryable handle; this tool is the only path to the actual flight rows. Call it immediately after search_flights completes to present the first set of options, and again whenever the user refines criteria (e.g. switches airline, narrows times, asks for cheaper fares). Do NOT keep polling task_status after search completes — once the task_status response carries a result with a handle, your next step is this tool. Present results conversationally; keep summaries concise (top 2–4 options with price, route, and a single distinguishing detail each).
read_loyalty_programs
ChatGPTRead your stored frequent flyer and hotel loyalty program numbers.
read_preferences
ChatGPTRead your stored travel preferences as a human-readable summary.
read_skill
ChatGPTRead a skill guide before using tools. ALL other tools require skill keys from this tool. Call this ONCE per flow. The response bundles every key needed for the tools the skill unlocks (including universal prerequisites). MANDATORY: every subsequent tool call must include `skill_keys` set to the exact `keys` list from this response. Pass the whole list — do NOT pick a single string, do NOT omit the param, do NOT regenerate the keys. The same keys list works for every tool the skill unlocks during this conversation. Do NOT call read_skill again to fetch a missing prerequisite key; the bundle already includes it. After reading, immediately proceed with the user's request using the unlocked tools — do NOT re-confirm with the user before running a read-only search. Available skills: booking_management, car_booking, car_search, flight_booking, flight_exchange, flight_search, getting_started, hotel_booking, hotel_exchange, hotel_search, preferences, seat_selection
search_cars
ChatGPTSearch rental cars at a location. Returns pay-at-pickup options, cheapest first. Driver age comes from the user's saved profile (date of birth) — there is no age parameter. If the profile has no DOB the search returns PROFILE_INCOMPLETE; ask the user to complete their profile rather than guessing an age. All rates are paid at the counter — booking only guarantees the reservation.
search_flights
ChatGPTSearch live, bookable flight inventory between two airports for given dates and cabin. Returns a queryable handle plus a brief — use query_flights next to filter results.
search_hotels
ChatGPTSearch live, bookable hotel inventory by location and dates. Returns up to 50 hotels sorted by price. Each hotel's nightly_rate / total_rate is the lowest available rate Spotnana found at the property — a 'from' preview for sorting and shortlisting, NOT the rate the user books. The actual bookable rate ladder is only available via get_hotel_rooms. Render search-hotels prices as 'from $X/night' in prose so the user understands the anchor. ALWAYS call this tool to present hotel options the moment the user asks for hotels, and again whenever they refine criteria (e.g. switches brand, narrows location, asks within budget). Present results conversationally; keep summaries concise (top 4 options with name, 'from' price, and a single distinguishing detail each).
task_status
ChatGPTPoll an async task with long-polling. Blocks up to timeout_ms waiting for progress. Returns current step, progress, and final result when complete.
write_loyalty_program
ChatGPTAdd or remove a frequent flyer or hotel loyalty program number.
write_preference
ChatGPTAdd, remove, or update travel preferences using plain language.
book_flight
Claudebook_hotel
Claudecancel_booking
Claudeget_bookings
Claudeget_hotel_rooms
Claudequery_flights
Clauderead_loyalty_programs
Clauderead_preferences
Clauderead_skill
Claudesearch_flights
Claudesearch_hotels
Claudetask_status
Claudewrite_loyalty_program
Claudewrite_preference
Claude