Skip to main content
Glama

Google Flights MCP

Search Google Flights Deals (SerpAPI)

google_flights_deals_search

Discover cheap flight destinations from an origin via SerpAPI's Google Flights Deals engine (google_flights_deals). Unlike google_flights_search there is no arrival_id — the engine explores destinations for you — and there are no pagination or navigation tokens. Dates accept a single YYYY-MM-DD or a 'start,end' range (e.g. '2026-06-27,2026-07-03') to widen the window. Supports round trip (type=1, needs return_date) and one way (type=2). Prices are in currency (default USD). Result shape: { source, fetchedAt, query, search_metadata, search_parameters, departure_informations, deals: [...] } — the list key is deals (there are no best_flights/other_flights here). Each deal: { destination_id, name, country, price, average_price, discount_percentage, flight_link, serpapi_flight_link, thumbnail, outbound_date, return_date, departure_airport_code, arrival_airport_code, flight_duration, stops, airline, airline_code, description, highlights }. The dates are outbound_date / return_date (YYYY-MM-DD) — the live engine returns those, not the start_date/end_date of SerpAPI's docs — and a deal carries NO departure or return time.

Input Schema

NameRequiredDescriptionDefault
glNoCountry code for the search, e.g. 'us', 'uk', 'de'.
hlNoLanguage code, e.g. 'en', 'es', 'fr'.
typeNoTrip type: 1 = round trip (default, needs return_date), 2 = one way.
stopsNoMax stops: 0 = any (default), 1 = nonstop only, 2 = 1 stop or fewer, 3 = 2 stops or fewer.
adultsNoNumber of adults. Default 1.
childrenNoNumber of children. Default 0.
currencyNoCurrency of returned prices (ISO code, e.g. 'USD', 'EUR'). Default USD.
no_cacheNoForce a fresh SerpAPI fetch and bypass this server's result cache. Default false.
max_priceNoMaximum ticket price in the selected currency.
zero_traceNoEnterprise-only ZeroTrace mode: don't store search params/metadata on SerpAPI. Default false.
return_dateNoReturn date as a single YYYY-MM-DD, or a 'start,end' range. Required when type=1 (round trip). When outbound_date is a range it must be a 'start,end' range too (or drop it and use trip_length/travel_duration).
trip_lengthNoTrip length in days: a single number, or a 'min,max' day range (e.g. '3,5').
departure_idNoDeparture AIRPORT IATA code(s) (3-letter, uppercase, e.g. 'WAW' or 'WAW,WMI') or a Google location kgmid (/m/… or /g/…). Comma-separate multiple. NOT a city/metro code (NYC, LON, PAR return no results — list the airports). No arrival_id: the deals engine discovers destinations for you.
max_durationNoMaximum total trip duration in minutes (e.g. 1500 for 25h).
travel_classNoTravel class: 1 = economy (default), 2 = premium economy, 3 = business, 4 = first.
outbound_dateNoOutbound date as a single YYYY-MM-DD, or a 'start,end' range (e.g. '2026-06-27,2026-07-03') to search a window.
infants_on_lapNoNumber of infants on lap. Default 0.
infants_in_seatNoNumber of infants in seat. Default 0.
travel_durationNoTravel duration preset: 1 = one week, 2 = weekend, 3 = two weeks.
exclude_airlinesNoExclude these airlines: comma-separated 2-letter IATA codes, or an alliance (STAR_ALLIANCE, SKYTEAM, ONEWORLD). Mutually exclusive with include_airlines.
include_airlinesNoOnly these airlines: comma-separated 2-letter IATA codes, or an alliance: STAR_ALLIANCE, SKYTEAM, ONEWORLD. Mutually exclusive with exclude_airlines.

Output Schema

NameRequiredDescriptionDefault
dealsNo
queryYes
sourceYes
fetchedAtYes
search_metadataNo
search_parametersNo
departure_informationsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden and does so: it discloses that there are no pagination or navigation tokens, that prices are in `currency`, that the result key is `deals` (not best_flights/other_flights), and that deals carry no departure/return times. It even corrects a SerpAPI documentation mismatch by stating the live engine returns `outbound_date`/`return_date` instead of `start_date`/`end_date`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and sibling differentiation are front-loaded, which is good, but the exhaustive enumeration of every field in the `deals` object is largely redundant given an output schema exists. It's dense and long, with the useful signal (the `deals` key, the date-field mismatch) buried in a wall of field names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter, zero-annotation tool the description covers what an agent actually needs: which parameters interact (type/return_date, outbound range vs trip_length), what the result envelope looks like, and the absence of pagination. Nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the 21 parameters is already documented in the schema; the description adds little beyond restating date-range syntax, the type=1/return_date dependency, and the USD default. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Discover cheap flight destinations from an origin') and immediately separates itself from the sibling: 'Unlike google_flights_search there is no arrival_id — the engine explores destinations for you.' An agent can pick between the two tools without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sibling differentiation plus the note that the engine explores destinations implicitly tells the agent this is the discovery path, and the round-trip/one-way (type=1 needs return_date) and date-range widening guidance gives concrete invocation context. What's missing is an explicit statement of the user-intent condition (e.g. 'use when the traveler has no fixed destination') or any when-not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources