Installation
Set up the Otto Travel MCP server in Gumloop
Do this once to provision your hosted server URL.
Create a Gumloop account
To use this MCP, you need a Gumloop account. If you don't have one yet, sign up and start a 14-day free trial.
Add and authorize the Otto Travel server
In Gumloop, open Connectors and add Otto Travel. Depending on the app, you'll either sign in via OAuth or paste an API key. Either way, the credential is stored securely in Gumloop.
Then use it in your client
Use in GumloopUse Otto Travel in an agent
Once Otto Travel is set up, just open any Gumloop agent, add Otto Travel as a connector, and start chatting with the agent.
Tools (17)
Read Skill
Read 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). Pass ALL values from the returned `keys` list in the `skill_keys` param of subsequent tool calls — 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_exchange, car_search, delegate_access, flight_booking, flight_exchange, flight_search, getting_started, hotel_booking, hotel_exchange, hotel_search, preferences, seat_selection
Search Flights
Search 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.
Query Flights
Filter 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).
Book Flight
Book 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.
Search Hotels
Search 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).
Get Hotel Rooms
Load 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.
Book Hotel
Book 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.
Search Cars
Search 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. On thin results (<3 cars), relax filters a rung and re-search (see car_search skill). All rates are paid at the counter — booking only guarantees the reservation. Pass booking_id to search replacement cars for an existing rental (exchange).
Book Car
Reserve 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. Pass booking_id to modify an existing rental in place (exchange) — the original reservation is superseded by the new car; no second booking is created.
Get Bookings
Retrieve the user's confirmed flight and hotel bookings with live status and confirmation codes.
Cancel Booking
Cancel 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.
Task Status
Poll an async task with long-polling. Blocks up to timeout_ms waiting for progress. Returns current step, progress, and final result when complete.
Ship Otto Travel agents in minutes
Connect any AI agent to 100+ MCP servers, zero setup.