Skip to main content
Glama

Server Details

Multilingual travel guides, gear picks and booking links for AI travel agents.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
voyagehacks-com/mcp-server
GitHub Stars
0
Server Listing
VoyageHacks MCP Server

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation4/5

The tools split into clear families: category-specific link builders, a whole-trip aggregate link builder, article search/fetch, and gear search/recommendation. The only mild overlap is between get_booking_links and the individual category link tools, but their aggregate-vs-category purpose is explicitly described, so an agent should rarely misselect.

Naming Consistency5/5

Nearly all tools follow the verb_noun snake_case pattern, led by the get_<category>_links family, with search_articles and search_travel_gear matching the same convention. There is no camelCase, no mixed verb styles, and the pattern is highly predictable from the tool names alone.

Tool Count5/5

Twelve tools is well-scoped for a travel planning and affiliate-link server: seven category link builders, one aggregate trip link builder, two article tools, and two travel gear tools. Each tool covers a distinct part of the workflow and none feels redundant or like padding.

Completeness4/5

The travel-planning surface is largely complete: research, flights, hotels, airport transfers, car rental, eSIM, VPN, credit cards, and gear are all covered, with an aggregate tool for whole-trip planning. Minor gaps, such as no dedicated train or attractions/tours link builder, keep it from a perfect score.

Available Tools

12 tools
get_articleRead a VoyageHacks guide as MarkdownA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPage URL or site path on voyagehacks.com, e.g. https://voyagehacks.com/de/esim/esim-japan/ or /de/esim/esim-japan/.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYesCanonical URL.
langNo
titleNo
sourceYesAttribution string for citations.
excerptNoThe page's meta description.
sectionNo
updatedNoISO date, or null if the page declares none.
markdownYes
publishedNoISO date, or null if the page declares none.
truncatedNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context beyond this: domain restriction, inability to fetch non-HTML resources, and truncation with a marker. This is meaningful additional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with zero filler: main action and return value first, usage context second, limitations third. Every sentence earns its place and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with an output schema and annotations, this description is complete: it states what is returned, when to use it, what it cannot do, and truncation behavior. An agent has enough information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's description already gives examples of URLs and site paths. The tool description essentially restates the same accepted input forms without adding deeper semantics, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Fetch one VoyageHacks page') and clearly states the resource and return format: body as Markdown plus metadata. It also distinguishes this tool from siblings like search_articles by clarifying it retrieves full page content rather than search results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says this is useful after search_articles when full text is needed for accurate quoting or for citing real dates, giving a clear workflow trigger. It also states boundaries: only HTML pages on voyagehacks.com can be read, not other websites, data files, or images, and long pages are truncated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_travel_gearBuild a travel gear kit for a tripA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".
tripYesFree-text trip description: destination, length, style, flight type, season, gadgets needed.
limitNoMaximum items in the kit. Defaults to 6.
budgetNoOptional budget level. Recorded in the response; the catalog carries no prices, so it does not filter products.
seasonNoOptional season or climate at the destination.
luggageNoOptional luggage constraint. carry_on_only and personal_item_only weight the packing and compression categories.
activitiesNoOptional activities, e.g. ["hiking", "photography", "remote work", "camping", "beach"].
destinationNoOptional country, region or city, e.g. Japan, Iceland, Thailand.
traveler_typeNoOptional traveler type.
trip_length_daysNoOptional trip length in days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hubNo
kitYes
langYes
tripYes
criteriaNoStructured hints that were applied.
disclosureYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior, so the bar is lower, but the description adds substantial context: it returns only published picks, never prices/ratings/review counts/stock, produces no clothing sizes or itinerary, uses only the editorial catalog rather than all of Amazon, and discloses affiliate links. This goes well beyond the annotation metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and longer than average, but nearly every sentence earns its place: it covers core purpose, output contents, example inputs, limitations, alternative tool, and affiliate disclosure. It lacks bullet structure and could be tightened, but the front-loaded first sentence communicates the main purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a complex tool with 10 parameters, high schema coverage, an output schema, and a clear sibling distinction, the description covers the important behavioral boundaries: what is not returned, what the kit is drawn from, and when to prefer the sibling tool. Nothing critical for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds collective meaning: the optional structured hints "all of which are used to weight which categories make the kit," and it clarifies the free-text trip parameter's role. That is meaningful information beyond the individual schema field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: turning a trip description into a packing and gear kit from the VoyageHacks catalog. It clearly lists the returned components (product, reason, ASIN, Amazon link, guide link) and explicitly distinguishes itself from search_travel_gear, leaving no ambiguity about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete triggering questions ("what should I pack for X") and states that structured hints weight the kit selections. It also names the alternative tool, search_travel_gear, and explains when that narrower tool is the right choice, making the selection decision explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_articlesSearch VoyageHacks travel guidesA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".
limitNoMaximum results to return. Defaults to 5.
queryYesSearch terms, e.g. "cheap hotels rome" or "esim japan". Matched against titles, keywords, tags and article text.
sectionNoRestrict results to one site section. Omit to search every section.

