Skip to main content
Glama

Build a travel gear kit for a trip

recommend_travel_gear
Read-onlyIdempotent

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.

Input Schema

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
hubNo
kitYes
langYes
tripYes
criteriaNoStructured hints that were applied.
disclosureYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema 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"
      +}
  2. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.