← Back to all apps

ThomasCook

Travelby eSky Group
Launched Mar 30, 2026 on ChatGPT

Search and compare holiday deals — flights and hotels bundled together — across popular vacation destinations.

Just describe where you want to go, when, and for how many people, and get real offers with prices, hotel details, star ratings, photos, and direct booking links.

Filter by budget, meal plan, or hotel stars. Results are displayed as easy-to-browse visual cards with everything you need to book your next holiday.

4ChatGPT Tools
eSky GroupDeveloper
TravelCategory

Available Tools

Get Countries

get_countries
Full Description

Get list of available destination countries for holidays search. Returns country names and two-letter codes.

Get Regions

get_regions
Full Description

Get available regions and cities for a specific destination country. Returns region/city names and codes usable with the search_packages regionCode parameter to narrow holiday search results.

Parameters (1 required)
Required
countryCodestring

Two-letter country code (e.g., 'ES' for Spain, 'GR' for Greece). Use get_countries to find valid codes.

Search Inspirations

search_inspirations
Full Description

Search for travel destination ideas using a natural language query. Returns curated destinations with pricing (per person), reasons why they fit the user's preferences, and identifiers for downstream package searches. Use this as the entry point for destination DISCOVERY queries ("somewhere warm", "beach vacation", "exotic in March", "family trip to Mediterranean").

TWO INPUT CHANNELS — split user intent from booking context:

query carries ONLY the user's intent for THIS turn (what they just said, lightly normalized). Keep it short. Do NOT stuff the full conversation history here.

context carries the FULL, CURRENT, ACCUMULATED state of every constraint the user has stated at ANY point in the conversation. On EVERY call send the complete current context, not just the delta. When the user mutates a value (new budget, new dates, new origin), REPLACE the old value and keep everything else intact.

Fields to enumerate in context (include every one the user stated):

  • origins: departure airport(s) or city name(s) (IATA if known: WRO, KRK, LHR)
  • destination / region / country + explicit exclusions
  • travel dates + flexibility
  • passenger composition: adults count, children count, and EACH child's age

("4 adults + 2 children aged 1 and 4", never just "4 adults + 2 children")

  • budget: amount + currency + per-person vs. total
  • hotel: star rating, board type (all-inclusive, HB, BB...), amenities
  • flight preferences: direct-only, duration cap, airline
  • running exclusions: "do not return: [Rome, Malta, Barcelona]"

QUERY BUILDING RULES:

  • Do NOT enrich with keywords the user never mentioned (no assumed interests, tags, or defaults)
  • Do NOT add "2 adults" or "departure from Poland" unless the user explicitly stated it
  • When refining ("cheaper", "more exotic", "farther"), keep query = original + refinement word,

and add "do not return: [previously shown destinations]" to context

SMART DATE WINDOW — for long weekends / bank holidays, expand ±1–2 days for flight flexibility:

  • "majówka 2027" (1–3 May) → dates: 2027-04-30..2027-05-04
  • "May bank holiday 2027" (Mon 3 May) → dates: 2027-04-30..2027-05-04

Examples of the query/context split: Turn 1: user asks for "family beach holiday in Mediterranean, 4 adults + 2 children aged 1 and 4, 15–22 July 2026, from Wrocław, budget 20000 PLN total, all-inclusive hotel with pool" → query: "family holiday Mediterranean beach" → context: "origins: WRO; dates: 2026-07-15..2026-07-22 (fixed); pax: 4 adults + 2 children aged 1 and 4; budget: 20000 PLN total; hotel: all-inclusive, pool"

Turn 2: user says "cheaper" → query: "family holiday Mediterranean beach cheaper" → context: "origins: WRO; dates: 2026-07-15..2026-07-22 (fixed); pax: 4 adults + 2 children aged 1 and 4; budget: 20000 PLN total; hotel: all-inclusive, pool; do not return: [Rome, Malta, Barcelona]"

GUARDRAILS:

  • Do NOT invent destinations — only return results from this tool
  • If the tool returns an empty list, retry ONCE with a shorter, broader query (remove constraints,

do not add new ones). If still empty, inform the user and ask them to rephrase.

  • locationId and arrivalAirportCode are opaque identifiers — pass them verbatim to downstream

package search tools; never modify or invent values.

  • After presenting results, wait for the user to choose a destination before calling search_packages.
Parameters (1 required, 1 optional)
Required
querystring

User's intent for THIS turn only — what they just said, lightly normalized. Short. Do NOT include accumulated booking state here, put that in `context`.

Optional
contextstring

Full accumulated booking state from the entire conversation: origins, dates, pax (with children ages), budget, hotel preferences, exclusions. On every call re-emit the complete current state. Pass empty string only on the very first turn when the user has stated nothing beyond the query itself.

Search Packages

search_packages
Full Description

Search for holidays / vacation packages (flights + hotel) to a specific destination country. Returns packages with hotel details, flight info, pricing, and booking links. Only countryCode is required; other parameters are optional with sensible defaults (dates: next 2 months, nights: 7, adults: 2). Supports filtering by price range, hotel stars, meal plan, region, departure airport, and sorting by price, rating, stars, or popularity. Use regionCode from get_regions for region-specific searches. Supports pagination via cursor.

Parameters (1 required, 18 optional)
Required
countryCodestring

Destination country code (e.g., 'ES' for Spain, 'GR' for Greece, 'TR' for Turkey, 'EG' for Egypt). Use get_countries to see available destinations.

Optional
adultsinteger

Number of adults (default: 2)

Default: 2
childrenAgesarray

Ages of children (optional, empty array if no children)

Default: null
cursorstring

Cursor for pagination (from previous response's nextCursor)

Default: null
dateFromstring

Departure date range start in YYYY-MM-DD format (optional, defaults to tomorrow)

dateTostring

Departure date range end in YYYY-MM-DD format (optional, defaults to 2 months from now)

departureAirportstring

Departure airport IATA code (e.g., 'LHR', 'MAN', 'WAW'). If not specified, searches from all available airports.

Default: null
limitinteger/null

Number of results to return (default 6, max 30)

Default: null
maxPricenumber/null

Maximum price in the local currency (optional)

Default: null
maxStarsinteger/null

Maximum hotel star rating 1-5 (optional)

Default: null
mealTypestring

Meal plan filter: 'breakfast' (BB), 'half-board' (HB), 'full-board' (FB), 'all-inclusive' (AI), or 'room-only' (RO)

Default: null
minPricenumber/null

Minimum price in the local currency (optional)

Default: null
minStarsinteger/null

Minimum hotel star rating 1-5 (optional)

Default: null
nightsinteger

Number of nights (default: 7)

Default: 7
nightsMaxinteger/null

Maximum number of nights for flexible range (optional, use with nightsMin). If set, 'nights' is ignored.

Default: null
nightsMininteger/null

Minimum number of nights for flexible range (optional, use with nightsMax). If set, 'nights' is ignored.

Default: null
regionCodestring

Region or city code to narrow search (optional). Get codes from get_regions tool. Example: 're-ACA' for a region.

Default: null
sortBystring

Sort results by: 'popularity' (default), 'price', 'rating', or 'stars'. Default is popularity (most booked first) — do NOT change unless the user explicitly asks to sort differently. Never default to price sorting.

Default: null
sortOrderstring

Sort order: 'asc' (ascending) or 'desc' (descending). Default depends on sort type.

Default: null