Output Schema

ParametersJSON Schema
NameRequiredDescription
langYes
queryYes
resultsYes
sectionNo
resultCountNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/idempotentHint annotations, the description discloses meaningful behavioral scope: it searches only VoyageHacks content, covers about 680 pages per language, returns ranked matches with four specific fields, and does not return live fares or booking links. This gives an agent realistic expectations about results and limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and densely packs content scope, return format, use cases, and exclusions into only a few sentences. Every sentence earns its place given the need to differentiate this broad search tool from many siblings.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers what the tool searches, what it returns, when to use it, what it does not do, and how it relates to sibling tools. With a full input schema and output schema present, an agent has everything needed to decide when to call this tool and what results to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents query, lang, limit, and section thoroughly. The description reinforces the search semantics at a high level but adds little parameter-level detail beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource — 'Full-text search across the VoyageHacks travel guides' — and then enumerates the content categories covered. It also explicitly distinguishes itself from siblings by stating it returns no booking or product links and is the first step before get_article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when the tool is useful: for questions needing published prices, comparisons, best-time-to-visit advice, or source-attributable step-by-step detail. It also gives clear exclusions — not the wider web, not live fares or hotel availability — and routes link-style queries to the get_..._links tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_travel_gearSearch the VoyageHacks travel gear catalogA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoLanguage of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to "en".
limitNoMaximum products to return. Defaults to 6.
queryYesWhat the traveler needs, e.g. "power bank for a long flight", "packing cubes", "adapter for Japan".

Output Schema

