Description

Search, compare and book flights, dynamic packages (flight + hotel) and hotels across global airlines and hotel suppliers.

Website Preview

Screenshot of lastminute.com website

App Screenshots

Capabilities

No special capabilities listed

Publisher Intelligence

Insights and recommendations for app publishers. See how your app performs and how to improve discoverability.

Server Status MCP_FLIGHT_HDP v2.13.0.2

---
Not Responding
---
Not Responding
---
Not Responding

Server is not responding. Tool discovery is paused until health checks recover.

https://mcp.lastminute.com/mcp

Last checked: 20h ago

Technical Details
Connection Latency 15ms
30-Day Uptime 100.0%
Error

Blocked by Cloudflare

Tools(8)

Showing 8 of 8 tools

Sorted by toolName
ToolDescriptionFlagsTestLast Tested
change_flight
Change the flight for an existing hotel selection. This tool updates the flight associated with your hotel booking after viewing alternatives. ⚠️ IMPORTANT: - Must be used AFTER get_alternative_flights to see available options - Requires both pricing_id and the new_transport_id from the alternatives list - This will update the total package price based on the new flight selection Example use cases: - "Change to flight option 2" - "Select the morning flight instead" - "Update to the cheaper flight option" Args: pricing_id: The pricing ID from select_hotel_options response new_transport_id: The transport ID of the selected alternative flight (from get_alternative_flights response) Returns: Dictionary confirming the flight change with updated package details
Not tested
generate_booking_link
Generate a direct booking URL for the selected hotel room option. After change_flight, rate_id values change but the internalIdRoom stays the same. This tool automatically maps old rate_id to new rate_id based on internalIdRoom only. Args: pricing_id: The pricing ID from select_hotel_options response (NOT search_id) rate_id: The rate ID of the selected room option (from select_hotel_options response) Returns: Dictionary containing the booking URL and summary details
read-only
Not tested
get_alternative_flights
Get alternative flight options for an existing hotel selection. Input parameters: - pricing_id (string, REQUIRED): pricing ID returned by select_hotel_options. Behavior: - Can ONLY be used AFTER select_hotel_options. - Returns a list of alternative flights with their details and prices. - On success, alternative flight options are also stored in session for later use by change_flight. - Don't touch the order of the proposed flights, return them as received from the backend.
read-only
Not tested
resolve_destination_id
Resolve a city name to its internal destination ID using the lastminute.com hints API. This tool is useful when you need to map a free-text city name to a structured destination identifier before performing a hotel or package search. Supported languages: IT, EN, ES, FR, DE, PL, SE, DK, NO, FI. Any unsupported language falls back to English (en-GB). Args: lang: 2-letter language code (e.g. "en", "it", "fr"). Case-insensitive. city_name: The city name to resolve (e.g. "London", "Roma", "Paris"). Returns: On exact match: { "success": true, "id": "<destination_id>", "name": "<matched city name>", "country": "<country name>", "country_code": "<ISO2 code>" } On no exact match (returns all City-type suggestions): { "success": false, "message": "No exact match found. Suggestions returned.", "suggestions": [ { "id": "...", "name": "...", "country": "...", "country_code": "...", }, ... ] } On API error: { "success": false, "error": "<error description>" }
read-only
Not tested
search_flight_and_hotel_package
🛫🏨 Search for COMBINED flight AND hotel vacation packages. This tool searches for all-inclusive vacation packages that include: - ✈️ Round-trip flights (outbound and return) - 🏨 Hotel accommodation for the entire stay - 💰 Package pricing (flight + hotel combined) ⚠️ IMPORTANT: This is for PACKAGE deals, NOT separate flight/hotel bookings. Is important to use the correct language in the destination field and keep the original language used in the request made in the user chat. Example use cases: - "Find me flight and hotel packages from Rome to Madrid" - "I need a vacation package with flights and hotel from FCO to Barcelona" - "Search flight+hotel deals from Milan to Paris for 3 nights" ═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════ 1. Dates: - start_date MUST be today or later (YYYY-MM-DD) - If user provides past date, ask for valid date BEFORE calling 2. IATA Codes (CRITICAL): - origin and destination MUST be 3-letter IATA codes, NOT city names - NEVER pass city names like "New York", "Geneva", "Milan" - use IATA codes instead - Both CITY codes and AIRPORT codes are accepted: * City codes: NYC, GVA, ZRH, DUB, BRU, VIE, MIL, LON, PAR, BSL * Airport codes: JFK, MXP, FCO, LHR (automatically converted to city codes) - Examples: MXP or MIL for Milan, JFK or NYC for New York, FCO or ROM for Rome Args: origin: IATA code only - 3 letters. Use city code (MIL, NYC, LON) or airport code (MXP, JFK, LHR). NEVER use city names like "Milan" or "New York". destination: IATA code only - 3 letters. Use city code (BCN, PMI) or airport code. NEVER use city names like "Barcelona" or "Palma". date_from: Check-in date (YYYY-MM-DD). Check this field MUST be today or later. date_to: Check-out date (YYYY-MM-DD). Check this field MUST be today or later. adults: Number of adult travelers. If you want different rooms, set number_adult_room1;number_adult_room2 (default: 2) ⚠️ IMPORTANT: ch_ages: Ages of child travelers. If you want different rooms, set number_chages_room1;number_chages_room2 (default: ""). If there are two rooms and one is empty the result can be ";number,number" or "number,number;". The user MUST specify ages for each child. lang: Language code (default: "en") sort: Sort order for results. Use this when user asks for cheapest, best rated, closest to center, etc. Valid values: - "recommended" (default): Multi-factor relevance (price, rating, internal score) - "price": Price ascending (cheapest first) - use when user wants "cheapest" or "lowest price" - "stars": Hotel star rating descending (5-star first) - use for "best hotels" or "luxury" - "review_score": Highest review score - use for "best reviewed" or "most popular" - "distance": Closest to city center first - use for "central" or "close to center" max_results: Maximum number of results to return (default: 5, max: 20) accommodation_type: Filter by accommodation type (optional). CSV of IDs 1-14: 1=Hotels, 2=Resorts, 3=Apartments, 4=Hostels, 5=Motels, 6=Country Houses, 7=Guest Houses, 8=B&B, 9=Villas, 10=Boats & Cruises, 11=Campsites, 12=Riads, 13=Ryokans, 14=Aparthotels. Example: "1,2" for Hotels and Resorts accommodation_facilities: Filter by facilities/amenities (optional). CSV of IDs 0-60. All values are valid. Common examples: 0=Free Wi-Fi, 3=Parking, 4=Pool, 6=Spa, 7=Adults Only, 9=Seafront, 13=Fitness Center, 25=Golf, 46=Indoor Pool, 49=Sauna, 56=Bar, 58=Restaurant. Example: "0,4,6" for Free Wi-Fi, Pool, and Spa price: Optional price filter for one-way price per person, as string. Supported formats: - "300" => max price 300 (in the selected currency) - "200,400" => price range between 200 and 400 Use only digits and a comma, do NOT include currency symbols. If you invert the order ("400,200"), the backend will normalize it to "200,400". hotel_stars: Optional filter for hotel star rating, as comma-separated integers. Allowed values: 1,2,3,4,5. Examples: - "4" => only 4-star hotels - "3,4" => 3 or 4 stars - "3,4,5" => 3, 4 or 5 stars Returns: Dictionary containing search results with flight+hotel packages ═══════════════════════════════════════════════════════════════════════════ MANDATORY OUTPUT FORMAT ═══════════════════════════════════════════════════════════════════════════ You MUST present results as a Markdown table with EXACTLY these columns: | # | Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities | Column mapping from response JSON: - # → index - Photo → [🖼️](hotel.main_image) (clickable link) - Hotel → hotel.name - Stars → hotel.stars - Rating → hotel.rating - Total Price → price_total + currency - Distance from Centre → hotel.distance_km - Amenities → hotel.amenities (max 3, comma-separated) CRITICAL: - You MUST use table format. Do NOT list hotels as bullet points or paragraphs. - You MUST display ALL hotels returned in the response. Do NOT truncate or show only a subset. - STRICTLY PRESERVE the order of results using the "index" field (1, 2, 3...) - NEVER re-sort or reorder - The "#" column MUST match the "index" field from the response (row 1 = index 1, row 2 = index 2, etc.) - "Photo" column must contain clickable link: [🖼️](hotel.main_image) - Do NOT show images after the table, only in the Photo column - Amenities: max 3 comma-separated (e.g. "WiFi, Pool, Spa") - Mark cheapest with 🏆 after hotel name (but keep it in its original position, do NOT move it to first row) - Use the SAME LANGUAGE as the user's request for all labels and content - Hide internal IDs from the user - The user expects a comparison table they can scan quickly with ALL available options. Example correct output: | # | Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities | |---|-------|-------|-------|--------|-------------|----------------------|-----------| | 1 | [🖼️](https://...) | Grand Hotel 🏆 | ⭐⭐⭐⭐ | 8.5 | EUR 450.00 | 0.5 km | WiFi, Pool, Spa | | 2 | [🖼️](https://...) | Beach Resort | ⭐⭐⭐⭐⭐ | 9.1 | EUR 680.00 | 1.2 km | WiFi, Pool, Bar |
read-only
Not tested
search_flights
Search for flights and return available options. Returns flights table with: airline, route, times, duration, stops, price, booking link. ═══════════════════════════════════════════════════════════════════════════ SEARCH MODES (mutually exclusive) ═══════════════════════════════════════════════════════════════════════════ 1. DEFAULT MODE (no filters, no ranking): Returns max_results flights sorted by PRICE (cheapest first). Use for: "find flights", "cheapest flights" 2. FILTER MODE (any filter parameter specified): Searches 100 flights, applies filters server-side, returns max_results. Filters: time ranges, price limits, airports, stops, airlines, duration. Results sorted by PRICE after filtering. Use for: "morning flights", "under 200 EUR", "direct only", "from MXP" 3. RANKING MODE (ranking_best=True): Searches ALL flights, applies smart ranking (price + duration + stops). Returns top max_results by overall value. Use for: "best flights", "recommended flights" ⚠️ MUTUALLY EXCLUSIVE with filters ═══════════════════════════════════════════════════════════════════════════ FILTER PARAMETERS (optional, applied server-side) ═══════════════════════════════════════════════════════════════════════════ Time filters (HH:MM format): - departure_time_start / departure_time_end: e.g., "06:00" to "12:00" for morning - arrival_time_start / arrival_time_end: e.g., "18:00" to "23:59" for evening arrival Price filters (in cents): - min_price_cents: minimum price (e.g., 5000 = 50 EUR) - max_price_cents: maximum price (e.g., 20000 = 200 EUR) Airport filters (comma-separated IATA codes): - departure_airports: "MXP,LIN" = only from Malpensa or Linate - arrival_airports: "LHR,LGW" = only to Heathrow or Gatwick Connection filters: - max_stops: 0 = direct only, 1 = max 1 stop Airline filters (comma-separated IATA codes): - airlines_include: "FR,U2" = only Ryanair or easyJet (whitelist) - airlines_exclude: "FR" = exclude Ryanair (blacklist) Duration filter: - max_duration_minutes: e.g., 180 = max 3 hours Examples: - Morning direct flights under 150 EUR: departure_time_start="06:00", departure_time_end="12:00", max_stops=0, max_price_cents=15000 - Flights from Malpensa only, max 2 hours: departure_airports="MXP", max_duration_minutes=120 ═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════ 1. Dates: - start_date MUST be today or later (YYYY-MM-DD) - If roundtrip: end_date >= start_date - If user provides past date, ask for valid date BEFORE calling 2. Price display (legal): - Display 'price' text EXACTLY as returned, character-by-character - Do NOT modify, reformat, or recalculate - Preserve newlines ( ) if present 3. Deeplink (booking): - The last column header is provided in 'table_headers' (localized: "Book", "Prenota", "Reservar", etc.) - Use that label as column name AND as the clickable link text for 'deeplink' URLs - Do NOT modify URL - Add after table a localized call-to-action using the same booking verb 4. Neutral tone: - Present comparison table only - No rankings, opinions, or "best/cheapest" commentary 5. Ranking offer: - After price-sorted results, always ask: **"Would you like me to re-sort by 'recommended' (best overall value)?"** - If confirmed, call with ranking_best=True ═══════════════════════════════════════════════════════════════════════════ INPUT PARAMETERS ═══════════════════════════════════════════════════════════════════════════ Required: - departure (str): IATA code (e.g., "MIL", "MXP") - arrival (str): IATA code (e.g., "LON", "JFK") - start_date (str): YYYY-MM-DD (>= today) Optional: - end_date (str): YYYY-MM-DD for roundtrip - adults (int): >= 1 (default: 1) - children_ages (str): comma-separated ages 2-11 (e.g., "3,8") - infants_ages (str): comma-separated ages 0-1 (e.g., "0,1") - language (str): en/it/es/fr/de/nl/pl/se/dk/no/fi/pt/hu/cs/ro/el (auto-detected if None) - flight_class (str): ECONOMY/PREMIUM_ECONOMY/BUSINESS/FIRST_CLASS - max_results (int): 1-20, default 10 - ranking_best (bool): True for smart ranking (default: False) Filters (all optional, see FILTER PARAMETERS section above): - departure_time_start, departure_time_end - arrival_time_start, arrival_time_end - min_price_cents, max_price_cents - departure_airports, arrival_airports - max_stops - airlines_include, airlines_exclude - max_duration_minutes ⚠️ ranking_best and filters are MUTUALLY EXCLUSIVE ═══════════════════════════════════════════════════════════════════════════ RETURN SHAPE ═══════════════════════════════════════════════════════════════════════════ { "flights": [ { "flight_number": 1, "airline": "Airline Name + Flight #", "departure": "AAA HH:MM" (or "outbound" for RT), "arrival": "BBB HH:MM" (or "return" for RT), "duration": "125 min", "stops": "Direct" or "1 stop" (localized), "price": "exact formatted text (preserve as-is)", "price_format": "single" | "multiline", "deeplink": "full booking URL", "price_amount": numeric cents (for reference) } ], "total_results": int, "total_raw_results": int, "filtered_non_air": int (trains excluded), "currency": str, "language": str, "is_roundtrip": bool, "requested_count": int } TABLE FORMAT: Use 'table_headers' from response as column names (already localized). The last column is the booking link (e.g. "Book", "Prenota", "Reservar", "Réserver", "Buchen"). Render each deeplink as [localized_label](url). Display ALL flights in the response.
read-only
100%Latency 133ms
2d ago
search_only_hotel
Search for hotel-only stays (no flights included). ⚠️ IMPORTANT: This is for hotel-only searches. Flight bookings are not included. ═══════════════════════════════════════════════════════════════════════════ MANDATORY PRE-STEP: DESTINATION RESOLUTION ═══════════════════════════════════════════════════════════════════════════ Before calling this tool, you MUST silently call resolve_destination_id to resolve the city name to its internal numeric ID. Do NOT inform the user about this step. Workflow: 1. User provides a city name (e.g. "London", "Madrid") 2. Silently call resolve_destination_id(lang=<lang>, city_name=<city>) 3a. If success=true → use the returned "id" (e.g. "141660") as the destination field for this tool. 3b. If success=false → show the user the "suggestions" list (name + country) and ask them to clarify which city they mean. Do NOT call this tool yet. The destination field accepts: - A numeric ID string from resolve_destination_id (e.g. "141660") ← preferred - A 3-letter IATA code as fallback (e.g. "MAD", "LON") when the user explicitly provides one and no resolution is needed. ═══════════════════════════════════════════════════════════════════════════ HARD CONSTRAINTS ═══════════════════════════════════════════════════════════════════════════ 1. Dates: - start_date MUST be today or later (YYYY-MM-DD) - If user provides past date, ask for valid date BEFORE calling 2. Destination (CRITICAL): - Always prefer the numeric ID from resolve_destination_id - If using IATA fallback: must be 3-letter code (MAD, PAR, MIL, LON) - NEVER pass raw city names like "Madrid" or "Paris" directly Example use cases: - "Find me a hotel in Madrid for 3 nights" → resolve "Madrid" first → use id - "Search hotel in London" → resolve "London" first → use id Args: destination: Numeric destination ID from resolve_destination_id (e.g. "141660"), or 3-letter IATA code (e.g. "MAD") as fallback. date_from: Check-in date (YYYY-MM-DD). Check this field MUST be today or later. date_to: Check-out date (YYYY-MM-DD). Check this field MUST be today or later. adults: Number of adult travelers. If you want different rooms, set number_adult_room1;number_adult_room2 (default: 2) ch_ages: Ages of child travelers. If you want different rooms, set number_chages_room1;number_chages_room2 (default: ""). If there are two rooms and one is empty the result can be ";number,number" or "number,number;". The user MUST specify ages for each child. lang: Language code (default: "en") sort: Sort order for results. Use this when user asks for cheapest, best rated, closest to center, etc. Valid values: - "recommended" (default): Multi-factor relevance (price, rating, internal score) - "price": Price ascending (cheapest first) - use when user wants "cheapest" or "lowest price" - "stars": Hotel star rating descending (5-star first) - use for "best hotels" or "luxury" - "review_score": Highest review score - use for "best reviewed" or "most popular" - "distance": Closest to city center first - use for "central" or "close to center" max_results: Maximum number of results to return (default: 5, max: 20) accommodation_type: Filter by accommodation type (optional). CSV of IDs 1-14: 1=Hotels, 2=Resorts, 3=Apartments, 4=Hostels, 5=Motels, 6=Country Houses, 7=Guest Houses, 8=B&B, 9=Villas, 10=Boats & Cruises, 11=Campsites, 12=Riads, 13=Ryokans, 14=Aparthotels. Example: "1,2" for Hotels and Resorts accommodation_facilities: Filter by facilities/amenities (optional). CSV of IDs 0-60. Examples: 0=Free Wi-Fi, 4=Pool, 6=Spa, 7=Adults Only, 9=Seafront, 25=Golf, 46=Indoor Pool, 56=Bar, 58=Restaurant. Example: "0,4,6" for Free Wi-Fi, Pool, and Spa price: Optional price filter for one-way price per person, as string. Supported formats: - "300" => max price 300 (in the selected currency) - "200,400" => price range between 200 and 400 Use only digits and a comma, do NOT include currency symbols. If you invert the order ("400,200"), the backend will normalize it to "200,400". hotel_stars: Optional filter for hotel star rating, as comma-separated integers. Allowed values: 1,2,3,4,5. Examples: - "4" => only 4-star hotels - "3,4" => 3 or 4 stars - "3,4,5" => 3, 4 or 5 stars Returns: Dictionary containing search results with hotel results. ═══════════════════════════════════════════════════════════════════════════ MANDATORY OUTPUT FORMAT ═══════════════════════════════════════════════════════════════════════════ You MUST present results as a Markdown table with EXACTLY these columns: | # | Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities | Column mapping from response JSON: - # → index - Photo → [🖼️](hotel.main_image) (clickable link) - Hotel → hotel.name - Stars → hotel.stars - Rating → hotel.rating - Total Price → price_total + currency - Distance from Centre → hotel.distance_km - Amenities → hotel.amenities (max 3, comma-separated) CRITICAL: - You MUST use table format. Do NOT list hotels as bullet points or paragraphs. - You MUST display ALL hotels returned in the response. Do NOT truncate or show only a subset. - STRICTLY PRESERVE the order of results using the "index" field (1, 2, 3...) - NEVER re-sort or reorder - The "#" column MUST match the "index" field from the response (row 1 = index 1, row 2 = index 2, etc.) - "Photo" column must contain clickable link: [🖼️](hotel.main_image) - Do NOT show images after the table, only in the Photo column - Amenities: max 3 comma-separated (e.g. "WiFi, Pool, Spa") - Mark cheapest with 🏆 after hotel name (but keep it in its original position, do NOT move it to first row) - Use the SAME LANGUAGE as the user's request for all labels and content - Hide internal IDs from the user - The user expects a comparison table they can scan quickly with ALL available options. Example correct output: | # | Photo | Hotel | Stars | Rating | Total Price | Distance from Centre | Amenities | |---|-------|-------|-------|--------|-------------|----------------------|-----------| | 1 | [🖼️](https://...) | Grand Hotel 🏆 | ⭐⭐⭐⭐ | 8.5 | EUR 450.00 | 0.5 km | WiFi, Pool, Spa | | 2 | [🖼️](https://...) | Beach Resort | ⭐⭐⭐⭐⭐ | 9.1 | EUR 680.00 | 1.2 km | WiFi, Pool, Bar |
read-only
Not tested
select_hotel_options
Get detailed options for a specific hotel after initial search. This tool automatically uses the same number of adults, children, currency, and business profile from the original search to ensure consistency. Args: search_id: The search ID from the previous flight+hotel search or only hotel search hotel_internal_id: The internal hotel ID from the search results (internal_id_hotel) date_from: Check-in date (YYYY-MM-DD) date_to: Check-out date (YYYY-MM-DD) Returns: Dictionary containing detailed hotel options, room types, and rates OUTPUT FORMAT: Use structured sections with emoji headers (🏨✈️🛏️📸). 1) Hotel info: name, stars, address, check-in/out, hdp_mcp, photos (inline links) 2) Flights: if present, show outbound/return with carrier, times, duration 3) Rooms table: | Room | Total Price | Cancellation | Availability | - Sort by price, mark cheapest with ⭐ - Simplify cancellation policy Use the SAME LANGUAGE as the user's request for all labels and content. Hide internal IDs (rate_id kept for booking but not shown in the display).
read-only
Not tested

