Fly Travel Albania

Cached charter package, hotel facts and tour prices from Fly Travel Albania (Tirana); party-aware.

¿Debería usar esto?

Calidad y seguridad

B
Calidad de la descripción
100%
Integridad del esquema
90%
Calidad de los nombres
80%
Riesgo de envenenamiento
60%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainen prices_digest
  • LOWTool description contains negative instruction about its own useen charter_hotel

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,778Tokens (definiciones de herramientas)
~2.2 KBTamaño de respuesta típico
Impacto significativo en la atención (3.73% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "travel-prices": {
      "url": "https://flytravel.al/mcp"
    }
  }
}

Puntos de conexión remotos

https://flytravel.al/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (12)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢charter_cheapest(destination)

Cheapest flight+hotel charter packages from Tirana (Albania) per destination, from the live booking-engine cache (the 5 cheapest per destination, each on its own date). Use for "what is the cheapest…" only; for advice or filtering use charter_offers. CACHED prices (from recent real searches on flytravel.al — not a live query; every row carries cached_at/age_minutes). Charter prices are PACKAGE TOTALS in EUR for the row's "party" (flight + hotel + transfers), NOT per person. party_match=false means the price is the 2-adult reference, not the total for the requested party — say so. A price belongs ONLY to its own "date": never present it as the price of another date.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Optional destination key, e.g. 'antalya' or 'bodrum'. Omit to get every destination."
    }
  },
  "additionalProperties": false
}
🟢charter_hotel(hotel, destination, date, adults, children_ages, ...)

Cached price(s) for ONE hotel named by the user (e.g. "Granada Luxury Belek") — searches the full price cache (hundreds of hotels). ALWAYS pass the date and the party the user gave: the per-date cache is read for that EXACT party first (party_match=true = real total for that family), then the 2-adult file (party_match=false = reference price). exact_date_matches = real cached prices for the requested date; other_cached_offers belong to their OWN dates (availability_status=reference_other_date). When nothing is cached for the requested date, say so and give hotel_page (it prices any date live). Do NOT call this tool repeatedly to browse — use charter_offers (filters) or compare_hotels (2-6 named hotels) instead. For amenities use hotel_details. CACHED prices (from recent real searches on flytravel.al — not a live query; every row carries cached_at/age_minutes). Charter prices are PACKAGE TOTALS in EUR for the row's "party" (flight + hotel + transfers), NOT per person. party_match=false means the price is the 2-adult reference, not the total for the requested party — say so. A price belongs ONLY to its own "date": never present it as the price of another date.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "hotel": {
      "type": "string",
      "description": "Hotel name, or part of it."
    },
    "destination": {
      "type": "string",
      "description": "Optional destination key ('antalya', 'bodrum') to narrow the search."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Desired departure date, format YYYY-MM-DD — exact-date cache is checked and the date is baked into the links."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    }
  },
  "required": [
    "hotel"
  ],
  "additionalProperties": false
}
🟢charter_offers(destination, date, budget_total_max, budget_total_min, stars_min, ...)

THE discovery tool: filters the whole cached charter inventory (hundreds of hotels) in ONE call by date, TOTAL budget, stars, board, zone, party and hotel features (aquapark, kids club, adults-only, beach, spa, luxury…). Built for "I have X EUR for 2 adults + a child, Antalya, 5 stars, aquapark, near the beach — what do you suggest?". Returns the price range, three quality tiers (economy-but-good / mid / premium) and a shortlist; advise from the tiers, never only the cheapest. Pass the date whenever the user has one (exact availability for that date) and the real party (exact-party cache is used when present). excluded_unknown_features tells how many hotels were dropped because their facilities are unknown. CACHED prices (from recent real searches on flytravel.al — not a live query; every row carries cached_at/age_minutes). Charter prices are PACKAGE TOTALS in EUR for the row's "party" (flight + hotel + transfers), NOT per person. party_match=false means the price is the 2-adult reference, not the total for the requested party — say so. A price belongs ONLY to its own "date": never present it as the price of another date.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Optional destination key ('antalya', 'bodrum'). Omit to search all."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Departure date, format YYYY-MM-DD (recommended — exact availability for that date)."
    },
    "budget_total_max": {
      "type": "integer",
      "description": "Max TOTAL budget in EUR for the whole party."
    },
    "budget_total_min": {
      "type": "integer",
      "description": "Optional min total, to skip too-basic offers."
    },
    "stars_min": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Minimum hotel star rating (1-5)."
    },
    "board": {
      "type": "string",
      "description": "Board filter substring, e.g. 'all inclusive', 'ultra'."
    },
    "zone": {
      "type": "string",
      "description": "Zone/resort filter substring, e.g. 'Belek', 'Alanya', 'Lara', 'Side', 'Kemer'."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24,
      "description": "Shortlist size (default 12)."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    },
    "family_friendly": {
      "type": "boolean",
      "description": "true = only hotels with family facilities (kids club / kids pool / family rooms) and not adults-only."
    },
    "aquapark": {
      "type": "boolean",
      "description": "true = only hotels with an aquapark / water park."
    },
    "kids_club": {
      "type": "boolean",
      "description": "true = only hotels with a kids / mini club."
    },
    "adults_only": {
      "type": "boolean",
      "description": "true = only adults-only hotels; false = EXCLUDE adults-only hotels (use false for any party with children)."
    },
    "beach": {
      "type": "boolean",
      "description": "true = only hotels with a beach (own or nearby, per the hotel facts)."
    },
    "private_beach": {
      "type": "boolean",
      "description": "true = only hotels listing a private / own beach."
    },
    "spa": {
      "type": "boolean",
      "description": "true = only hotels with spa / Turkish bath / sauna."
    },
    "luxury": {
      "type": "boolean",
      "description": "true = only hotels tagged luxury."
    }
  },
  "additionalProperties": false
}
🟢charter_dates(destination, date_from, date_to, month, limit, ...)

