Skip to main content
Glama

Search holiday packages

search_packages
Read-onlyIdempotent

Searches holiday packages (flight + hotel) to one destination country. Returns packages with hotel name, stars, guest rating, board, departure date and airports, total and per-person price, and a link to book on the brand's website. Filters: dates, nights, travellers, departure airport, price, stars, board and region (regionCode from get_regions of the same country, countryCode from get_countries); sorting by popularity, price, rating or stars; cursor pagination. Only countryCode is required (defaults: departures in the next 2 months, 7 nights, 2 adults). Read-only.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of results to return (default 6, max 30)
adultsNoNumber of adults (default: 2)
cursorNoCursor for pagination (from previous response's nextCursor)
dateToNoLatest return date, YYYY-MM-DD (optional, defaults to 2 months from now). At least the minimum nights after dateFrom; a shorter window is rejected.
nightsNoNumber of nights (default: 7)
sortByNoSort results by: 'popularity' (default, most booked first), 'price', 'rating', or 'stars'.
dateFromNoEarliest departure, YYYY-MM-DD (optional, defaults to tomorrow). With dateTo, the window the whole trip must fit in.
maxPriceNoMaximum price in the local currency (optional)
maxStarsNoMaximum hotel star rating 1-5 (optional)
mealTypeNoMeal plan filter: 'breakfast' (BB), 'half-board' (HB), 'full-board' (FB), 'all-inclusive' (AI), or 'room-only' (RO)
minPriceNoMinimum price in the local currency (optional)
minStarsNoMinimum hotel star rating 1-5 (optional)
nightsMaxNoMaximum number of nights of a flexible range (optional, together with nightsMin). When set, 'nights' is ignored.
nightsMinNoMinimum number of nights of a flexible range (optional, together with nightsMax). When set, 'nights' is ignored.
sortOrderNoSort order: 'asc' (ascending) or 'desc' (descending). Default depends on sort type.
regionCodeNoOptional region or city code from get_regions for the same countryCode (e.g. 're-ACA'); a code of another country is rejected. Narrows the search.
countryCodeYesTwo-letter destination country code (e.g. 'ES' for Spain, 'GR' for Greece, 'TR' for Turkey, 'EG' for Egypt), as listed by get_countries.
childrenAgesNoAges of children (optional, empty array if no children)
departureAirportNoDeparture airport IATA code (e.g. 'WAW' or 'KTW' on eSky, 'MAN' or 'LGW' on Thomas Cook UK). Omitted = all available departure airports.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and open-world, so 'Read-only' in the description adds nothing. Useful added context exists: cursor pagination, a note that a too-short date window is rejected, and that a regionCode from another country is rejected. Those are validation/rejection behaviours worth surfacing, but they're buried and thin for a 19-parameter search.

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?

Purpose is front-loaded in the first clause, and the return-value list comes before the filter enumeration, which matches an agent's decision order. The second sentence is a long comma-chained inventory, but nearly every clause carries information.

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?

No output schema exists, and the description compensates by naming the returned fields, including price semantics (total and per-person) and a booking link. Combined with the defaults, cursor and rejection rules, an agent has everything needed to call a 19-parameter search correctly on the first attempt.

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%, so the schema already documents every parameter and its enum-like values, making 3 the baseline. The description adds provenance for regionCode/countryCode (get_regions/get_countries) and summarises the filter families and sort keys. Its 'departures in the next 2 months' summary is slightly looser than the schema's dateFrom=tomorrow/dateTo=+2 months, and it says nothing about adults/children/limit interplay beyond defaults.

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

Purpose4/5

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

Opens with a specific verb and resource plus scope: 'Searches holiday packages (flight + hotel) to one destination country.' It also enumerates the returned fields, so an agent knows exactly what it gets. It never contrasts itself with search_inspirations, the closest sibling, so sibling differentiation is only partial.

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

Usage Guidelines4/5

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

States that only countryCode is required and spells out the defaults applied otherwise (next 2 months, 7 nights, 2 adults), which tells an agent it can call with a single argument. It routes code lookups to get_regions and get_countries. It gives no explicit when-not guidance or comparison to search_inspirations.

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