Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,539Letters: 14Defects: 1,323counted just now
teppi

Server definition

Hash
sha256:b9bf7d246cc997716482b64e87dc53e091df1ebca288f47b45e4ad6f88975ba9
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": "Fly Travel Albania — licensed Albanian online travel agency (Tirana). All prices are CACHED from recent real searches (each row has cached_at/age_minutes) — not live. CHARTER prices are PACKAGE TOTALS for the row's \"party\" (2 adults unless party_match=true says otherwise); TOUR prices are per person. Prices are DATE-SPECIFIC: never attribute a price to a different departure date than its own \"date\" field. ROUTING: discovery/advice/budget questions (\"what do you suggest for 1500 EUR, 5 stars, aquapark?\") → ONE charter_offers call with the date, party and filters; one named hotel → charter_hotel WITH the date and party; 2-6 named hotels → compare_hotels; amenities/facilities → hotel_details; \"which date is cheapest\" → charter_flexible_dates; departure calendars → charter_dates; organized group tours → tours_list, and ONE tour's program/dates/date-specific price → tour_details; non-charter holiday packages (Corfu, Parga, Crete, Malta, Barcelona…) → holiday_packages. Do NOT call charter_hotel repeatedly to browse — charter_offers filters the whole cache in one request. MULTI-ROOM parties (e.g. two families): the engine prices ONE room per search — make one call per room with that room's adults/children and sum the totals; say the total is the sum of per-room packages. If no exact cached price exists for the requested date/party, say so (party_match=false = 2-adult reference) and share the hotel_page link (it prices any date and party live). FINAL VERIFICATION: there is deliberately no live-quote tool on this anonymous surface — the hotel_page/booking links ARE the live verification: they reprice the exact date and party in seconds; hand the link when the user is ready to book. Advise from the tiers — never lead with only the cheapest option unless the user explicitly asks for the cheapest. Always give the user a booking_link/hotel_page URL to book. Human pages: https://flytravel.al/cmimet (live prices), https://flytravel.al/per-ai (about this API).", "tools": [ { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date": { "description": "Departure date, format YYYY-MM-DD.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Destination key, e.g. 'antalya'.", "type": "string" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" } }, "required": [ "destination", "date" ], "type": "object" }, "name": "booking_link", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "destination": { "description": "Optional destination key, e.g. 'antalya' or 'bodrum'. Omit to get every destination.", "type": "string" } }, "type": "object" }, "name": "charter_cheapest", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date_from": { "description": "Only departures on/after this date (YYYY-MM-DD).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "Only departures on/before this date (YYYY-MM-DD).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Destination key, e.g. 'antalya' or 'bodrum'.", "type": "string" }, "limit": { "description": "Max dates to return (default 20).", "maximum": 60, "minimum": 1, "type": "integer" }, "month": { "description": "Whole-month window, e.g. '2026-09' (ignored when date_from/date_to given).", "pattern": "^\\d{4}-\\d{2}$", "type": "string" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" } }, "required": [ "destination" ], "type": "object" }, "name": "charter_dates", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "budget_total_max": { "description": "Max TOTAL budget in EUR for the whole party.", "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date_from": { "description": "Window start, YYYY-MM-DD (default today).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "Window end, YYYY-MM-DD (default date_from + 14 days; max 31-day window).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Destination key, e.g. 'antalya' or 'bodrum'.", "type": "string" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" }, "stars_min": { "description": "Minimum hotel star rating (1-5).", "maximum": 5, "minimum": 1, "type": "integer" } }, "required": [ "destination" ], "type": "object" }, "name": "charter_flexible_dates", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date": { "description": "Desired departure date, format YYYY-MM-DD — exact-date cache is checked and the date is baked into the links.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Optional destination key ('antalya', 'bodrum') to narrow the search.", "type": "string" }, "hotel": { "description": "Hotel name, or part of it.", "type": "string" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" } }, "required": [ "hotel" ], "type": "object" }, "name": "charter_hotel", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "adults_only": { "description": "true = only adults-only hotels; false = EXCLUDE adults-only hotels (use false for any party with children).", "type": "boolean" }, "aquapark": { "description": "true = only hotels with an aquapark / water park.", "type": "boolean" }, "beach": { "description": "true = only hotels with a beach (own or nearby, per the hotel facts).", "type": "boolean" }, "board": { "description": "Board filter substring, e.g. 'all inclusive', 'ultra'.", "type": "string" }, "budget_total_max": { "description": "Max TOTAL budget in EUR for the whole party.", "type": "integer" }, "budget_total_min": { "description": "Optional min total, to skip too-basic offers.", "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date": { "description": "Departure date, format YYYY-MM-DD (recommended — exact availability for that date).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Optional destination key ('antalya', 'bodrum'). Omit to search all.", "type": "string" }, "family_friendly": { "description": "true = only hotels with family facilities (kids club / kids pool / family rooms) and not adults-only.", "type": "boolean" }, "kids_club": { "description": "true = only hotels with a kids / mini club.", "type": "boolean" }, "limit": { "description": "Shortlist size (default 12).", "maximum": 24, "minimum": 1, "type": "integer" }, "luxury": { "description": "true = only hotels tagged luxury.", "type": "boolean" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" }, "private_beach": { "description": "true = only hotels listing a private / own beach.", "type": "boolean" }, "spa": { "description": "true = only hotels with spa / Turkish bath / sauna.", "type": "boolean" }, "stars_min": { "description": "Minimum hotel star rating (1-5).", "maximum": 5, "minimum": 1, "type": "integer" }, "zone": { "description": "Zone/resort filter substring, e.g. 'Belek', 'Alanya', 'Lara', 'Side', 'Kemer'.", "type": "string" } }, "type": "object" }, "name": "charter_offers", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 6, "minimum": 1, "type": "integer" }, "children_ages": { "description": "Age of each child AT DEPARTURE (0-14 = child; 15+ is counted as an adult automatically).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 6, "type": "array" }, "date": { "description": "Departure date, format YYYY-MM-DD (recommended).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Optional destination key ('antalya', 'bodrum').", "type": "string" }, "hotels": { "description": "Hotel names (or parts of them).", "items": { "type": "string" }, "maxItems": 6, "minItems": 2, "type": "array" }, "nights": { "description": "Trip length in nights. Omit for the standard charter length (6 nights / 7 days). Most departures also sell 3-10 nights.", "maximum": 21, "minimum": 2, "type": "integer" } }, "required": [ "hotels" ], "type": "object" }, "name": "compare_hotels", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "date_from": { "description": "Only departures on/after this date (YYYY-MM-DD).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "date_to": { "description": "Only departures on/before this date (YYYY-MM-DD).", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "destination": { "description": "Package destination key from the no-argument listing (e.g. 'korfuz', 'barcelona', 'kreta'). Omit to list every destination.", "type": "string" } }, "type": "object" }, "name": "holiday_packages", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "destination": { "description": "Optional destination key ('antalya', 'bodrum').", "type": "string" }, "hotel": { "description": "Hotel name, or part of it.", "type": "string" } }, "required": [ "hotel" ], "type": "object" }, "name": "hotel_details", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "prices_digest", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "adults": { "description": "Number of adults (default 2).", "maximum": 9, "minimum": 1, "type": "integer" }, "children_ages": { "description": "Age of each child, 0-11 (TOURS price 12+ as adults — a DIFFERENT bracket than charter packages).", "items": { "maximum": 17, "minimum": 0, "type": "integer" }, "maxItems": 4, "type": "array" }, "date": { "description": "Desired departure date, YYYY-MM-DD — checked against the calendar and baked into tour_page.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "tour": { "description": "Tour name or city, or part of it (e.g. \"Stamboll\", \"Dubai\").", "type": "string" }, "tour_id": { "description": "Exact tour id from tours_list (preferred when known).", "type": "integer" } }, "type": "object" }, "name": "tour_details", "outputSchema": null }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "Max tours to return (default 10).", "maximum": 30, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "tours_list", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b9bf7d246cc997716482b64e87dc53e091df1ebca288f47b45e4ad6f88975ba9 | sha256sum