{"name":"Vuelo Travel","description":"Search, price and book flights and hotels. Vuelo returns structured offers and bookable prices, creates orders, and texts the traveller a secure link to confirm and pay on their own phone; eligible trips can be paid with a Vuelo payment plan, applied for on Vuelo's page. No key needed. Also over HTTPS (OpenAPI) and MCP. Vuelo for AI agents is in early access. Search is open to any agent now, with no key. Booking is open to invited partners first: request access at https://mcp.getvuelo.com/agents#request-access or by email to agents@getvuelo.com.","supportedInterfaces":[{"url":"https://mcp.getvuelo.com/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://mcp.getvuelo.com/a2a","protocolBinding":"JSONRPC","protocolVersion":"0.3"}],"provider":{"organization":"Vuelo Financial Services UK Limited (trading as Vuelo)","url":"https://getvuelo.com"},"version":"3.0.0","documentationUrl":"https://mcp.getvuelo.com/agents","iconUrl":"https://mcp.getvuelo.com/agent-channel/icon-512.png","capabilities":{"streaming":true,"pushNotifications":true,"extendedAgentCard":true,"extensions":[{"uri":"https://vuelo.co/a2a/ext/regulated-handoff/v1","required":true,"description":"Rules for showing payment options and handing the traveller to Vuelo.","params":{"rules":["Display payment options verbatim, as Vuelo returns them: show payment_options.text (or each option's display) exactly as written, and never rephrase an option.","Never compute or estimate amounts, APR or eligibility.","Never imply that credit is approved.","Always show the price in full.","Every credit step happens only on the Vuelo handoff, never in the chat.","Payment options are for UK residents only.","Where an offer has a payment plan, show approvedCopy.payment_plan verbatim beside it, and say nothing else about the plan.","Offer a payment plan only to a traveller who asks how they can pay or to spread the cost, and book one only when they have chosen it.","Never pass the traveller's answers about income, spending or credit to Vuelo in the chat; Vuelo asks for them on its own page."],"approvedCopy":{"payment_plan":"A Vuelo payment plan is available for this trip, for UK residents, subject to status. The plans, their cost, the eligibility check and the agreement are shown only on Vuelo's secure page. Nothing is agreed in this chat."},"paymentPlan":{"nextSteps":"On Vuelo's page the traveller sees the plans on offer, a soft search (which does not affect their credit score) checks eligibility, and they sign the agreement before the first payment. If no plan can be offered, they can still book by paying another way.","residency":"GB"}}}]},"securitySchemes":{"platformClientCredential":{"httpAuthSecurityScheme":{"scheme":"Bearer","description":"Optional. A partner key for higher limits and your own task list. Without one, any agent can call Vuelo within the anonymous limits."}}},"securityRequirements":[{"schemes":{}},{"schemes":{"platformClientCredential":{"list":[]}}}],"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["text/plain","application/json"],"skills":[{"id":"find_trip","name":"Find and book a trip","description":"Send a travel request in words: destination, dates, travellers, budget and any terms (refundable, star rating, flights from an airport). Vuelo searches live flights and hotels and answers with the best options as structured offers. Reply in the same context to choose one and how to pay: in full, reserve now, or a Vuelo payment plan where the offer has one. Vuelo then texts the traveller a secure link and the task waits (auth-required) until they confirm on their phone; a plan is chosen, checked and agreed there, never in the chat. If Vuelo needs something, the task is input-required.","tags":["travel","flights","hotels","booking","agent"],"examples":["Find the best four-night Lisbon trip for two people from London, 14 to 18 May, between £800 and £1,200.","Find me a refundable 5-star hotel in Lisbon from 14 to 18 May for two people, under £1,200. Give me the best three options."],"inputModes":["text/plain"],"outputModes":["text/plain","application/json"]},{"id":"search_flights","name":"Search flights","description":"Live flight inventory and prices. Data part { skill: \"search_flights\", input: { origin, destination, departure_date, return_date?, travellers, preferences?, sort?, limit? } }, as the HTTPS API.","tags":["travel","flights","search"],"examples":["{\"skill\":\"search_flights\",\"input\":{\"origin\":\"LHR\",\"destination\":\"LIS\",\"departure_date\":\"2026-11-13\",\"return_date\":\"2026-11-16\",\"travellers\":[{\"type\":\"adult\"},{\"type\":\"adult\"}]}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"search","name":"Search the market (Voya)","description":"One search across Vuelo and its partners for a hotel or a flight, from fields or the traveller's own words. Each result has its best offer, the saving against Vuelo's own price, why it won and how it would be booked. { skill: \"search\", input: { query?, vertical?, destination?: { city }, check_in?, check_out?, adults?, objective?, constraints? } }. The full input is the VoyaSearchRequest schema in the OpenAPI description, validated the same way on every transport.","tags":["travel","hotels","flights","search"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"book","name":"Book from a search (Voya)","description":"Book an offer from a search: Voya quotes it again, compares it once more and books by the best route; the traveller confirms on Vuelo's secure page. { skill: \"book\", input: { search_id, offer_id, contact: { mobile }, travellers } }. The full input is the VoyaBookRequest schema in the OpenAPI description.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_trip","name":"Get a trip (Voya)","description":"One Voya trip, with every booking made for it, however each was booked. { skill: \"get_trip\", input: { trip_id } }.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"search_hotels","name":"Search hotels","description":"Live hotel availability and prices. Each offer has page_url, a public page of photos and details to send the traveller in WhatsApp or any chat. { skill: \"search_hotels\", input: { destination: { city, country }, check_in, check_out, rooms, preferences?, sort?, limit? } }.","tags":["travel","hotels","search"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_offer","name":"Get offer","description":"One offer, with its payment options. { skill: \"get_offer\", input: { offer_id } }.","tags":["travel"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"revalidate_offer","name":"Revalidate offer","description":"Is the offer still bookable at this price? { skill: \"revalidate_offer\", input: { offer_id, expected_total } }. A price change needs the traveller's confirmation.","tags":["travel","pricing"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_payment_options","name":"Payment options","description":"Ways to pay for an order. A payment plan is only ever available to apply for, on Vuelo's page. { skill: \"get_payment_options\", input: { order_id } }.","tags":["travel","payments"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"create_order","name":"Create order","description":"Create an order. Vuelo books at once inside a mandate the traveller gave you (send consumer_ref), or asks them to approve with their passkey on Vuelo's screen (next_action passkey_approval: show them the url), or texts them a secure link. { skill: \"create_order\", input: { offer_id, expected_total, payment_option, consumer_ref?, contact: { mobile }, travellers } }. The full input is the VoyaBookRequest schema in the OpenAPI description.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"change_payment_option","name":"Change payment option","description":"When the traveller wants to pay a different way before they confirm. The link already texted opens with the new option. { skill: \"change_payment_option\", input: { order_id, payment_option } }.","tags":["travel","payments"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"cancel_order","name":"Cancel order","description":"Call off an order the traveller has not confirmed: the texted link stops working, nothing is booked or charged, and the same trip can be ordered again. Use it when they change their mind before confirming, or when an order cannot be resent and needs replacing. { skill: \"cancel_order\", input: { order_id } }.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"resend_link","name":"Resend link","description":"When the traveller says the secure link has not arrived, or asks for another: Vuelo texts it again to the same number, or cancels it and texts a fresh one if it was opened or has expired. Only the newest works; at most three an order. { skill: \"resend_link\", input: { order_id } }.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_order","name":"Get order","description":"Where an order is, and the booking once confirmed. { skill: \"get_order\", input: { order_id } }.","tags":["travel","booking"],"inputModes":["application/json"],"outputModes":["application/json"]}]}