VoyageHacks
Multilingual travel guides, gear picks and booking links for AI travel agents.
Should I use this
Quality & Safety
Findings (14)
- HIGH
- INFOin search_articles
- INFOin get_article
- INFOin search_travel_gear
- INFOin recommend_travel_gear
- INFOin get_flight_links
- INFOin get_hotel_links
- INFOin get_car_rental_links
- INFOin get_airport_transfer_links
- INFOin get_esim_links
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"travel": {
"url": "https://voyagehacks.com/mcp"
}
}
}Remote endpoints
https://voyagehacks.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (13)
🟢search_articles(query, lang, section, limit)
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. It searches VoyageHacks content only: not the wider web, not live fares or hotel availability, and it returns no booking or product links.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 300,
"description": "Search terms, e.g. \"cheap hotels rome\" or \"esim japan\". Matched against titles, keywords, tags and article text."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"description": "Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
},
"section": {
"type": "string",
"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"
],
"description": "Restrict results to one site section. Omit to search every section."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Maximum results to return. Defaults to 5."
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"lang": {
"type": "string"
},
"section": {
"type": [
"string",
"null"
]
},
"resultCount": {
"type": "integer"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string",
"description": "Canonical URL, safe to cite."
},
"section": {
"type": "string"
},
"lang": {
"type": "string"
},
"snippet": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"query",
"lang",
"results"
]
}🟢get_article(url)
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 when the full text of a guide 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.
Input Schema
{
"type": "object",
"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/."
}
},
"required": [
"url"
]
}Output Schema
{
"type": "object",
"properties": {
"title": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string",
"description": "Canonical URL."
},
"lang": {
"type": [
"string",
"null"
]
},
"section": {
"type": [
"string",
"null"
]
},
"published": {
"type": [
"string",
"null"
],
"description": "ISO date, or null if the page declares none."
},
"updated": {
"type": [
"string",
"null"
],
"description": "ISO date, or null if the page declares none."
},
"excerpt": {
"type": [
"string",
"null"
],
"description": "The page's meta description."
},
"markdown": {
"type": "string"
},
"truncated": {
"type": "boolean"
},
"source": {
"type": "string",
"description": "Attribution string for citations."
}
},
"required": [
"url",
"markdown",
"source"
]
}🟢search_travel_gear(query, lang, limit)
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, its Amazon ASIN and a link to the product on the VoyageHacks buying guide that reviews it, where it can be bought on Amazon. Useful when a user asks which travel product to buy, or what to pack for a trip and names a category or a destination. 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 guides carry Amazon affiliate links: VoyageHacks may earn a commission from qualifying purchases at no additional cost to the buyer, which should be disclosed when the products are presented.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 300,
"description": "What the traveler needs, e.g. \"power bank for a long flight\", \"packing cubes\", \"adapter for Japan\"."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"minimum": 1,
"maximum": 12,
"description": "Maximum products to return. Defaults to 6."
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"lang": {
"type": "string"
},
"hub": {
"type": "string"
},
"productCount": {
"type": "integer"
},
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"category": {
"type": "string",
"description": "Product category, taken from the buying guide it appears in."
},
"badge": {
"type": "string",
"description": "Editorial label, e.g. \"Best overall\"."
},
"whyThisOne": {
"type": "string",
"description": "The published reason this product was picked."
},
"asin": {
"type": "string"
},
"productUrl": {
"type": "string",
"description": "The product on its VoyageHacks buying guide (#p-<asin>), where the Amazon buy button is."
},
"retailer": {
"type": "string",
"description": "Where the product is sold. Always \"Amazon\"."
},
"reviewGuide": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"updated": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
},
"required": [
"name",
"asin",
"productUrl",
"retailer",
"reviewGuide"
]
}
},
"disclosure": {
"type": "string"
}
},
"required": [
"query",
"lang",
"products",
"disclosure"
]
}🟢recommend_travel_gear(trip, destination, trip_length_days, season, activities, ...)
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 and a link to the product on the VoyageHacks guide that reviews it, where it can be bought on Amazon. 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. The guides carry Amazon affiliate links: VoyageHacks may earn a commission from qualifying purchases at no additional cost to the buyer, which should be disclosed when the products are presented.
Input Schema
{
"type": "object",
"properties": {
"trip": {
"type": "string",
"maxLength": 600,
"description": "Free-text trip description: destination, length, style, flight type, season, gadgets needed."
},
"destination": {
"type": "string",
"maxLength": 120,
"description": "Optional country, region or city, e.g. Japan, Iceland, Thailand."
},
"trip_length_days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"description": "Optional trip length in days."
},
"season": {
"type": "string",
"enum": [
"spring",
"summer",
"autumn",
"winter",
"rainy",
"dry"
],
"description": "Optional season or climate at the destination."
},
"activities": {
"type": "array",
"maxItems": 10,
"items": {
"type": "string",
"maxLength": 60
},
"description": "Optional activities, e.g. [\"hiking\", \"photography\", \"remote work\", \"camping\", \"beach\"]."
},
"luggage": {
"type": "string",
"enum": [
"carry_on_only",
"personal_item_only",
"checked_bag",
"backpack"
],
"description": "Optional luggage constraint. carry_on_only and personal_item_only weight the packing and compression categories."
},
"traveler_type": {
"type": "string",
"enum": [
"solo",
"couple",
"family",
"business",
"backpacker",
"digital_nomad"
],
"description": "Optional traveler type."
},
"budget": {
"type": "string",
"enum": [
"budget",
"mid_range",
"premium"
],
"description": "Optional budget level. Recorded in the response; the catalog carries no prices, so it does not filter products."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"minimum": 1,
"maximum": 10,
"description": "Maximum items in the kit. Defaults to 6."
}
},
"required": [
"trip"
]
}Output Schema
{
"type": "object",
"properties": {
"trip": {
"type": "string"
},
"lang": {
"type": "string"
},
"hub": {
"type": "string"
},
"criteria": {
"type": "object",
"description": "Structured hints that were applied."
},
"kit": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"category": {
"type": "string",
"description": "Product category, taken from the buying guide it appears in."
},
"badge": {
"type": "string",
"description": "Editorial label, e.g. \"Best overall\"."
},
"whyThisOne": {
"type": "string",
"description": "The published reason this product was picked."
},
"asin": {
"type": "string"
},
"productUrl": {
"type": "string",
"description": "The product on its VoyageHacks buying guide (#p-<asin>), where the Amazon buy button is."
},
"retailer": {
"type": "string",
"description": "Where the product is sold. Always \"Amazon\"."
},
"reviewGuide": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"updated": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
},
"required": [
"name",
"asin",
"productUrl",
"retailer",
"reviewGuide"
]
}
},
"disclosure": {
"type": "string"
}
},
"required": [
"trip",
"lang",
"kit",
"disclosure"
]
}🟢get_flight_links(origin, destination, depart_date, return_date, passengers, ...)
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 transfers. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Input Schema
{
"type": "object",
"properties": {
"origin": {
"type": "string",
"maxLength": 40,
"description": "Origin IATA city or airport code, e.g. LON, NYC, BER."
},
"destination": {
"type": "string",
"maxLength": 40,
"description": "Destination IATA city or airport code, e.g. HKT, TYO, ROM."
},
"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."
},
"return_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Return date, YYYY-MM-DD. Omit for a one-way search."
},
"passengers": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Number of adult passengers. Defaults to 1."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"region": {
"type": "string"
},
"route": {
"type": "object"
},
"flightSearch": {
"type": "string"
},
"flightCompensation": {
"type": "string"
},
"vueling": {
"type": "string"
},
"airSerbia": {
"type": "string"
},
"airIndia": {
"type": "string"
},
"virginAtlantic": {
"type": "string"
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"flightSearch",
"guides"
]
}🟢get_hotel_links(city, checkin, checkout, adults, children, ...)
Build a Booking.com search link for a city or property, with optional check-in and check-out dates, guest count and room count, the same search on Expedia, Vrbo (apartments and holiday homes) and Agoda, 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.
Input Schema
{
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 120,
"description": "City, region or property name to search, e.g. Rome, Phuket, Hotel Kossak."
},
"checkin": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-in date, YYYY-MM-DD. Used only when checkout is also given."
},
"checkout": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Check-out date, YYYY-MM-DD."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"description": "Number of adults. Defaults to 2."
},
"children": {
"type": "integer",
"minimum": 0,
"maximum": 10,
"description": "Number of children. Defaults to 0."
},
"rooms": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"description": "Number of rooms. Defaults to 1."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"region": {
"type": "string"
},
"city": {
"type": [
"string",
"null"
]
},
"checkin": {
"type": [
"string",
"null"
]
},
"checkout": {
"type": [
"string",
"null"
]
},
"adults": {
"type": "integer"
},
"children": {
"type": "integer"
},
"rooms": {
"type": "integer"
},
"hotelSearch": {
"type": "string"
},
"moreStays": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
},
"ihg": {
"type": "string"
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"hotelSearch",
"guides"
]
}🟢get_car_rental_links(destination, pickup_date, dropoff_date, country, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"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."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"region": {
"type": "string"
},
"destination": {
"type": [
"string",
"null"
]
},
"pickup": {
"type": [
"string",
"null"
]
},
"dropoff": {
"type": [
"string",
"null"
]
},
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
},
"bookingCars": {
"type": "string"
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"providers",
"guides"
]
}🟢get_airport_transfer_links(airport, city, country, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"airport": {
"type": "string",
"maxLength": 120,
"description": "Airport name or IATA code, e.g. FCO, Bangkok Suvarnabhumi."
},
"city": {
"type": "string",
"maxLength": 120,
"description": "Destination city, e.g. Rome."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"region": {
"type": "string"
},
"airport": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"providers",
"guides"
]
}🟢get_esim_links(destination, lang)
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.
Input Schema
{
"type": "object",
"properties": {
"destination": {
"type": "string",
"maxLength": 120,
"description": "Country or region the data plan is for, e.g. Japan, Europe, USA."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"destination": {
"type": [
"string",
"null"
]
},
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"providers",
"guides"
]
}🟢get_travel_vpn_links(lang)
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.
Input Schema
{
"type": "object",
"properties": {
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"vpn": {
"type": "string"
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"vpn",
"guides"
]
}🟢get_credit_card_links(country, card, lang)
Return the official American Express Germany card pages (Platinum, Gold, American Express Card, Payback and Blue) and the Revolut plans page, 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. The card links are plain issuer pages, not affiliate or referral links.
Input Schema
{
"type": "object",
"properties": {
"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."
},
"card": {
"type": "string",
"enum": [
"platinum",
"gold",
"green",
"payback",
"blue"
],
"description": "Restrict the response to one American Express card. \"green\" is the American Express Card, successor to the retired Green Card."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"card": {
"type": [
"string",
"null"
]
},
"cards": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
},
"facts": {
"type": [
"object",
"null"
],
"description": "Verified fee and welcome-offer figures, currently published for Germany only. Null elsewhere."
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"cards",
"guides"
]
}🟢get_booking_links(origin, destination, city, depart_date, return_date, ...)
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. 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.
Input Schema
{
"type": "object",
"properties": {
"origin": {
"type": "string",
"maxLength": 40,
"description": "Origin IATA city or airport code for flights, e.g. LON."
},
"destination": {
"type": "string",
"maxLength": 40,
"description": "Destination IATA city or airport code, e.g. HKT."
},
"city": {
"type": "string",
"maxLength": 120,
"description": "City name for the hotel, tours and attractions searches, e.g. Phuket."
},
"depart_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Outbound flight date and hotel check-in, YYYY-MM-DD."
},
"return_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Return flight date and hotel check-out, YYYY-MM-DD."
},
"adults": {
"type": "integer",
"minimum": 1,
"maximum": 9,
"description": "Number of adult travelers. Defaults to 2 for hotels and 1 for flights."
},
"include": {
"type": "array",
"maxItems": 9,
"items": {
"type": "string",
"enum": [
"flights",
"hotels",
"airport_taxi",
"attractions",
"tours",
"car_rental",
"esim",
"vpn",
"travel_gear"
]
},
"description": "Categories to return. Omit for all of them."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"region": {
"type": "string"
},
"trip": {
"type": "object"
},
"included": {
"type": "array",
"items": {
"type": "string"
}
},
"flights": {
"type": "string"
},
"hotels": {
"type": "string"
},
"hotelsElsewhere": {
"type": "string",
"description": "The same hotel search on Expedia (via Stay22)."
},
"airportTaxi": {
"type": "string"
},
"attractions": {
"type": "string"
},
"toursAndActivities": {
"type": "string"
},
"carRental": {
"type": "string"
},
"esim": {
"type": "string"
},
"vpn": {
"type": "string"
},
"travelGear": {
"type": "string"
},
"guides": {
"type": "array",
"description": "Matching VoyageHacks guides that can be cited as sources.",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"section": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
}
},
"required": [
"disclosure",
"included"
]
}🟢find_destination(month, trip_type, budget, travelers, origin, ...)
Suggest three destinations for a trip from five answers: the month (or "flexible"), the kind of trip (beach, city break, hiking, ski, road trip, adventure or working remotely), the budget, who is travelling and, optionally, the departure airport. Picks come only from VoyageHacks' own where-to-go month guides and travel-style lists, with the average high temperature each month guide states, the reasons it fits, the destination guide to cite, and booking links for that trip: hotels and flights dated in the chosen month, plus tours, car rental or an eSIM where they fit. This is the same matching as the trip finder on voyagehacks.com. Useful when a user asks where to go, for holiday ideas for a month, or for a destination that suits a family, a couple or a budget. Each answer also carries three packing picks for that kind of trip, linked to the VoyageHacks buying guides. When the month or the trip type is missing it returns no picks, only the questions that are still open with their allowed answers (needsInput). It does not return live prices or availability and cannot book. Affiliate links: VoyageHacks may earn a commission at no additional cost to the traveler, which should be disclosed when the links are presented.
Input Schema
{
"type": "object",
"properties": {
"month": {
"type": "string",
"enum": [
"january",
"february",
"march",
"april",
"may",
"june",
"july",
"august",
"september",
"october",
"november",
"december",
"flexible"
],
"description": "Travel month in English, lowercase, or \"flexible\" for the next two months."
},
"trip_type": {
"type": "string",
"enum": [
"beach",
"city",
"hiking",
"ski",
"campervan",
"adventure",
"digital-nomad"
],
"description": "Kind of trip. \"campervan\" means a road trip; \"digital-nomad\" means working remotely."
},
"budget": {
"type": "string",
"enum": [
"budget",
"mid",
"luxury"
],
"description": "Daily budget: budget (hostels, street food), mid (3-star) or luxury. Defaults to mid."
},
"travelers": {
"type": "string",
"enum": [
"solo",
"couple",
"family",
"friends"
],
"description": "Who is travelling. Defaults to couple."
},
"origin": {
"type": "string",
"maxLength": 40,
"description": "Departure IATA city or airport code for the flight links, e.g. LON. Optional."
},
"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."
},
"lang": {
"type": "string",
"enum": [
"en",
"de",
"fr",
"es",
"it",
"pl",
"ja",
"nl",
"pt",
"zh"
],
"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",
"properties": {
"disclosure": {
"type": "string"
},
"tripFinder": {
"type": "string",
"description": "The same answers on the VoyageHacks trip finder page."
},
"needsInput": {
"type": "array",
"description": "Present when month or trip_type was missing: the questions to ask, each with its allowed answers. No picks are returned until they are answered.",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"question": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "string"
}
},
"required": {
"type": "boolean"
}
},
"required": [
"field",
"question",
"options"
]
}
},
"answers": {
"type": "object",
"description": "The answers used: month, trip_type, budget, travelers, origin."
},
"packing": {
"type": "array",
"description": "Three packing picks for this kind of trip, each linked to its VoyageHacks buying guide.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"category": {
"type": "string",
"description": "Product category, taken from the buying guide it appears in."
},
"badge": {
"type": "string",
"description": "Editorial label, e.g. \"Best overall\"."
},
"whyThisOne": {
"type": "string",
"description": "The published reason this product was picked."
},
"asin": {
"type": "string"
},
"productUrl": {
"type": "string",
"description": "The product on its VoyageHacks buying guide (#p-<asin>), where the Amazon buy button is."
},
"retailer": {
"type": "string",
"description": "Where the product is sold. Always \"Amazon\"."
},
"reviewGuide": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
},
"updated": {
"type": "string"
}
},
"required": [
"title",
"url"
]
}
},
"required": [
"name",
"asin",
"productUrl",
"retailer",
"reviewGuide"
]
}
},
"picks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"guide": {
"type": "string"
},
"image": {
"type": [
"string",
"null"
],
"description": "Photo of the destination on voyagehacks.com."
},
"avgHighC": {
"type": [
"number",
"null"
]
},
"season": {
"type": "string",
"description": "in: the guides recommend this month; unknown: check the guide; out: outside the guide's sweet spot."
},
"reasons": {
"type": "array",
"items": {
"type": "string"
}
},
"links": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"label",
"url"
]
}
}
},
"required": [
"name",
"guide",
"reasons",
"links"
]
}
}
},
"required": [
"disclosure",
"picks"
]
}Community
Evidence