ParametersJSON Schema
NameRequiredDescription
hubNo
langYes
queryYes
productsYes
disclosureYes
productCountNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, idempotent, and non-destructive, and the description adds valuable context on top of that: result fields, the editorial-catalog boundary, the absence of prices/ratings/review counts/stock, and the affiliate-link disclosure obligation. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence in the description carries distinct information: catalog scope, result contents, intended use case, sibling alternative, limitations, and affiliate disclosure. It is front-loaded with the core action and scope, and the longer category list earns its place by conveying the breadth of the catalog.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three documented parameters and an output schema, this description is complete: it states what results contain, what they never contain, what the catalog covers, and how links should be presented. An agent has all necessary context to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters query, limit, and lang are already fully documented with examples and defaults. The description reinforces query semantics by mentioning category/destination queries but does not add significant new parameter-level detail, which is appropriate given the schema's coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Search the VoyageHacks travel gear catalog') and immediately clarifies the scope: roughly 320 products across about 50 published buying guides. It also distinguishes itself from the sibling recommend_travel_gear, making tool selection unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool: when a user asks which travel product to buy or what to pack and names a category or destination. It also names the matching alternative for whole kits and states what the tool is not for (a general Amazon search), giving clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updates
    • Changedget_airport_transfer_links8 fields changed
      • changedInput schema / properties / airport / description
        Previous value: -"Airport name or IATA code, e.g. FCO, Bangkok Suvarnabhumi"New value: +"Airport name or IATA code, e.g. FCO, Bangkok Suvarnabhumi."
      • addedInput schema / properties / airport / maxLength
        Added value: +120
      • changedInput schema / properties / city / description
        Previous value: -"Destination city, e.g. Rome"New value: +"Destination city, e.g. Rome."
      • addedInput schema / properties / city / maxLength
        Added value: +120
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "airport": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "city": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "providers": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "region": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "providers",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_article3 fields changed
      • changedInput schema / properties / url / description
        Previous value: -"Page URL or path on voyagehacks.com"New value: +"Page URL or site path on voyagehacks.com, e.g. https://voyagehacks.com/de/esim/esim-japan/ or /de/esim/esim-japan/."
      • addedInput schema / properties / url / maxLength
        Added value: +400
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "excerpt": {
        +      "description": "The page's meta description.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "lang": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "markdown": {
        +      "type": "string"
        +    },
        +    "published": {
        +      "description": "ISO date, or null if the page declares none.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "section": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "source": {
        +      "description": "Attribution string for citations.",
        +      "type": "string"
        +    },
        +    "title": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "truncated": {
        +      "type": "boolean"
        +    },
        +    "updated": {
        +      "description": "ISO date, or null if the page declares none.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "description": "Canonical URL.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url",
        +    "markdown",
        +    "source"
        +  ],
        +  "type": "object"
        +}
    • Changedget_booking_links14 fields changed
      • addedInput schema / properties / adults
        Added value: +{
        +  "description": "Number of adult travelers. Defaults to 2 for hotels and 1 for flights.",
        +  "maximum": 9,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / city / description
        Previous value: -"Optional city name for the hotel search, e.g. Phuket"New value: +"City name for the hotel, tours and attractions searches, e.g. Phuket."
      • addedInput schema / properties / city / maxLength
        Added value: +120
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • addedInput schema / properties / depart_date
        Added value: +{
        +  "description": "Outbound flight date and hotel check-in, YYYY-MM-DD.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / destination / description
        Previous value: -"Optional destination IATA city/airport code, e.g. HKT"New value: +"Destination IATA city or airport code, e.g. HKT."
      • addedInput schema / properties / destination / maxLength
        Added value: +40
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Categories to return. Omit for all of them.",
        +  "items": {
        +    "enum": [
        +      "flights",
        +      "hotels",
        +      "airport_taxi",
        +      "attractions",
        +      "tours",
        +      "car_rental",
        +      "esim",
        +      "vpn",
        +      "travel_gear"
        +    ],
        +    "type": "string"
        +  },
        +  "maxItems": 9,
        +  "type": "array"
        +}
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\".",
        +  "enum": [
        +    "en",
        +    "de",
        +    "fr",
        +    "es",
        +    "it",
        +    "pl",
        +    "cs",
        +    "ja",
        +    "nl",
        +    "pt",
        +    "zh"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / origin / description
        Previous value: -"Optional origin IATA city/airport code for flights, e.g. LON"New value: +"Origin IATA city or airport code for flights, e.g. LON."
      • addedInput schema / properties / origin / maxLength
        Added value: +40
      • addedInput schema / properties / return_date
        Added value: +{
        +  "description": "Return flight date and hotel check-out, YYYY-MM-DD.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "airportTaxi": {
        +      "type": "string"
        +    },
        +    "attractions": {
        +      "type": "string"
        +    },
        +    "carRental": {
        +      "type": "string"
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "esim": {
        +      "type": "string"
        +    },
        +    "flights": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hotels": {
        +      "type": "string"
        +    },
        +    "included": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "region": {
        +      "type": "string"
        +    },
        +    "toursAndActivities": {
        +      "type": "string"
        +    },
        +    "travelGear": {
        +      "type": "string"
        +    },
        +    "trip": {
        +      "type": "object"
        +    },
        +    "vpn": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "included"
        +  ],
        +  "type": "object"
        +}
    • Changedget_car_rental_links10 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • changedInput schema / properties / destination / description
        Previous value: -"Country, island or city where the car is picked up, e.g. Iceland, Crete, Lisbon"New value: +"Country, island or city where the car is picked up, e.g. Iceland, Crete, Lisbon."
      • addedInput schema / properties / destination / maxLength
        Added value: +120
      • changedInput schema / properties / dropoff_date / description
        Previous value: -"Optional drop-off date, YYYY-MM-DD"New value: +"Drop-off date, YYYY-MM-DD. Echoed in the response; entered on the provider site."
      • addedInput schema / properties / dropoff_date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / pickup_date / description
        Previous value: -"Optional pickup date, YYYY-MM-DD"New value: +"Pickup date, YYYY-MM-DD. Echoed in the response; entered on the provider site."
      • addedInput schema / properties / pickup_date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "bookingCars": {
        +      "type": "string"
        +    },
        +    "destination": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "dropoff": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pickup": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "providers": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "region": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "providers",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_credit_card_links5 fields changed
      • changedInput schema / properties / card / description
        Previous value: -"Optional specific Amex card"New value: +"Restrict the response to one American Express card. \"green\" is the American Express Card, successor to the retired Green Card."
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "card": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "cards": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "country": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "facts": {
        +      "description": "Verified fee and welcome-offer figures, currently published for Germany only. Null elsewhere.",
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "cards",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_esim_links4 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Country or region the data is for, e.g. Japan, Europe, USA"New value: +"Country or region the data plan is for, e.g. Japan, Europe, USA."
      • addedInput schema / properties / destination / maxLength
        Added value: +120
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "destination": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "providers": {
        +      "items": {
        +        "properties": {
        +          "label": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "label",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "providers",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_flight_links13 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • changedInput schema / properties / depart_date / description
        Previous value: -"Optional outbound date, YYYY-MM-DD"New value: +"Outbound date, YYYY-MM-DD. Omitted dates default to about a month ahead."
      • addedInput schema / properties / depart_date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedInput schema / properties / destination / description
        Previous value: -"Destination IATA city/airport code, e.g. HKT, TYO, ROM"New value: +"Destination IATA city or airport code, e.g. HKT, TYO, ROM."
      • addedInput schema / properties / destination / maxLength
        Added value: +40
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin IATA city/airport code, e.g. LON, NYC, BER"New value: +"Origin IATA city or airport code, e.g. LON, NYC, BER."
      • addedInput schema / properties / origin / maxLength
        Added value: +40
      • changedInput schema / properties / passengers / description
        Previous value: -"Passengers (default 1)"New value: +"Number of adult passengers. Defaults to 1."
      • changedInput schema / properties / return_date / description
        Previous value: -"Optional return date, YYYY-MM-DD (omit for one-way)"New value: +"Return date, YYYY-MM-DD. Omit for a one-way search."
      • addedInput schema / properties / return_date / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "airIndia": {
        +      "type": "string"
        +    },
        +    "airSerbia": {
        +      "type": "string"
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "flightCompensation": {
        +      "type": "string"
        +    },
        +    "flightSearch": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "region": {
        +      "type": "string"
        +    },
        +    "route": {
        +      "type": "object"
        +    },
        +    "vueling": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "flightSearch",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_hotel_links13 fields changed
      • changedInput schema / properties / adults / description
        Previous value: -"Adults (default 2)"New value: +"Number of adults. Defaults to 2."
      • changedInput schema / properties / checkin / description
        Previous value: -"Optional check-in date, YYYY-MM-DD"New value: +"Check-in date, YYYY-MM-DD. Used only when checkout is also given."
      • addedInput schema / properties / checkin / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • changedInput schema / properties / checkout / description
        Previous value: -"Optional check-out date, YYYY-MM-DD"New value: +"Check-out date, YYYY-MM-DD."
      • addedInput schema / properties / checkout / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
      • addedInput schema / properties / children
        Added value: +{
        +  "description": "Number of children. Defaults to 0.",
        +  "maximum": 10,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / city / description
        Previous value: -"City, region or property name to search, e.g. Rome, Phuket"New value: +"City, region or property name to search, e.g. Rome, Phuket, Hotel Kossak."
      • addedInput schema / properties / city / maxLength
        Added value: +120
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 alpha-2 country of the traveler; defaults to the caller's geolocation"New value: +"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."
      • addedInput schema / properties / country / pattern
        Added value: +"^[A-Za-z]{2}$"
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / rooms / description
        Previous value: -"Rooms (default 1)"New value: +"Number of rooms. Defaults to 1."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "adults": {
        +      "type": "integer"
        +    },
        +    "checkin": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "checkout": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "children": {
        +      "type": "integer"
        +    },
        +    "city": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hotelSearch": {
        +      "type": "string"
        +    },
        +    "ihg": {
        +      "type": "string"
        +    },
        +    "region": {
        +      "type": "string"
        +    },
        +    "rooms": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "hotelSearch",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedget_travel_vpn_links2 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "guides": {
        +      "description": "Matching VoyageHacks guides that can be cited as sources.",
        +      "items": {
        +        "properties": {
        +          "section": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "vpn": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "disclosure",
        +    "vpn",
        +    "guides"
        +  ],
        +  "type": "object"
        +}
    • Changedrecommend_travel_gear12 fields changed
      • addedInput schema / properties / activities
        Added value: +{
        +  "description": "Optional activities, e.g. [\"hiking\", \"photography\", \"remote work\", \"camping\", \"beach\"].",
        +  "items": {
        +    "maxLength": 60,
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "type": "array"
        +}
      • addedInput schema / properties / budget
        Added value: +{
        +  "description": "Optional budget level. Recorded in the response; the catalog carries no prices, so it does not filter products.",
        +  "enum": [
        +    "budget",
        +    "mid_range",
        +    "premium"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / destination
        Added value: +{
        +  "description": "Optional country, region or city, e.g. Japan, Iceland, Thailand.",
        +  "maxLength": 120,
        +  "type": "string"
        +}
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Max items in the kit (default 6)"New value: +"Maximum items in the kit. Defaults to 6."
      • addedInput schema / properties / luggage
        Added value: +{
        +  "description": "Optional luggage constraint. carry_on_only and personal_item_only weight the packing and compression categories.",
        +  "enum": [
        +    "carry_on_only",
        +    "personal_item_only",
        +    "checked_bag",
        +    "backpack"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / season
        Added value: +{
        +  "description": "Optional season or climate at the destination.",
        +  "enum": [
        +    "spring",
        +    "summer",
        +    "autumn",
        +    "winter",
        +    "rainy",
        +    "dry"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / traveler_type
        Added value: +{
        +  "description": "Optional traveler type.",
        +  "enum": [
        +    "solo",
        +    "couple",
        +    "family",
        +    "business",
        +    "backpacker",
        +    "digital_nomad"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / trip / description
        Previous value: -"Free-text trip description: destination, length, style, flight type, season, gadgets needed"New value: +"Free-text trip description: destination, length, style, flight type, season, gadgets needed."
      • addedInput schema / properties / trip / maxLength
        Added value: +600
      • addedInput schema / properties / trip_length_days
        Added value: +{
        +  "description": "Optional trip length in days.",
        +  "maximum": 365,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "criteria": {
        +      "description": "Structured hints that were applied.",
        +      "type": "object"
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "hub": {
        +      "type": "string"
        +    },
        +    "kit": {
        +      "items": {
        +        "properties": {
        +          "affiliate": {
        +            "description": "True: the buy link is an affiliate link.",
        +            "type": "boolean"
        +          },
        +          "asin": {
        +            "type": "string"
        +          },
        +          "badge": {
        +            "description": "Editorial label, e.g. \"Best overall\".",
        +            "type": "string"
        +          },
        +          "buyUrl": {
        +            "description": "Amazon product page, carrying the VoyageHacks Associates tag.",
        +            "type": "string"
        +          },
        +          "category": {
        +            "description": "Product category, taken from the buying guide it appears in.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "reviewGuide": {
        +            "properties": {
        +              "title": {
        +                "type": "string"
        +              },
        +              "updated": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "title",
        +              "url"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "description": "Always \"amazon\".",
        +            "type": "string"
        +          },
        +          "whyThisOne": {
        +            "description": "The published reason this product was picked.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "asin",
        +          "buyUrl",
        +          "source",
        +          "affiliate",
        +          "reviewGuide"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "lang": {
        +      "type": "string"
        +    },
        +    "trip": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "trip",
        +    "lang",
        +    "kit",
        +    "disclosure"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_articles6 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Max results (default 5)"New value: +"Maximum results to return. Defaults to 5."
      • changedInput schema / properties / query / description
        Previous value: -"Search terms, e.g. \"cheap hotels rome\" or \"esim japan\""New value: +"Search terms, e.g. \"cheap hotels rome\" or \"esim japan\". Matched against titles, keywords, tags and article text."
      • addedInput schema / properties / query / maxLength
        Added value: +300
      • addedInput schema / properties / section
        Added value: +{
        +  "description": "Restrict results to one site section. Omit to search every 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"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "lang": {
        +      "type": "string"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "resultCount": {
        +      "type": "integer"
        +    },
        +    "results": {
        +      "items": {
        +        "properties": {
        +          "lang": {
        +            "type": "string"
        +          },
        +          "section": {
        +            "type": "string"
        +          },
        +          "snippet": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "description": "Canonical URL, safe to cite.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "title",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "section": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "lang",
        +    "results"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_travel_gear5 fields changed
      • changedInput schema / properties / lang / description
        Previous value: -"Content language for the guides that come back (default \"en\")"New value: +"Language of the VoyageHacks guides returned. One of: en, de, fr, es, it, pl, cs, ja, nl, pt, zh. Defaults to \"en\"."
      • changedInput schema / properties / limit / description
        Previous value: -"Max products (default 6)"New value: +"Maximum products to return. Defaults to 6."
      • changedInput schema / properties / query / description
        Previous value: -"What the traveler needs, e.g. \"power bank for a long flight\", \"packing cubes\", \"adapter for Japan\""New value: +"What the traveler needs, e.g. \"power bank for a long flight\", \"packing cubes\", \"adapter for Japan\"."
      • addedInput schema / properties / query / maxLength
        Added value: +300
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "hub": {
        +      "type": "string"
        +    },
        +    "lang": {
        +      "type": "string"
        +    },
        +    "productCount": {
        +      "type": "integer"
        +    },
        +    "products": {
        +      "items": {
        +        "properties": {
        +          "affiliate": {
        +            "description": "True: the buy link is an affiliate link.",
        +            "type": "boolean"
        +          },
        +          "asin": {
        +            "type": "string"
        +          },
        +          "badge": {
        +            "description": "Editorial label, e.g. \"Best overall\".",
        +            "type": "string"
        +          },
        +          "buyUrl": {
        +            "description": "Amazon product page, carrying the VoyageHacks Associates tag.",
        +            "type": "string"
        +          },
        +          "category": {
        +            "description": "Product category, taken from the buying guide it appears in.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "reviewGuide": {
        +            "properties": {
        +              "title": {
        +                "type": "string"
        +              },
        +              "updated": {
        +                "type": "string"
        +              },
        +              "url": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "title",
        +              "url"
        +            ],
        +            "type": "object"
        +          },
        +          "source": {
        +            "description": "Always \"amazon\".",
        +            "type": "string"
        +          },
        +          "whyThisOne": {
        +            "description": "The published reason this product was picked.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "asin",
        +          "buyUrl",
        +          "source",
        +          "affiliate",
        +          "reviewGuide"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "lang",
        +    "products",
        +    "disclosure"
        +  ],
        +  "type": "object"
        +}
  2. 12 tool updates
    • First observedget_airport_transfer_links
    • First observedget_article
    • First observedget_booking_links
    • First observedget_car_rental_links
    • First observedget_credit_card_links
    • First observedget_esim_links
    • First observedget_flight_links
    • First observedget_hotel_links
    • First observedget_travel_vpn_links
    • First observedrecommend_travel_gear
    • First observedsearch_articles
    • First observedsearch_travel_gear

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.