Real upcoming charter departure dates from Tirana for a destination (cached calendar), each with the trip lengths (nights_available) really on sale for that departure and a ready booking-search link. Filter with date_from/date_to or month; total_count/has_more say when the calendar holds MORE dates than returned — never present a capped list as the whole calendar. For "which date is cheapest" use charter_flexible_dates.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination key, e.g. 'antalya' or 'bodrum'."
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only departures on/after this date (YYYY-MM-DD)."
    },
    "date_to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only departures on/before this date (YYYY-MM-DD)."
    },
    "month": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}$",
      "description": "Whole-month window, e.g. '2026-09' (ignored when date_from/date_to given)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Max dates to return (default 20)."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    }
  },
  "required": [
    "destination"
  ],
  "additionalProperties": false
}
🟢tours_list(limit)

Escorted group tours from Tirana with Albanian-speaking guides (cached catalogue): stable id, title, days/nights, cities, transport, next_departure and the PER PERSON price in EUR — unlike charter packages, tour prices are per person. For one tour's full calendar, program and date-specific price use tour_details.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "description": "Max tours to return (default 10)."
    }
  },
  "additionalProperties": false
}
🟢booking_link(destination, date, adults, children_ages, nights)

Deep link into the live charter search results for a destination, date, party and optional trip length — hand this URL to the user to see live availability and book. Children are ages 0-14 at departure; ages 15+ count as adults. Pure URL builder (no data).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination key, e.g. 'antalya'."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Departure date, format YYYY-MM-DD."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    }
  },
  "required": [
    "destination",
    "date"
  ],
  "additionalProperties": false
}
🟢prices_digest

Today's full machine-readable price digest (charter packages, tours, guides, FAQ) — same content as https://flytravel.al/llms-full.txt (cached, rebuilt hourly). Overview only; for any specific hotel/date/party use the charter_* tools.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢hotel_details(hotel, destination)

Static facts we hold about ONE charter hotel: stars, zone, provider-tagged categories, tri-state features (aquapark, kids_club, kids_pool, beach, private_beach, spa, adults_only, luxury, night_entertainment, water_slides — true/false/null where null = unknown), the facility list and a short description. FACTS ONLY: never claim a feature that is null/absent; distances to beach/airport are NOT available — do not estimate them. No prices here (use charter_hotel). Cache/DB read, no live call.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "hotel": {
      "type": "string",
      "description": "Hotel name, or part of it."
    },
    "destination": {
      "type": "string",
      "description": "Optional destination key ('antalya', 'bodrum')."
    }
  },
  "required": [
    "hotel"
  ],
  "additionalProperties": false
}
🟢compare_hotels(hotels, destination, date, adults, children_ages, ...)

