Skip to main content
Glama

Sorted Travel

get_recommended_destinations

Read-onlyIdempotent

Recommend destinations from a departure airport.

Use this whenever the traveler asks where to go. Only set filter arguments they explicitly asked for (month, airport, budget, weather, visa, tags). Omit all other filters so Sorted keeps its defaults. Never set a filter to false just because they did not mention it. When they name a continent or region, always set destination_tags (Africa → africa, Asia → asia, Europe → europe, Americas → americas, Middle East → middle-east, Caribbean → caribbean, Australia/Oceania → australia-oceania). Do not enable direct flights unless they asked. Passport names must match the visa table (USA, United Kingdom); aliases such as United States are accepted and normalized. source_location_code must be a supported origin, a city alias (PAR, LON, NYC), or ANYWHERE. ANYWHERE is fine for weather, region, or vibe asks that are not flight- or price-sensitive; it skips flight prices and direct-route filters. Use a supported airport (not ANYWHERE) for direct, cheap/budget, flight time, or layover asks. Do not use a destination airport_code from resolve_destination unless it is in the supported list. Never invent a destination list. Do not use this for live flight tickets. This tool returns data only. After a successful call, always call render_recommended_destinations so the destination carousel appears.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
monthsNoMonth when the traveler will travel. Omit unless specified.
is_safeNoSet true only if the traveler asked for safe destinations. Omit otherwise.
sort_byNoResult order. Omit unless the traveler asked to sort a specific way.
currencyNoUpper-case currency code for prices. Omit unless the traveler specified a currency.USD
max_priceNoMax price the traveler is willing to pay. Omit unless they specified a budget.
page_sizeNoNumber of results to return. Omit unless the traveler asked for a specific count.
passportsNoPassport countries for visa filtering. Use visa-table names such as USA and United Kingdom.
user_tagsNoInterest handles from saved traveler preferences, not explicit requests.
user_visasNoVisas the traveler said they hold. Use exact uppercase values (UK, SCHENGEN, NEW_ZEALAND).
is_visa_freeNoSet true only if the traveler asked for visa-free or eVisa destinations. Omit otherwise.
is_one_layoverNoSet true only if the traveler asked to limit to at most one layover. Omit otherwise.
is_weather_sunNoSet only when the traveler asked about sunny weather. Omit otherwise.
is_weather_rainNoSet true only when the traveler asked for rainy weather. Omit otherwise.
max_flight_timeNoMax flight time in hours. Omit unless the traveler specified a flight time limit.
temperature_maxNoMax temperature in Celsius. Omit unless the traveler specified a temperature range.
temperature_minNoMin temperature in Celsius. Omit unless the traveler specified a temperature range.
destination_tagsNoDestination interest handles the traveler asked for. Required for continents/regions: africa, asia, europe, americas, middle-east, caribbean, australia-oceania. Also features such as beach, hiking, romantic, kids-friendly. Combine feature and region tags when both are named (e.g. africa + beach).
is_weather_mixedNoSet only when the traveler asked about mixed or partly cloudy weather. Omit otherwise.
is_direct_flightsNoSet true only if the traveler asked for direct flights. Omit otherwise.
is_single_airlineNoSet true only if the traveler asked for a single airline or single ticket. Omit otherwise.
selected_airlinesNoAirline codes to filter by. Omit unless the traveler named airlines.
source_location_codeNoDeparture IATA from Sorted's supported origins only: AMS, BCN, BER, BOS, CDG, DUB, FRA, JFK, LHR, SFO, SYD, YYZ. City codes and aliases PAR→CDG, LON→LHR, NYC→JFK (and sibling airports such as ORY, LGW, EWR) are accepted. ANYWHERE is fine when the ask is not flight- or price-sensitive (weather, region, vibe); it skips flight prices and direct-route filters. Use a supported airport (not ANYWHERE) for direct, cheap/budget, flight time, or layover asks. Do not use a destination airport_code from resolve_destination unless it is in the supported list (for example DXB is not a Sorted origin).LHR
is_price_filter_enabledNoSet true only when the traveler specified a budget (with max_price). Omit otherwise.
is_weather_filter_enabledNoSet true only when the traveler asked for weather or temperature constraints. Omit otherwise.
is_flight_time_filter_enabledNoSet true only when the traveler specified a max flight time. Omit otherwise.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / source_location_code / description
      Previous value: -"IATA airport code of the departure airport. City codes such as PAR, LON, and NYC are accepted and mapped to a supported airport."New value: +"Departure IATA from Sorted's supported origins only: AMS, BCN, BER, BOS, CDG, DUB, FRA, JFK, LHR, SFO, SYD, YYZ. City codes and aliases PAR→CDG, LON→LHR, NYC→JFK (and sibling airports such as ORY, LGW, EWR) are accepted. ANYWHERE is fine when the ask is not flight- or price-sensitive (weather, region, vibe); it skips flight prices and direct-route filters. Use a supported airport (not ANYWHERE) for direct, cheap/budget, flight time, or layover asks. Do not use a destination airport_code from resolve_destination unless it is in the supported list (for example DXB is not a Sorted origin)."
  2. Changed3 schema fields changed
    • changedInput schema / properties / destination_tags / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "description": "Destination interest handle from the Sorted catalog (beach, asia, hiking, romantic, kids-friendly).",
      -      "enum": [
      -        "beach",
      -        "islands",
      -        "desert",
      -        "culture",
      -        "cuisine",
      -        "romantic",
      -        "kids-friendly",
      -        "advanced",
      -        "skyscrapers",
      -        "wildlife",
      -        "kite-surfing",
      -        "hiking",
      -        "diving-snorkeling",
      -        "skiing-snowboarding",
      -        "surfing",
      -        "one-three-days",
      -        "three-seven-days",
      -        "seven-plus-days",
      -        "africa",
      -        "asia",
      -        "middle-east",
      -        "americas",
      -        "australia-oceania",
      -        "caribbean",
      -        "europe"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Destination interest handle from the Sorted catalog. Feature examples: beach, hiking, romantic, kids-friendly. Region examples: africa, asia, europe, americas, middle-east, caribbean, australia-oceania.",
      +      "enum": [
      +        "beach",
      +        "islands",
      +        "desert",
      +        "culture",
      +        "cuisine",
      +        "romantic",
      +        "kids-friendly",
      +        "advanced",
      +        "skyscrapers",
      +        "wildlife",
      +        "kite-surfing",
      +        "hiking",
      +        "diving-snorkeling",
      +        "skiing-snowboarding",
      +        "surfing",
      +        "one-three-days",
      +        "three-seven-days",
      +        "seven-plus-days",
      +        "africa",
      +        "asia",
      +        "middle-east",
      +        "americas",
      +        "australia-oceania",
      +        "caribbean",
      +        "europe"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / destination_tags / description
      Previous value: -"Destination interest handles the traveler asked for (beach, asia, hiking, romantic, kids-friendly). Combine feature and region tags when both are named."New value: +"Destination interest handles the traveler asked for. Required for continents/regions: africa, asia, europe, americas, middle-east, caribbean, australia-oceania. Also features such as beach, hiking, romantic, kids-friendly. Combine feature and region tags when both are named (e.g. africa + beach)."
    • changedInput schema / properties / user_tags / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "description": "Destination interest handle from the Sorted catalog (beach, asia, hiking, romantic, kids-friendly).",
      -      "enum": [
      -        "beach",
      -        "islands",
      -        "desert",
      -        "culture",
      -        "cuisine",
      -        "romantic",
      -        "kids-friendly",
      -        "advanced",
      -        "skyscrapers",
      -        "wildlife",
      -        "kite-surfing",
      -        "hiking",
      -        "diving-snorkeling",
      -        "skiing-snowboarding",
      -        "surfing",
      -        "one-three-days",
      -        "three-seven-days",
      -        "seven-plus-days",
      -        "africa",
      -        "asia",
      -        "middle-east",
      -        "americas",
      -        "australia-oceania",
      -        "caribbean",
      -        "europe"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Destination interest handle from the Sorted catalog. Feature examples: beach, hiking, romantic, kids-friendly. Region examples: africa, asia, europe, americas, middle-east, caribbean, australia-oceania.",
      +      "enum": [
      +        "beach",
      +        "islands",
      +        "desert",
      +        "culture",
      +        "cuisine",
      +        "romantic",
      +        "kids-friendly",
      +        "advanced",
      +        "skyscrapers",
      +        "wildlife",
      +        "kite-surfing",
      +        "hiking",
      +        "diving-snorkeling",
      +        "skiing-snowboarding",
      +        "surfing",
      +        "one-three-days",
      +        "three-seven-days",
      +        "seven-plus-days",
      +        "africa",
      +        "asia",
      +        "middle-east",
      +        "americas",
      +        "australia-oceania",
      +        "caribbean",
      +        "europe"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Changed4 schema fields changed
    • changedInput schema / properties / destination_tags / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Destination interest handle from the Sorted catalog (beach, asia, hiking, romantic, kids-friendly).",
      +      "enum": [
      +        "beach",
      +        "islands",
      +        "desert",
      +        "culture",
      +        "cuisine",
      +        "romantic",
      +        "kids-friendly",
      +        "advanced",
      +        "skyscrapers",
      +        "wildlife",
      +        "kite-surfing",
      +        "hiking",
      +        "diving-snorkeling",
      +        "skiing-snowboarding",
      +        "surfing",
      +        "one-three-days",
      +        "three-seven-days",
      +        "seven-plus-days",
      +        "africa",
      +        "asia",
      +        "middle-east",
      +        "americas",
      +        "australia-oceania",
      +        "caribbean",
      +        "europe"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / destination_tags / description
      Previous value: -"Destination features the traveler asked for (romantic, beach, kids-friendly)."New value: +"Destination interest handles the traveler asked for (beach, asia, hiking, romantic, kids-friendly). Combine feature and region tags when both are named."
    • changedInput schema / properties / user_tags / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Destination interest handle from the Sorted catalog (beach, asia, hiking, romantic, kids-friendly).",
      +      "enum": [
      +        "beach",
      +        "islands",
      +        "desert",
      +        "culture",
      +        "cuisine",
      +        "romantic",
      +        "kids-friendly",
      +        "advanced",
      +        "skyscrapers",
      +        "wildlife",
      +        "kite-surfing",
      +        "hiking",
      +        "diving-snorkeling",
      +        "skiing-snowboarding",
      +        "surfing",
      +        "one-three-days",
      +        "three-seven-days",
      +        "seven-plus-days",
      +        "africa",
      +        "asia",
      +        "middle-east",
      +        "americas",
      +        "australia-oceania",
      +        "caribbean",
      +        "europe"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / user_tags / description
      Previous value: -"Tags from saved traveler preferences, not explicit requests."New value: +"Interest handles from saved traveler preferences, not explicit requests."
  4. Changed2 schema fields changed
    • changedInput schema / properties / source_location_code / description
      Previous value: -"IATA airport code of the departure airport."New value: +"IATA airport code of the departure airport. City codes such as PAR, LON, and NYC are accepted and mapped to a supported airport."
    • addedInput schema / properties / source_location_code / enum
      Added value: +[
      +  "AMS",
      +  "ANYWHERE",
      +  "BCN",
      +  "BER",
      +  "BOS",
      +  "CDG",
      +  "DUB",
      +  "EWR",
      +  "FRA",
      +  "JFK",
      +  "LGA",
      +  "LGW",
      +  "LHR",
      +  "LON",
      +  "LTN",
      +  "NYC",
      +  "ORY",
      +  "PAR",
      +  "SFO",
      +  "STN",
      +  "SYD",
      +  "YTO",
      +  "YYZ"
      +]
  5. Added
  6. Removed
  7. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive. The description adds real behavioral context beyond them: 'This tool returns data only' plus the mandatory follow-up render call, and that ANYWHERE 'skips flight prices and direct-route filters'. It does not disclose pagination/result-limit behavior, so not a full 5.

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?

Dense but well front-loaded, leading with purpose then usage rules. A few instructions restate schema/enum content (e.g. supported origin list), which is minor redundancy given the flat paragraph structure.

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 25-parameter tool with an output schema, the description covers the risky decision points (source_location_code selection, tag mapping, filter defaults, downstream render call) and omits return-value explanation that the output schema already handles.

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 baseline is 3, but the description adds semantics beyond the schema: 'Never set a filter to false just because they did not mention it', the explicit continent→tag mapping (Africa→africa, etc.), passport alias normalization, and ANYWHERE constraint rules. These meaningfully shape correct invocation.

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?

Opens with a specific verb+resource ('Recommend destinations from a departure airport') that unambiguously distinguishes it from siblings like resolve_destination and get_destination_info. An agent can tell immediately what this tool produces.

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?

Explicit when-to-use ('whenever the traveler asks where to go'), when-not ('Do not use this for live flight tickets'), and alternatives/next-steps (call render_recommended_destinations). It also routes the ANYWHERE vs supported-airport decision and the direct/cheap/flight-time cases.

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.

Resources