Search eSky holiday packages (flight + hotel), destination ideas and regions, with a booking link.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Lists the destination countries available for holiday package search, with names and the two-letter country codes used by search_packages. Read-only.
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http esky-holidays https://mcp.esky.com/claude
Lists the destination countries available for holiday package search, with names and the two-letter country codes used by search_packages. Read-only.
No arguments.
{
"type": "object",
"properties": {}
}Lists the regions and cities of one destination country, with names and codes; a code narrows search_packages through its regionCode parameter. Read-only.
| Argument | Type | Description |
|---|---|---|
| countryCode* | string | Two-letter destination country code (e.g. 'ES' for Spain, 'GR' for Greece), as listed by get_countries. |
{
"type": "object",
"required": [
"countryCode"
],
"properties": {
"countryCode": {
"type": "string",
"description": "Two-letter destination country code (e.g. 'ES' for Spain, 'GR' for Greece), as listed by get_countries."
}
}
}Suggests holiday destinations for a natural-language request (e.g. 'warm beach in November with small children'). Returns destination ideas with an indicative package price per person, the reason each one matches, and the countryCode that search_packages accepts. Suited to requests without a chosen destination country. Read-only.
| Argument | Type | Description |
|---|---|---|
| query* | string | What the user is looking for, in one or two short sentences, including the constraints that apply to this search (e.g. 'sunny beach holiday in June from Warsaw, 2 adults and a 5-year-old, under 6000 PLN'). |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "What the user is looking for, in one or two short sentences, including the constraints that apply to this search (e.g. 'sunny beach holiday in June from Warsaw, 2 adults and a 5-year-old, under 6000 PLN')."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | null | Number of results to return (default 6, max 30) |
| adults | integer | Number of adults (default: 2) |
| cursor | string | Cursor for pagination (from previous response's nextCursor) |
| dateTo | string | Latest return date, YYYY-MM-DD (optional, defaults to 2 months from now). At least the minimum nights after dateFrom; a shorter window is rejected. |
| nights | integer | Number of nights (default: 7) |
| sortBy | string | Sort results by: 'popularity' (default, most booked first), 'price', 'rating', or 'stars'. |
| dateFrom | string |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 2, 2026.
| Earliest departure, YYYY-MM-DD (optional, defaults to tomorrow). With dateTo, the window the whole trip must fit in. |
| maxPrice | number | null | Maximum price in the local currency (optional) |
| maxStars | integer | null | Maximum hotel star rating 1-5 (optional) |
| mealType | string | Meal plan filter: 'breakfast' (BB), 'half-board' (HB), 'full-board' (FB), 'all-inclusive' (AI), or 'room-only' (RO) |
| minPrice | number | null | Minimum price in the local currency (optional) |
| minStars | integer | null | Minimum hotel star rating 1-5 (optional) |
| nightsMax | integer | null | Maximum number of nights of a flexible range (optional, together with nightsMin). When set, 'nights' is ignored. |
| nightsMin | integer | null | Minimum number of nights of a flexible range (optional, together with nightsMax). When set, 'nights' is ignored. |
| sortOrder | string | Sort order: 'asc' (ascending) or 'desc' (descending). Default depends on sort type. |
| regionCode | string | Optional 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. |
| countryCode* | string | Two-letter destination country code (e.g. 'ES' for Spain, 'GR' for Greece, 'TR' for Turkey, 'EG' for Egypt), as listed by get_countries. |
| childrenAges | array | Ages of children (optional, empty array if no children) |
| departureAirport | string | Departure airport IATA code (e.g. 'WAW' or 'KTW' on eSky, 'MAN' or 'LGW' on Thomas Cook UK). Omitted = all available departure airports. |
{
"type": "object",
"required": [
"countryCode"
],
"properties": {
"limit": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Number of results to return (default 6, max 30)"
},
"adults": {
"type": "integer",
"default": 2,
"description": "Number of adults (default: 2)"
},
"cursor": {
"type": "string",
"default": null,
"description": "Cursor for pagination (from previous response's nextCursor)"
},
"dateTo": {
"type": "string",
"default": "",
"description": "Latest return date, YYYY-MM-DD (optional, defaults to 2 months from now). At least the minimum nights after dateFrom; a shorter window is rejected."
},
"nights": {
"type": "integer",
"default": 7,
"description": "Number of nights (default: 7)"
},
"sortBy": {
"type": "string",
"default": null,
"description": "Sort results by: 'popularity' (default, most booked first), 'price', 'rating', or 'stars'."
},
"dateFrom": {
"type": "string",
"default": "",
"description": "Earliest departure, YYYY-MM-DD (optional, defaults to tomorrow). With dateTo, the window the whole trip must fit in."
},
"maxPrice": {
"type": [
"number",
"null"
],
"default": null,
"description": "Maximum price in the local currency (optional)"
},
"maxStars": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Maximum hotel star rating 1-5 (optional)"
},
"mealType": {
"type": "string",
"default": null,
"description": "Meal plan filter: 'breakfast' (BB), 'half-board' (HB), 'full-board' (FB), 'all-inclusive' (AI), or 'room-only' (RO)"
},
"minPrice": {
"type": [
"number",
"null"
],
"default": null,
"description": "Minimum price in the local currency (optional)"
},
"minStars": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Minimum hotel star rating 1-5 (optional)"
},
"nightsMax": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Maximum number of nights of a flexible range (optional, together with nightsMin). When set, 'nights' is ignored."
},
"nightsMin": {
"type": [
"integer",
"null"
],
"default": null,
"description": "Minimum number of nights of a flexible range (optional, together with nightsMax). When set, 'nights' is ignored."
},
"sortOrder": {
"type": "string",
"default": null,
"description": "Sort order: 'asc' (ascending) or 'desc' (descending). Default depends on sort type."
},
"regionCode": {
"type": "string",
"default": null,
"description": "Optional 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."
},
"countryCode": {
"type": "string",
"description": "Two-letter destination country code (e.g. 'ES' for Spain, 'GR' for Greece, 'TR' for Turkey, 'EG' for Egypt), as listed by get_countries."
},
"childrenAges": {
"type": "array",
"items": {
"type": "integer"
},
"default": null,
"description": "Ages of children (optional, empty array if no children)"
},
"departureAirport": {
"type": "string",
"default": null,
"description": "Departure airport IATA code (e.g. 'WAW' or 'KTW' on eSky, 'MAN' or 'LGW' on Thomas Cook UK). Omitted = all available departure airports."
}
}
}