Side-by-side comparison of 2-6 named hotels for a date and party: cached price (with party_match + cached_at), stars, zone, board, room, features (aquapark, kids club, beach, spa, adults-only…) and a booking link each — one call instead of several charter_hotel calls. Hotels not in the cache are listed in not_found (do NOT say they are unavailable — the cache only holds recently searched offers). CACHED prices (from recent real searches on flytravel.al — not a live query; every row carries cached_at/age_minutes). Charter prices are PACKAGE TOTALS in EUR for the row's "party" (flight + hotel + transfers), NOT per person. party_match=false means the price is the 2-adult reference, not the total for the requested party — say so. A price belongs ONLY to its own "date": never present it as the price of another date.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "hotels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 6,
      "description": "Hotel names (or parts of them)."
    },
    "destination": {
      "type": "string",
      "description": "Optional destination key ('antalya', 'bodrum')."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Departure date, format YYYY-MM-DD (recommended)."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    }
  },
  "required": [
    "hotels"
  ],
  "additionalProperties": false
}
🟢charter_flexible_dates(destination, date_from, date_to, stars_min, budget_total_max, ...)

For flexible travellers: the lowest CACHED package total for each departure date inside a window (max 31 days) for a destination and party, plus best_value_date. Dates with no cache are returned as availability_status=no_cached_data — NOT as "no offers" (the cache only holds recently searched dates; the search_url prices them live). CACHED prices (from recent real searches on flytravel.al — not a live query; every row carries cached_at/age_minutes). Charter prices are PACKAGE TOTALS in EUR for the row's "party" (flight + hotel + transfers), NOT per person. party_match=false means the price is the 2-adult reference, not the total for the requested party — say so. A price belongs ONLY to its own "date": never present it as the price of another date.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination key, e.g. 'antalya' or 'bodrum'."
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Window start, YYYY-MM-DD (default today)."
    },
    "date_to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Window end, YYYY-MM-DD (default date_from + 14 days; max 31-day window)."
    },
    "stars_min": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Minimum hotel star rating (1-5)."
    },
    "budget_total_max": {
      "type": "integer",
      "description": "Max TOTAL budget in EUR for the whole party."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 6,
      "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically)."
    },
    "nights": {
      "type": "integer",
      "minimum": 2,
      "maximum": 21,
      "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights."
    }
  },
  "required": [
    "destination"
  ],
  "additionalProperties": false
}
🟢tour_details(tour, tour_id, date, adults, children_ages)

Full cached details for ONE organized group tour: the COMPLETE departure-date calendar, the day-by-day program as text, duration, transport, and the per-person price. Match by `tour` (part of the name/cities, e.g. "Stamboll", "Milano Como") or exact `tour_id` from tours_list. Pass `date` + the party when the user has them: when that departure's group price is warm in cache you get the EXACT group total (price_status=cached_for_date); otherwise price_from is the PER PERSON price of the NEAREST departure (price_status=list_from) — every departure date has its OWN price, never quote one date's price for another; tour_page prices any date live. Answer date questions ONLY from departure_dates — it is the complete current calendar. Seats/availability are confirmed by staff. Cache/DB read, no live call.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "tour": {
      "type": "string",
      "description": "Tour name or city, or part of it (e.g. \"Stamboll\", \"Dubai\")."
    },
    "tour_id": {
      "type": "integer",
      "description": "Exact tour id from tours_list (preferred when known)."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Desired departure date, YYYY-MM-DD — checked against the calendar and baked into tour_page."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9,
      "description": "Number of adults (default 2)."
    },
    "children_ages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 17
      },
      "maxItems": 4,
      "description": "Age of each child, 0-11 (TOURS price 12+ as adults — a DIFFERENT bracket than charter packages)."
    }
  },
  "additionalProperties": false
}
🟢holiday_packages(destination, date_from, date_to)

Our NON-charter holiday packages from Tirana (flight+hotel or bus+hotel: Corfu, Parga, Crete, Malta, Barcelona, Mallorca, Rimini…): which destinations are on sale right now, their validated upcoming departure dates, an INDICATIVE "from €X per person" price and the booking page link. The exact price depends on hotel/room/party and is computed live on the package page (link) — never present price_from as a bookable quote. For Turkey/Egypt beach charters (Antalya, Bodrum…) use the charter_* tools instead. Cached/validated data only, no live call.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Package destination key from the no-argument listing (e.g. 'korfuz', 'barcelona', 'kreta'). Omit to list every destination."
    },
    "date_from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only departures on/after this date (YYYY-MM-DD)."
    },
    "date_to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Only departures on/before this date (YYYY-MM-DD)."
    }
  },
  "additionalProperties": false
}

Prompts recomendados

list_items
List all [items] available in Fly Travel Albania
Herramientas esperadas: tours_list
browse_collection
Show me the [collection] from Fly Travel Albania
Herramientas esperadas: tours_list

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada12 herramientas
verificadoversión no registrada12 herramientas
verificadoversión no registrada12 herramientas