Read-only public itinerary previews, observed round-trip fares, and flight savings verified today.
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.
Get the public preview of one Fly Frugal itinerary by its slug, as returned by list_itineraries. Returns the same fields as a list item: country_name, tagline, days_count, the preview content, image URLs, the full guide's price (price_cents, currency), updated_at and pdf_ready. Use it to describe a trip to the user or decide whether the full guide fits; the complete paid day-by-day guide is never returned. An unknown slug returns an error.
Itinerary slug from list_itineraries, lowercase and hyphenated, for example "japan" or "south-india".
Get the public preview of one Fly Frugal itinerary by its slug, as returned by list_itineraries. Returns the same fields as a list item: country_name, tagline, days_count, the preview content, image URLs, the full guide's price (price_cents, currency), updated_at and pdf_ready. Use it to describe a trip to the user or decide whether the full guide fits; the complete paid day-by-day guide is never returned. An unknown slug returns an error.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Itinerary slug from list_itineraries, lowercase and hyphenated, for example "japan" or "south-india". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"maxLength": 160,
"description": "Itinerary slug from list_itineraries, lowercase and hyphenated, for example \"japan\" or \"south-india\"."
}
}
}Return only the strongest current deals: fares whose Google savings insight was checked today (America/Los_Angeles calendar day) and shows a positive saving versus the usual price. Use it when the user asks for today's deals or wants prices that are freshly verified. Each deal has the same fields as list_flight_deals, plus count. If nothing was verified today the list is empty; say so instead of presenting older fares, or offer list_flight_deals for recent observations.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of deals to return (1 to 10, default 2). |
| nights | integer | Trip length in nights between the outbound and return flights (1 to 30, default 7). Only fares observed for this exact length are returned. |
| origin | string | Departure airport as a three-letter IATA code, such as SFO, JFK or ATL (case-insensitive). Omit to search deals from every tracked US airport. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 2,
"maximum": 10,
"minimum": 1,
"description": "Maximum number of deals to return (1 to 10, default 2)."
},
"nights": {
"type": "integer",
"default": 7,
"maximum": 30,
"minimum": 1,
"description": "Trip length in nights between the outbound and return flights (1 to 30, default 7). Only fares observed for this exact length are returned."
},
"origin": {
"type": "string",
"pattern": "^[a-zA-Z]{3}$",
"description": "Departure airport as a three-letter IATA code, such as SFO, JFK or ATL (case-insensitive). Omit to search deals from every tracked US airport."
}
}
}List the cheapest round-trip economy fares Fly Frugal has recently observed, from one departure airport or across all tracked US airports. Use it for questions like "cheap flights from SFO" or "where can I fly for under $500". Each deal has origin, destination_airport, label (airport name), country, places, departure_date and return_date, nights, price and currency (whole US dollars), airlines, longest_layover_minutes, observed_at, and Google's price insight when checked: google_price_signal (low, typical or high), google_usual_low/high, google_savings, google_share_url and google_signal_checked_at. Prices are observations that can change or sell out, so tell users to confirm before booking. For only deals re-verified today, use get_todays_deals.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of deals to return (1 to 50, default 20). |
| nights | integer | Trip length in nights between the outbound and return flights (1 to 30, default 7). Only fares observed for this exact length are returned. |
| origin | string | Departure airport as a three-letter IATA code, such as SFO, JFK or ATL (case-insensitive). Omit to search deals from every tracked US airport. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of deals to return (1 to 50, default 20)."
},
"nights": {
"type": "integer",
"default": 7,
"maximum": 30,
"minimum": 1,
"description": "Trip length in nights between the outbound and return flights (1 to 30, default 7). Only fares observed for this exact length are returned."
},
"origin": {
"type": "string",
"pattern": "^[a-zA-Z]{3}$",
"description": "Departure airport as a three-letter IATA code, such as SFO, JFK or ATL (case-insensitive). Omit to search deals from every tracked US airport."
}
}
}Browse Fly Frugal's published day-by-day budget travel itineraries. Use this to discover which destinations have a guide, then call get_itinerary with a returned slug for one guide's preview. Each item has slug, country_name, tagline, days_count, a preview, cover and first-day image URLs, price_cents and currency for the full guide, updated_at, and pdf_ready. Results are newest first. Only public previews are returned; the paid full guide is never included.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of itineraries to return (1 to 50, default 24). |
| country | string | Only return itineraries for this destination, matched case-insensitively against the full name, for example "Japan", "South Korea" or "Bali". Country codes such as "JP" do not match. Omit to list every destination. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 24,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of itineraries to return (1 to 50, default 24)."
},
"country": {
"type": "string",
"minLength": 2,
"description": "Only return itineraries for this destination, matched case-insensitively against the full name, for example \"Japan\", \"South Korea\" or \"Bali\". Country codes such as \"JP\" do not match. Omit to list every destination."
}
}
}