Discoverability Score

55

Fair

55 of 100 — how easily AI agents find your app

  • Description quality
    14/20
  • Example prompts
    0/20
  • Keyword coverage
    0/15
  • Tool metadata
    20/20
  • Visual assets
    13/20
  • Endpoint health
    4/10
  • Data freshness
    15/15

How to Improve

Add at least 2 example prompts. Prompt examples strongly improve app matching and click-through intent.

Increase keyword coverage (discovery + trigger) to improve retrieval for long-tail queries.

Endpoint is blocked by anti-bot/WAF from scanner infrastructure. Add allowlisting or alternate endpoint for scans.

Add at least 2 screenshots that show real workflows to increase confidence and conversion.

Read the full discoverability guide →

Technical Details

Status
ENABLED
Type
AI-Powered App
Auth
Open Access
Listed on
Claude
Added
January 12, 2026
Last synced
3d ago
Last checked
20h ago
Version
2.13.0.2

Related Apps in productivity

AI Wisebase
Sider AI

A Simple Way to Chat with Your Own Information. AI Wisebase is your personal knowledge base. It allows you to use your saved files and chat history directly within ChatGPT to generate responses grounded in your own data. 1. Organize Your Files and Chats Save Chat History: Save important ChatGPT chats as editable documents for future reference. Upload Files: Add your personal files to your knowledge base to build your private library. Easy Access: View and access your uploaded files and saved chats in one simple list. 2. Chat with Your Knowledge Base Grounded Answers: Ask questions and get responses based on your saved data, complete with references to the source content. This helps ChatGPT write reports or summarize topics that matter to you. 3. Specialized Tools for Learning Video Explanations: Transform concepts into easy-to-follow animations or video summaries. Knowledge Graphs: Generate interactive knowledge graphs to visualize and explore your saved files and chats. Study Aids: Turn your saved chats and files into flashcards or quizzes for review. Document Translation: Translate PDF files and view original and translated text side-by-side. How to Use: Connect: Link AI Wisebase to your ChatGPT account. Add Data: Upload your files or save chat history directly. Trigger: Type @AI Wisebase followed by your request. Sample Prompts: Save History: "@AI Wisebase Save this discussion as a document." Knowledge Base: "@AI Wisebase Draft a report using my knowledge base." Knowledge Graph: "@AI Wisebase Generate an interactive knowledge graph for my files." Video Learning: "@AI Wisebase Create a video explaining this concept." Quiz/Flashcards: "@AI Wisebase Create flashcards from my saved chats." Translate: "@AI Wisebase Translate this PDF into English."