airport_picker
ChatGPTResolve a SINGLE city name or airport code to Jettly airport records. Use this ONLY when you do NOT yet have the whole trip — e.g. the user named one city and you still need the other city, the date, or the passenger count before a search is possible. If you already know the full trip (all cities + date(s) + passengers), use route_picker instead — it resolves every city at once and runs the search on one surface without a composer interruption. If only one airport matches, it auto-selects. If multiple match, a disambiguation card lets the user pick. Examples (single city, trip not yet complete): "I'm thinking about flying out of Teterboro", "what airports are near Cabo?", "is there private service from PWK?"
handoff_card
ChatGPTGenerate a Jettly checkout URL for the user's selected aircraft. The URL opens a pre-filled booking page on Jettly where the user completes payment. Call this when the user selects an aircraft and is ready to book. Requires search_id and aircraft_id from jet_carousel results.
jet_carousel
ChatGPTSearch available private jets for one or more flight legs. Returns aircraft with real pricing, specs, operator info, and photos in a visual carousel. Call this AFTER airport_picker has resolved both departure and arrival airports. Use the airport IDs returned by airport_picker. Accepts an array of flight legs — supports one-way (1 leg), round-trip (2 legs), and multi-leg (3+ legs). Do NOT call aircraft-carousel or price-range-guide instead — this tool replaces those for the top-of-funnel booking flow. The departure_airport_id and arrival_airport_id must be valid IDs from airport_picker results.
route_picker
ChatGPTResolve all airports for a COMPLETE private-jet trip and search availability in one step. Use this the moment you know the full trip: every city (departure and arrival for each leg), the date(s), and the passenger count. Pass one entry per leg. One-way = 1 leg, round-trip = 2 legs (A->B then B->A), multi-city = 3+ legs. Reference cities by name or code in departure_query / arrival_query; this tool resolves them to Jettly airports, lets the user pick when a city has multiple airports, and then searches jets directly inside the widget — you do NOT need to call jet_carousel yourself afterward. Prefer this over calling airport_picker city-by-city: it avoids one tool call per city and keeps airport selection on a single surface. Examples: "private jet from New York to Miami next Friday for 4", "round trip SF to Aspen Dec 12 back Dec 15 for 6", "NYC to Vegas to LA to NYC for a bachelor weekend, 8 guys"
show_business_info
ChatGPTUse this when the user asks for general business profile information. Displays a read-only business information widget with business name, description, email, phone, address, and website. Use this tool for requests like: 'Tell me about your business', 'What is your phone number?', 'What is your website?'. Do NOT use for detailed policy/procedure questions (use ask_question tool instead). DO NOT use for map/location exploration (use show_locations tool instead).
show_products
ChatGPTUse this when the user wants to browse what products or services the business offers. Displays an interactive product catalog widget with names, descriptions, pricing, images, and product actions. Catalog browsing is read-only; purchases are not completed through this tool. Use optional filters to narrow results: search, category, min_price, and max_price. Use this tool for requests like: 'What products do you sell?', 'Show me services under $300', 'Do you have running shorts?'. If the user requests a general catalog view, call with no filters to return all available products/services. Do NOT use for submitting inquiries (use submit_contact_form tool instead). DO NOT use for scheduling appointments (use book_appointment tool instead).
submit_contact_form
ChatGPTUse this when the user wants to contact the business or send a direct inquiry. Displays an interactive contact form widget that collects name, email, phone (optional), and message. This tool supports two modes: interactive form display and explicit submission. Use name, email, phone, and message for both context-derived prefill and explicit submission. Submission mode is triggered only when name, email, and message are provided together; otherwise the widget opens for interactive completion. Form submission is explicitly triggered by the user in the widget or by an explicit user request to submit now. Use this tool for requests like: 'I want to contact you', 'I want to discuss this', 'Send this message to the business'. Do NOT use for booking appointments (use book_appointment tool instead). DO NOT use for listing products/services (use show_products tool instead).