Server definition
- Hash
- sha256:d414691e728c309a1e485b29b74d91807f0f97035fc6a4a1124b5eacaad875c3
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "easygroupflights.com books group air travel. Parties of 10 or more get a negotiated group fare, which no public booking engine can price: egf_prepare_group_quote checks the brief, and egf_request_group_quote sends it to a human agent once the user has confirmed the summary. Smaller parties are ordinary tickets: egf_search_flights finds them, egf_get_offer gives one fare's booking link, and egf_prepare_flight_offer then egf_send_flight_offer email it as an offer. The guides and published studies are available as resources — quote those rather than figures from memory. Prompts such as school-trip and wedding-guests walk the user through a complete brief.",
"tools": [
{
"description": "Returns one fare from a recent flight search, by its offer_id: the per-person price, the flights, a booking link and the time until which the offer_id is valid. Works for 30 minutes after the search.",
"inputSchema": {
"properties": {
"offer_id": {
"description": "offer_id of a fare, exactly as the flight search returned it.",
"type": "string"
}
},
"required": [
"offer_id"
],
"type": "object"
},
"name": "egf_get_offer",
"outputSchema": {
"properties": {
"booking_url": {
"description": "Absolute https link where the traveller books this fare.",
"type": "string"
},
"carriers": {
"items": {
"type": "string"
},
"type": "array"
},
"currency": {
"description": "ISO 4217 code.",
"type": "string"
},
"departure": {
"description": "Local departure, ISO 8601 (YYYY-MM-DDTHH:MM).",
"type": "string"
},
"flight_numbers": {
"items": {
"type": "string"
},
"type": "array"
},
"offer_id": {
"type": "string"
},
"price": {
"description": "Per person, in currency.",
"type": "number"
},
"return": {
"description": "Local return departure, ISO 8601 (YYYY-MM-DDTHH:MM).",
"type": "string"
},
"stops_back": {
"type": "integer"
},
"stops_out": {
"type": "integer"
},
"valid_until": {
"description": "ISO 8601 date-time. After it, search again: the price is live.",
"type": "string"
}
},
"required": [
"offer_id",
"currency",
"carriers",
"flight_numbers",
"booking_url",
"valid_until"
],
"type": "object"
}
},
{
"description": "Describes easygroupflights for one market: who it serves, how group fares differ from public tickets, what happens after a quote is requested, and how to reach a person. Submits nothing.",
"inputSchema": {
"properties": {
"market": {
"description": "Which market to describe. Defaults to en.",
"enum": [
"en",
"pl",
"at"
],
"type": "string"
}
},
"type": "object"
},
"name": "egf_get_service_info",
"outputSchema": {
"properties": {
"contact": {
"properties": {
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"whatsapp": {
"type": "string"
},
"whatsapp_url": {
"type": "string"
}
},
"required": [
"email",
"phone",
"whatsapp",
"whatsapp_url"
],
"type": "object"
},
"domain": {
"type": "string"
},
"group_minimum": {
"description": "Seated travellers needed for a group fare.",
"type": "integer"
},
"language": {
"type": "string"
},
"market": {
"enum": [
"en",
"pl",
"at"
],
"type": "string"
},
"max_reply_hours": {
"type": "integer"
},
"typical_reply_hours": {
"type": "integer"
},
"website": {
"description": "Absolute https URL of the market's site.",
"type": "string"
}
},
"required": [
"market",
"domain",
"website",
"language",
"group_minimum",
"typical_reply_hours",
"max_reply_hours",
"contact"
],
"type": "object"
}
},
{
"description": "Checks an email that would send one fare from a flight search to the traveller as a formal offer, and returns who it goes to and what it offers, with a confirmation_token valid for 15 minutes. Nothing is sent.",
"inputSchema": {
"properties": {
"adults": {
"description": "Adults on the offer. Defaults to 1.",
"minimum": 1,
"type": "integer"
},
"children": {
"description": "Children on the offer.",
"minimum": 0,
"type": "integer"
},
"email": {
"description": "Where to send the offer.",
"type": "string"
},
"infants": {
"description": "Lap infants on the offer.",
"minimum": 0,
"type": "integer"
},
"message": {
"description": "A sentence or two of context for the traveller, e.g. why this option was chosen.",
"type": "string"
},
"name": {
"description": "Traveller's name, used to address the email.",
"type": "string"
},
"offer_id": {
"description": "offer_id of the chosen fare, exactly as the flight search returned it.",
"type": "string"
}
},
"required": [
"offer_id",
"email"
],
"type": "object"
},
"name": "egf_prepare_flight_offer",
"outputSchema": {
"properties": {
"adults": {
"type": "integer"
},
"carriers": {
"items": {
"type": "string"
},
"type": "array"
},
"children": {
"type": "integer"
},
"confirmation_token": {
"description": "Authorises sending exactly this email.",
"type": "string"
},
"departure": {
"description": "Local departure, ISO 8601 (YYYY-MM-DDTHH:MM).",
"type": "string"
},
"email": {
"description": "Where the offer would go.",
"type": "string"
},
"expires_at": {
"description": "ISO 8601 date-time after which the token is refused.",
"type": "string"
},
"infants": {
"type": "integer"
},
"name": {
"type": "string"
},
"offer_id": {
"type": "string"
},
"price": {
"description": "Per person, when the search is still held.",
"type": "number"
}
},
"required": [
"offer_id",
"email",
"name",
"adults",
"children",
"infants",
"confirmation_token",
"expires_at"
],
"type": "object"
}
},
{
"description": "Checks a group flight enquiry for 10 or more seated travellers and returns the exact brief that would go to a human specialist, with a confirmation_token valid for 15 minutes. Nothing is sent.",
"inputSchema": {
"properties": {
"adults": {
"description": "Travellers aged 16 or over.",
"minimum": 1,
"type": "integer"
},
"cabin_class": {
"description": "Defaults to economy.",
"enum": [
"economy",
"business"
],
"type": "string"
},
"children": {
"description": "Travellers aged 2–11, each in their own seat.",
"minimum": 0,
"type": "integer"
},
"children_ages": {
"description": "Age of each child, one entry per child.",
"items": {
"type": "integer"
},
"type": "array"
},
"date_flexibility_days": {
"description": "How many days either side of the given dates the group can move. 0 means fixed dates.",
"minimum": 0,
"type": "integer"
},
"departure_date": {
"description": "Outbound date, ISO 8601 (YYYY-MM-DD).",
"type": "string"
},
"destination": {
"description": "Arrival airport as an IATA code, e.g. [\"BCN\"].",
"items": {
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"type": "array"
},
"email": {
"description": "Where the quote is sent. Required.",
"type": "string"
},
"first_name": {
"description": "Organiser's first name.",
"type": "string"
},
"infants": {
"description": "Under 2, travelling on an adult lap. They do not occupy a seat and do not count towards the group of 10.",
"minimum": 0,
"type": "integer"
},
"last_name": {
"description": "Organiser's surname.",
"type": "string"
},
"market": {
"description": "Which market handles the enquiry: en (easygroupflights.com), pl (grupoweloty.pl) or at (gruppenfluege.at). Defaults to en.",
"enum": [
"en",
"pl",
"at"
],
"type": "string"
},
"note": {
"description": "Anything that shapes the fare: what the group is (school trip, wedding, sports team, conference), baggage or equipment needs, budget, who pays, whether names are known yet.",
"type": "string"
},
"origin": {
"description": "Departure airport as an IATA code, e.g. [\"LHR\"]. Several codes are allowed when the group converges from more than one city.",
"items": {
"pattern": "^[A-Za-z]{3}$",
"type": "string"
},
"type": "array"
},
"phone": {
"description": "Contact number in international form, e.g. +441244568183. Required: a group specialist may phone to confirm details.",
"type": "string"
},
"return_date": {
"description": "Return date, ISO 8601 (YYYY-MM-DD). Omit for a one-way group booking.",
"type": "string"
},
"return_destination": {
"description": "Return leg arrival airports, if travellers go home to a different city.",
"items": {
"type": "string"
},
"type": "array"
},
"return_origin": {
"description": "Return leg departure airports, if the group flies home from somewhere other than the destination.",
"items": {
"type": "string"
},
"type": "array"
},
"youths": {
"description": "Travellers aged 12–15.",
"minimum": 0,
"type": "integer"
},
"youths_ages": {
"description": "Age of each youth, one entry per youth.",
"items": {
"type": "integer"
},
"type": "array"
}
},
"required": [
"origin",
"destination",
"departure_date",
"adults",
"email",
"phone"
],
"type": "object"
},
"name": "egf_prepare_group_quote",
"outputSchema": {
"properties": {
"adults": {
"type": "integer"
},
"cabin": {
"enum": [
"economy",
"business"
],
"type": "string"
},
"children": {
"type": "integer"
},
"confirmation_token": {
"description": "Authorises sending exactly this brief.",
"type": "string"
},
"departure_date": {
"description": "ISO 8601 date (YYYY-MM-DD).",
"type": "string"
},
"destination": {
"items": {
"type": "string"
},
"type": "array"
},
"domain": {
"description": "The market whose desk handles the enquiry.",
"type": "string"
},
"expires_at": {
"description": "ISO 8601 date-time after which the token is refused.",
"type": "string"
},
"infants": {
"type": "integer"
},
"market": {
"enum": [
"en",
"pl",
"at"
],
"type": "string"
},
"origin": {
"items": {
"type": "string"
},
"type": "array"
},
"reply_to": {
"description": "Where the quote will be emailed.",
"type": "string"
},
"return_date": {
"description": "ISO 8601 date (YYYY-MM-DD). Absent for one way.",
"type": "string"
},
"seats": {
"description": "Seated travellers; lap infants excluded.",
"type": "integer"
},
"youths": {
"type": "integer"
}
},
"required": [
"market",
"domain",
"origin",
"destination",
"departure_date",
"adults",
"youths",
"children",
"infants",
"seats",
"cabin",
"reply_to",
"confirmation_token",
"expires_at"
],
"type": "object"
}
},
{
"description": "Sends a prepared group flight enquiry to a human specialist, who replies by email with a written quote, usually within about 2 hours. Takes only the confirmation_token from preparing it; it returns a confirmation, not a price, and books or charges nothing.",
"inputSchema": {
"properties": {
"confirmation_token": {
"description": "confirmation_token returned when this write was prepared. Valid for 15 minutes.",
"type": "string"
},
"idempotency_key": {
"description": "Optional. Any unique string for this request, such as a UUID. Calling again with the same key and the same arguments returns the first result instead of sending again. Kept for 24 hours.",
"maxLength": 128,
"type": "string"
}
},
"required": [
"confirmation_token"
],
"type": "object"
},
"name": "egf_request_group_quote",
"outputSchema": {
"properties": {
"adults": {
"type": "integer"
},
"cabin": {
"enum": [
"economy",
"business"
],
"type": "string"
},
"children": {
"type": "integer"
},
"departure_date": {
"description": "ISO 8601 date (YYYY-MM-DD).",
"type": "string"
},
"destination": {
"items": {
"type": "string"
},
"type": "array"
},
"domain": {
"description": "The market whose desk handles the enquiry.",
"type": "string"
},
"infants": {
"type": "integer"
},
"market": {
"enum": [
"en",
"pl",
"at"
],
"type": "string"
},
"max_reply_hours": {
"type": "integer"
},
"origin": {
"items": {
"type": "string"
},
"type": "array"
},
"reply_to": {
"description": "Where the quote will be emailed.",
"type": "string"
},
"return_date": {
"description": "ISO 8601 date (YYYY-MM-DD). Absent for one way.",
"type": "string"
},
"seats": {
"description": "Seated travellers; lap infants excluded.",
"type": "integer"
},
"status": {
"description": "The enquiry reached the specialist desk. Nothing is booked or charged.",
"enum": [
"submitted"
],
"type": "string"
},
"typical_reply_hours": {
"type": "integer"
},
"youths": {
"type": "integer"
}
},
"required": [
"status",
"market",
"domain",
"origin",
"destination",
"departure_date",
"adults",
"youths",
"children",
"infants",
"seats",
"cabin",
"reply_to",
"typical_reply_hours",
"max_reply_hours"
],
"type": "object"
}
},
{
"description": "Searches live public fares for 1 to 9 travellers and returns options with per-person prices, carriers and stops, cheapest first, each with an offer_id valid for 30 minutes. Results come in pages: pass next_cursor back as cursor, with the same route and dates, for more.",
"inputSchema": {
"properties": {
"cursor": {
"description": "next_cursor from the previous page of this search. Omit for the first page.",
"type": "string"
},
"departure_date": {
"description": "Outbound date, ISO 8601 (YYYY-MM-DD).",
"type": "string"
},
"destination": {
"description": "Arrival airport, IATA code, e.g. BCN.",
"type": "string"
},
"limit": {
"description": "Fares per page. Defaults to 10.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"origin": {
"description": "Departure airport, IATA code, e.g. VIE.",
"type": "string"
},
"passengers": {
"description": "How many people are travelling, 1 to 9. Defaults to 1.",
"maximum": 9,
"minimum": 1,
"type": "integer"
},
"return_date": {
"description": "Return date, ISO 8601 (YYYY-MM-DD). Omit for one way.",
"type": "string"
}
},
"required": [
"origin",
"destination",
"departure_date"
],
"type": "object"
},
"name": "egf_search_flights",
"outputSchema": {
"properties": {
"currency": {
"description": "ISO 4217 code every price is in.",
"type": "string"
},
"departure_date": {
"description": "ISO 8601 date (YYYY-MM-DD).",
"type": "string"
},
"destination": {
"type": "string"
},
"fares": {
"items": {
"properties": {
"carriers": {
"items": {
"type": "string"
},
"type": "array"
},
"departure": {
"description": "Local departure, ISO 8601 (YYYY-MM-DDTHH:MM).",
"type": "string"
},
"flight_numbers": {
"items": {
"type": "string"
},
"type": "array"
},
"offer_id": {
"description": "Identifies this fare when emailing it as an offer. Valid for this search only.",
"type": "string"
},
"price": {
"description": "Per person, in currency.",
"type": "number"
},
"rank": {
"description": "1 is the cheapest.",
"type": "integer"
},
"return": {
"description": "Local return departure, ISO 8601 (YYYY-MM-DDTHH:MM).",
"type": "string"
},
"stops_back": {
"type": "integer"
},
"stops_out": {
"type": "integer"
}
},
"required": [
"rank",
"offer_id",
"carriers",
"flight_numbers"
],
"type": "object"
},
"type": "array"
},
"next_cursor": {
"description": "Pass as cursor for the next page. Absent on the last page.",
"type": "string"
},
"origin": {
"type": "string"
},
"passengers": {
"type": "integer"
},
"return_date": {
"description": "ISO 8601 date (YYYY-MM-DD). Absent for one way.",
"type": "string"
},
"total": {
"description": "Fares the search found, across all pages.",
"type": "integer"
}
},
"required": [
"origin",
"destination",
"departure_date",
"passengers",
"currency",
"total",
"fares"
],
"type": "object"
}
},
{
"description": "Emails a prepared flight offer to the traveller as a formal offer they can accept. Takes only the confirmation_token from preparing it, and sends a real email.",
"inputSchema": {
"properties": {
"confirmation_token": {
"description": "confirmation_token returned when this write was prepared. Valid for 15 minutes.",
"type": "string"
},
"idempotency_key": {
"description": "Optional. Any unique string for this request, such as a UUID. Calling again with the same key and the same arguments returns the first result instead of sending again. Kept for 24 hours.",
"maxLength": 128,
"type": "string"
}
},
"required": [
"confirmation_token"
],
"type": "object"
},
"name": "egf_send_flight_offer",
"outputSchema": {
"properties": {
"email": {
"description": "Where the offer went.",
"type": "string"
},
"offer_id": {
"type": "string"
},
"reply": {
"description": "The fare service's own confirmation.",
"type": "string"
},
"status": {
"enum": [
"sent"
],
"type": "string"
}
},
"required": [
"status",
"email",
"offer_id",
"reply"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d414691e728c309a1e485b29b74d91807f0f97035fc6a4a1124b5eacaad875c3 | sha256sum