MCP Server

VoyageHacks

com.voyagehacks/travel
Search & Research Travel & Hospitality Public & reachable MCP 2026-07-28

What this MCP does

Searches travel guides and provides destination-specific booking links, transfer, hotel, flight, car rental, eSIM, VPN, credit card, and travel gear recommendations.

get_airport_transfer_links
Get airport transfer and taxi links
Return pre-booked airport transfer links: Booking.com Taxis (fixed price, 100+ countries), Kiwitaxi, Welcome Pickups and GetTransfer, plus up to four VoyageHacks guides on getting from that airport to the city centre and what a fair fare looks like. Useful when a user asks how to get from an airport, about taxi or transfer prices, or plans a late-night arrival. It returns booking pages for private and shared transfers: no live quotes, no public transport timetables, and no ride-hailing dispatch. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'city': {'type': 'string', 'maxLength': 120, 'description': 'Destination city, e.g. Rome.'}, 'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'airport': {'type': 'string', 'maxLength': 120, 'description': 'Airport name or IATA code, e.g. FCO, Bangkok Suvarnabhumi.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'providers', 'guides'], 'properties': {'city': {'type': ['string', 'null']}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'region': {'type': 'string'}, 'airport': {'type': ['string', 'null']}, 'providers': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}}, 'disclosure': {'type': 'string'}}}
get_article
Read a VoyageHacks guide as Markdown
Fetch one VoyageHacks page by URL or site path (for example "/en/hotels/best-budget-hotels-in-rome/") and return its body as Markdown, together with the title, canonical URL, language, section, publication date and last-updated date read from the page itself. Useful after search_articles when the full text is needed to quote figures accurately, and when a source needs to be cited with a real date. Only HTML pages on voyagehacks.com can be read: the tool cannot fetch other websites, data files or images, and very long pages are truncated with a marker at the cut.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'maxLength': 400, 'description': 'Page URL or site path on voyagehacks.com, e.g. https://voyagehacks.com/de/esim/esim-japan/ or /de/esim/esim-japan/.'}}}
Output schema
{'type': 'object', 'required': ['url', 'markdown', 'source'], 'properties': {'url': {'type': 'string', 'description': 'Canonical URL.'}, 'lang': {'type': ['string', 'null']}, 'title': {'type': ['string', 'null']}, 'source': {'type': 'string', 'description': 'Attribution string for citations.'}, 'excerpt': {'type': ['string', 'null'], 'description': "The page's meta description."}, 'section': {'type': ['string', 'null']}, 'updated': {'type': ['string', 'null'], 'description': 'ISO date, or null if the page declares none.'}, 'markdown': {'type': 'string'}, 'published': {'type': ['string', 'null'], 'description': 'ISO date, or null if the page declares none.'}, 'truncated': {'type': 'boolean'}}}
get_booking_links
Get booking links for a whole trip
Return one set of booking and shopping links covering a whole trip in a single call: flight search, hotel search, airport taxi, attractions and tours, car rental, travel eSIM, travel VPN and the travel gear section, all regionalized to the traveler. Accepts route IATA codes, a city and trip dates, so the flight and hotel links are prefilled. The "include" parameter selects which categories are returned, so a trip with no driving can leave out car rental. Useful when a user is planning a trip end to end and wants every option in one place. Each per-topic tool (get_flight_links, get_hotel_links, get_esim_links and the rest) returns richer detail and more guides for a single category. It returns search links only: no live prices, no availability and no booking. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'city': {'type': 'string', 'maxLength': 120, 'description': 'City name for the hotel, tours and attractions searches, e.g. Phuket.'}, 'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'adults': {'type': 'integer', 'maximum': 9, 'minimum': 1, 'description': 'Number of adult travelers. Defaults to 2 for hotels and 1 for flights.'}, 'origin': {'type': 'string', 'maxLength': 40, 'description': 'Origin IATA city or airport code for flights, e.g. LON.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}, 'include': {'type': 'array', 'items': {'enum': ['flights', 'hotels', 'airport_taxi', 'attractions', 'tours', 'car_rental', 'esim', 'vpn', 'travel_gear'], 'type': 'string'}, 'maxItems': 9, 'description': 'Categories to return. Omit for all of them.'}, 'depart_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Outbound flight date and hotel check-in, YYYY-MM-DD.'}, 'destination': {'type': 'string', 'maxLength': 40, 'description': 'Destination IATA city or airport code, e.g. HKT.'}, 'return_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Return flight date and hotel check-out, YYYY-MM-DD.'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'included'], 'properties': {'vpn': {'type': 'string'}, 'esim': {'type': 'string'}, 'trip': {'type': 'object'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'hotels': {'type': 'string'}, 'region': {'type': 'string'}, 'flights': {'type': 'string'}, 'included': {'type': 'array', 'items': {'type': 'string'}}, 'carRental': {'type': 'string'}, 'disclosure': {'type': 'string'}, 'travelGear': {'type': 'string'}, 'airportTaxi': {'type': 'string'}, 'attractions': {'type': 'string'}, 'toursAndActivities': {'type': 'string'}}}
get_car_rental_links
Get car and scooter rental links
Return car and scooter rental comparison links for a destination: EconomyBookings and QEEQ for worldwide comparison, Localrent and GetRentacar for local suppliers with lower deposits in southern Europe, Georgia, the Balkans and Asia, BikesBooking for scooters and motorbikes, and Booking.com Cars, plus up to four VoyageHacks car-rental guides for that country covering real prices, insurance excess and one-way fees. Useful when a user mentions renting a car, a road trip, driving abroad, or an island or countryside trip that needs a vehicle. These are comparison landing pages: dates and the pickup point are entered on the provider site, so pickup_date and dropoff_date are echoed in the response for context rather than embedded in the links. No live quotes, no vehicle availability and no reservation. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}, 'destination': {'type': 'string', 'maxLength': 120, 'description': 'Country, island or city where the car is picked up, e.g. Iceland, Crete, Lisbon.'}, 'pickup_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Pickup date, YYYY-MM-DD. Echoed in the response; entered on the provider site.'}, 'dropoff_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Drop-off date, YYYY-MM-DD. Echoed in the response; entered on the provider site.'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'providers', 'guides'], 'properties': {'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'pickup': {'type': ['string', 'null']}, 'region': {'type': 'string'}, 'dropoff': {'type': ['string', 'null']}, 'providers': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}}, 'disclosure': {'type': 'string'}, 'bookingCars': {'type': 'string'}, 'destination': {'type': ['string', 'null']}}}
get_credit_card_links
Get travel credit card links
Return American Express application links for the traveler's country (Platinum, Gold, American Express Card, Payback and Blue where available), the current German fee and welcome-offer figures verified against americanexpress.com, and up to four VoyageHacks guides on points value, lounge access, foreign-transaction fees, Amex compared with Revolut and country-by-country availability. Useful when a user asks about travel rewards, points, miles, lounge access, which card to pay with abroad or foreign-transaction fees. It covers American Express only: it is not a comparison of all issuers, gives no eligibility or approval decision, no credit-score check and no application. Card terms change frequently and vary by market, so figures should be attributed to the issuer page or the linked guide. Referral links: VoyageHacks may earn a commission at no additional cost to the applicant, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'card': {'enum': ['platinum', 'gold', 'green', 'payback', 'blue'], 'type': 'string', 'description': 'Restrict the response to one American Express card. "green" is the American Express Card, successor to the retired Green Card.'}, 'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'cards', 'guides'], 'properties': {'card': {'type': ['string', 'null']}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}}, 'facts': {'type': ['object', 'null'], 'description': 'Verified fee and welcome-offer figures, currently published for Germany only. Null elsewhere.'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'country': {'type': ['string', 'null']}, 'disclosure': {'type': 'string'}}}
get_esim_links
Get travel eSIM links for a destination
Return travel eSIM store links (Airalo, covering 200+ countries, plus Yesim, Saily and Drimsim) together with up to four VoyageHacks eSIM guides for that destination covering real per-GB prices, coverage, setup steps and which phones support eSIM. Useful when a user asks about mobile data abroad, SIM cards, roaming charges, staying online on a trip or tethering a laptop. It returns store pages: no live plan prices, no coverage check for a specific handset, and no purchase or activation. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'destination': {'type': 'string', 'maxLength': 120, 'description': 'Country or region the data plan is for, e.g. Japan, Europe, USA.'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'providers', 'guides'], 'properties': {'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'providers': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'url'], 'properties': {'url': {'type': 'string'}, 'label': {'type': 'string'}}}}, 'disclosure': {'type': 'string'}, 'destination': {'type': ['string', 'null']}}}
get_flight_links
Get flight search links for a route
Build a flight search link on Booking.com Flights for a route and optional dates, and return up to four VoyageHacks guides on fares, budget airlines and baggage rules for that trip. Pass origin and destination as IATA codes for a prefilled route search; without both, the link opens the general flight search page. Also returns a delayed or cancelled flight compensation link (AirHelp), a Vueling link for short-haul Europe, and, when the route touches their hubs, direct links for Air Serbia (Belgrade) and Air India. The Booking.com link is regionalized to the traveler's country. Useful when a trip involves air travel and the user wants somewhere to compare fares. It returns search links only: no live fares, seat availability or schedules, no booking, and no airport transfer (get_airport_transfer_links covers that). Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'origin': {'type': 'string', 'maxLength': 40, 'description': 'Origin IATA city or airport code, e.g. LON, NYC, BER.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1, 'description': 'Number of adult passengers. Defaults to 1.'}, 'depart_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Outbound date, YYYY-MM-DD. Omitted dates default to about a month ahead.'}, 'destination': {'type': 'string', 'maxLength': 40, 'description': 'Destination IATA city or airport code, e.g. HKT, TYO, ROM.'}, 'return_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Return date, YYYY-MM-DD. Omit for a one-way search.'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'flightSearch', 'guides'], 'properties': {'route': {'type': 'object'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'region': {'type': 'string'}, 'vueling': {'type': 'string'}, 'airIndia': {'type': 'string'}, 'airSerbia': {'type': 'string'}, 'disclosure': {'type': 'string'}, 'flightSearch': {'type': 'string'}, 'flightCompensation': {'type': 'string'}}}
get_hotel_links
Get hotel search links for a city
Build a Booking.com search link for a city or property, with optional check-in and check-out dates, guest count and room count, plus an IHG brand search link (Holiday Inn, InterContinental, Crowne Plaza) and up to four VoyageHacks guides on the best areas and best-value stays there. The Booking.com link is regionalized to the traveler's country. Useful when a user asks where to stay, or about hotels, hostels or apartments in a place. It returns search links only: no live room rates, no availability check, no reviews and no reservation. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'city': {'type': 'string', 'maxLength': 120, 'description': 'City, region or property name to search, e.g. Rome, Phuket, Hotel Kossak.'}, 'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'rooms': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Number of rooms. Defaults to 1.'}, 'adults': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Number of adults. Defaults to 2.'}, 'checkin': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-in date, YYYY-MM-DD. Used only when checkout is also given.'}, 'country': {'type': 'string', 'pattern': '^[A-Za-z]{2}$', 'description': "ISO 3166-1 alpha-2 country the traveler is booking from, e.g. US, DE, GB. Selects the regional Booking.com programme. Defaults to the caller's geolocation, then to the language default."}, 'checkout': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Check-out date, YYYY-MM-DD.'}, 'children': {'type': 'integer', 'maximum': 10, 'minimum': 0, 'description': 'Number of children. Defaults to 0.'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'hotelSearch', 'guides'], 'properties': {'ihg': {'type': 'string'}, 'city': {'type': ['string', 'null']}, 'rooms': {'type': 'integer'}, 'adults': {'type': 'integer'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'region': {'type': 'string'}, 'checkin': {'type': ['string', 'null']}, 'checkout': {'type': ['string', 'null']}, 'children': {'type': 'integer'}, 'disclosure': {'type': 'string'}, 'hotelSearch': {'type': 'string'}}}
get_travel_vpn_links
Get travel VPN links
Return the NordVPN signup link together with up to four VoyageHacks guides on whether a traveler actually needs a VPN, the real risks of hotel and airport Wi-Fi, and watching home streaming services abroad. Useful when a user raises public Wi-Fi safety, working remotely abroad, geo-blocked streaming or online banking while travelling. It returns a signup page and editorial guides: no live pricing, no server list and no account creation. Referral link: VoyageHacks may earn a commission at no additional cost to the user, which should be disclosed when the link is presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}}}
Output schema
{'type': 'object', 'required': ['disclosure', 'vpn', 'guides'], 'properties': {'vpn': {'type': 'string'}, 'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}}}, 'description': 'Matching VoyageHacks guides that can be cited as sources.'}, 'disclosure': {'type': 'string'}}}
recommend_travel_gear
Build a travel gear kit for a trip
Turn a trip description into a packing and gear kit drawn from the VoyageHacks travel gear catalog: one product per category, each with the published reason it was picked, its Amazon ASIN, a link to the Amazon product page and the guide that reviews it. Takes a plain-language trip summary ("10 days in Japan in October, carry-on only, long-haul red-eye, working remotely") plus optional structured hints (destination, trip length in days, season, activities, luggage constraint, traveler type, budget), all of which are used to weight which categories make the kit. Answers questions of the form "what should I pack for X", "what gear do I need for Y" and "I only have carry-on, what should I bring". It draws on the VoyageHacks editorial catalog, not a search of all of Amazon, and returns published picks only: prices, star ratings, review counts and stock are not available and are never returned, and it produces no clothing sizes and no itinerary. For one named product category, search_travel_gear is narrower. The Amazon links are affiliate links: VoyageHacks may earn a commission from qualifying purchases at no additional cost to the buyer, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['trip'], 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'trip': {'type': 'string', 'maxLength': 600, 'description': 'Free-text trip description: destination, length, style, flight type, season, gadgets needed.'}, 'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Maximum items in the kit. Defaults to 6.'}, 'budget': {'enum': ['budget', 'mid_range', 'premium'], 'type': 'string', 'description': 'Optional budget level. Recorded in the response; the catalog carries no prices, so it does not filter products.'}, 'season': {'enum': ['spring', 'summer', 'autumn', 'winter', 'rainy', 'dry'], 'type': 'string', 'description': 'Optional season or climate at the destination.'}, 'luggage': {'enum': ['carry_on_only', 'personal_item_only', 'checked_bag', 'backpack'], 'type': 'string', 'description': 'Optional luggage constraint. carry_on_only and personal_item_only weight the packing and compression categories.'}, 'activities': {'type': 'array', 'items': {'type': 'string', 'maxLength': 60}, 'maxItems': 10, 'description': 'Optional activities, e.g. ["hiking", "photography", "remote work", "camping", "beach"].'}, 'destination': {'type': 'string', 'maxLength': 120, 'description': 'Optional country, region or city, e.g. Japan, Iceland, Thailand.'}, 'traveler_type': {'enum': ['solo', 'couple', 'family', 'business', 'backpacker', 'digital_nomad'], 'type': 'string', 'description': 'Optional traveler type.'}, 'trip_length_days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Optional trip length in days.'}}}
Output schema
{'type': 'object', 'required': ['trip', 'lang', 'kit', 'disclosure'], 'properties': {'hub': {'type': 'string'}, 'kit': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'asin', 'buyUrl', 'source', 'affiliate', 'reviewGuide'], 'properties': {'asin': {'type': 'string'}, 'name': {'type': 'string'}, 'badge': {'type': 'string', 'description': 'Editorial label, e.g. "Best overall".'}, 'buyUrl': {'type': 'string', 'description': 'Amazon product page, carrying the VoyageHacks Associates tag.'}, 'source': {'type': 'string', 'description': 'Always "amazon".'}, 'category': {'type': 'string', 'description': 'Product category, taken from the buying guide it appears in.'}, 'affiliate': {'type': 'boolean', 'description': 'True: the buy link is an affiliate link.'}, 'whyThisOne': {'type': 'string', 'description': 'The published reason this product was picked.'}, 'reviewGuide': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'updated': {'type': 'string'}}}}}}, 'lang': {'type': 'string'}, 'trip': {'type': 'string'}, 'criteria': {'type': 'object', 'description': 'Structured hints that were applied.'}, 'disclosure': {'type': 'string'}}}
search_articles
Search VoyageHacks travel guides
Full-text search across the VoyageHacks travel guides, about 680 published pages per language, covering flights, airline reviews, hotels, destinations, car rental, trains, airport transfers, eSIM, travel VPN, travel credit cards, travel gear and month-by-month "where to go" guides. Returns ranked matches with the title, canonical URL, section and a matching excerpt for each. Useful when a travel question needs published prices, comparisons, best-time-to-visit advice or step-by-step detail that can be attributed to a source URL, and as the first step before get_article. It searches VoyageHacks content only: not the wider web, not live fares or hotel availability, and it returns no booking or product links (the get_..._links tools do that).
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'Maximum results to return. Defaults to 5.'}, 'query': {'type': 'string', 'maxLength': 300, 'description': 'Search terms, e.g. "cheap hotels rome" or "esim japan". Matched against titles, keywords, tags and article text.'}, 'section': {'enum': ['flights', 'airlines', 'hotels', 'destinations', 'car-rental', 'trains', 'transfers', 'esim', 'vpn', 'credit-cards', 'travel-gear', 'adventure', 'travel-types', 'when-to-go', 'styles', 'answers', 'checklists', 'deals'], 'type': 'string', 'description': 'Restrict results to one site section. Omit to search every section.'}}}
Output schema
{'type': 'object', 'required': ['query', 'lang', 'results'], 'properties': {'lang': {'type': 'string'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string', 'description': 'Canonical URL, safe to cite.'}, 'lang': {'type': 'string'}, 'title': {'type': 'string'}, 'section': {'type': 'string'}, 'snippet': {'type': 'string'}}}}, 'section': {'type': ['string', 'null']}, 'resultCount': {'type': 'integer'}}}
search_travel_gear
Search the VoyageHacks travel gear catalog
Search the VoyageHacks travel gear catalog: about 320 products that appear as picks in roughly 50 published buying guides, including carry-on backpacks, packing cubes and compression bags, universal travel adapters, GaN chargers, airline-compliant power banks, luggage trackers, neck pillows, earplugs and eye masks, toiletry and makeup bags, travel-size bottles, travel routers, translation earbuds and camping and outdoor gear. Each result returns the product name, its category, the published reason it was picked, the guide that reviews it, its Amazon ASIN and a link to the Amazon product page. Useful when a user asks which travel product to buy, or what to pack for a trip and names a category or a destination. For a whole kit built from a trip description rather than one category, recommend_travel_gear is the matching tool. This is the VoyageHacks editorial catalog, not a search of all of Amazon: products outside the published guides are not findable here, and prices, star ratings, review counts and stock are not available and are never returned. The Amazon links are affiliate links: VoyageHacks may earn a commission from qualifying purchases at no additional cost to the buyer, which should be disclosed when the links are presented.
Read only Open world Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'lang': {'enum': ['en', 'de', 'fr', 'es', 'it', 'pl', 'cs', 'ja', 'nl', 'pt', 'zh'], 'type': 'string', 'description': 'Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".'}, 'limit': {'type': 'integer', 'maximum': 12, 'minimum': 1, 'description': 'Maximum products to return. Defaults to 6.'}, 'query': {'type': 'string', 'maxLength': 300, 'description': 'What the traveler needs, e.g. "power bank for a long flight", "packing cubes", "adapter for Japan".'}}}
Output schema
{'type': 'object', 'required': ['query', 'lang', 'products', 'disclosure'], 'properties': {'hub': {'type': 'string'}, 'lang': {'type': 'string'}, 'query': {'type': 'string'}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'asin', 'buyUrl', 'source', 'affiliate', 'reviewGuide'], 'properties': {'asin': {'type': 'string'}, 'name': {'type': 'string'}, 'badge': {'type': 'string', 'description': 'Editorial label, e.g. "Best overall".'}, 'buyUrl': {'type': 'string', 'description': 'Amazon product page, carrying the VoyageHacks Associates tag.'}, 'source': {'type': 'string', 'description': 'Always "amazon".'}, 'category': {'type': 'string', 'description': 'Product category, taken from the buying guide it appears in.'}, 'affiliate': {'type': 'boolean', 'description': 'True: the buy link is an affiliate link.'}, 'whyThisOne': {'type': 'string', 'description': 'The published reason this product was picked.'}, 'reviewGuide': {'type': 'object', 'required': ['title', 'url'], 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'updated': {'type': 'string'}}}}}}, 'disclosure': {'type': 'string'}, 'productCount': {'type': 'integer'}}}
Added
get_booking_links
Sept. 17, 2026, 12:38 p.m.
Added
get_credit_card_links
Sept. 17, 2026, 12:38 p.m.
Added
get_travel_vpn_links
Sept. 17, 2026, 12:38 p.m.
Added
get_esim_links
Sept. 17, 2026, 12:38 p.m.
Added
get_airport_transfer_links
Sept. 17, 2026, 12:38 p.m.
Added
get_car_rental_links
Sept. 17, 2026, 12:38 p.m.
Added
get_hotel_links
Sept. 17, 2026, 12:38 p.m.
Added
get_flight_links
Sept. 17, 2026, 12:38 p.m.
Added
recommend_travel_gear
Sept. 17, 2026, 12:38 p.m.
Added
search_travel_gear
Sept. 17, 2026, 12:38 p.m.
Added
get_article
Sept. 17, 2026, 12:38 p.m.
Added
search_articles
Sept. 17, 2026, 12:38 p.m.