Skip to main content
Glama
HasData

Google Flights Deals MCP Server

google_travel_flights_deals: GET /

hasdata_google_travel_flights_deals_getGoogleFlightsDeals
Read-only

Turn a plain-language trip idea into dated flight deals from one origin airport, with prices, airlines, stops and booking links chosen by Google's AI.

Instructions

Get Google Flights Deals Results

Turns a plain-language trip description ("I would like to see cherry blossom in Japan", "beach escape", "fireworks festival in Hong Kong") into flight deals from one origin airport, with Google's AI choosing the destinations and travel dates. Each deal carries outbound and return dates, price, flight duration, trip length in days, number of stops, operating airline, departure and arrival airports, and a direct Google Flights booking link; typical price with the discount against it, and a destination description with a photo, come back only for searches Google shaped itself. Also returns the destinations and date range Google derived from the query. Filters cover trip type, cabin class, stops, dates, trip length, price and duration ceilings, airlines and party size. Use for inspiration-driven travel search, seasonal and event-based fare discovery, deal alerting, and travel-content generation.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesFree-text trip description, from a bare place name to a full sentence: - **Destination**: `Tokyo` - **Type of trip**: `beach escape`, `weekend getaway in Europe` - **Season or event**: `I would like to see cherry blossom in Japan` When the query implies a time of year, Google dates it itself and reports the range in `searchInformation.dateRange`.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
typeNoFlight type. Requires `arrivalId`. - `1` / `roundTrip` — round trip (default) - `2` / `oneWay` — one way A one-way deal carries no `returnDate` and no `tripLengthDays`.
stopsNoMaximum number of stops. Requires `arrivalId`. Omitted, any number is allowed. - `1` / `nonStop` — direct flights only - `2` / `oneStopOrFewer` — at most one connection - `3` / `twoStopsOrFewer` — at most two connections A route with nothing at that depth returns an empty `flightDeals` array, not an error — `nonStop` on a route without a direct flight is a valid, empty answer.
adultsNoNumber of adults. Prices cover the whole party, so raising this raises every deal price. Passenger counts reprice rather than narrow the search, so they need no `arrivalId`. The whole party must not exceed 9.
childrenNoNumber of children, priced at their own fare. Counts towards the limit of 9 passengers.
currencyNoParameter defines the currency of the returned prices Provide one exact documented value (71 allowed), e.g. `ALL`, `DZD`.
maxPriceNoMaximum ticket price, inclusive. Requires `arrivalId`. Omitted, it is unbounded. Read in the currency of the request: `650` means 650 EUR when `currency` is `EUR`, and 650 USD by default.
arrivalIdNoPins the search to one destination instead of letting Google pick from the query. - **IATA code**: 3 uppercase letters, e.g. `NRT` for Tokyo Narita. - **Location kgmid**: starts with `/m/`, found in Wikidata under "Freebase ID", e.g. `/m/07dfk` for Tokyo. Required by every filter: `type`, `travelClass`, `stops`, `outboundDate`, `returnDate`, `travelDuration`, `tripLength`, `maxPrice`, `maxDuration`, `includeAirlines` and `excludeAirlines`. Without it Google drops them silently.
returnDateNoWhen to return, in the same exact-or-window spelling as `outboundDate`, which is required alongside it. Cannot be combined with `travelDuration` or `tripLength` — all three set the trip length. Ignored when `type` is `oneWay`.
tripLengthNoTrip length in days. Requires `arrivalId`. Cannot be combined with `returnDate` or `travelDuration`. - **Exact**: `7` - **Range**: `5,10` — min first Pairs with `outboundDate` to limit the departure period. Ignored when `type` is `oneWay`.
departureIdYesDeparture airport as a 3-letter uppercase IATA code, e.g. `LAX` or `LHR`. Search on [IATA](https://www.iata.org/en/publications/directories/code-search). One airport per search; city names are not accepted.
maxDurationNoMaximum flight duration in minutes — `1500` for 25 hours. Requires `arrivalId`. Omitted, it is unbounded. Applies to each leg, not to the round trip. Google measures against a longer figure than the `durationMinutes` it returns, so set the ceiling above the flight you want: on a route whose shortest deal is 635 minutes, `635` comes back empty and `680` returns it. On an empty result, raise `maxDuration` by up to 200 before concluding the route has nothing.
travelClassNoTravel class. Requires `arrivalId`. - `1` / `economy` — economy (default) - `2` / `premiumEconomy` — premium economy - `3` / `business` — business - `4` / `first` — first Fares climb steeply: on LAX-NRT the same search ran $730 in economy against $2882 in business.
infantsOnLapNoNumber of infants on an adult's lap. Counts towards the limit of 9 passengers. Google prices a lap infant above one in its own seat — the opposite of how airlines usually charge.
outboundDateNoWhen to depart. Requires `arrivalId`. - **Exact date**: `2026-12-10` - **Window**: `2026-12-01,2026-12-10` — any day within it Omitted, Google picks the dates from the query, or from whatever is cheapest.
infantsInSeatNoNumber of infants in their own seat. Counts towards the limit of 9 passengers.
travelDurationNoPreset trip length. Requires `arrivalId`. Cannot be combined with `returnDate` or `tripLength`. - `1` / `week` — about a week (6-8 days) - `2` / `weekend` — a weekend (2-3 days) - `3` / `twoWeeks` — about two weeks (13-15 days) Pairs with `outboundDate` to limit the departure period. Ignored when `type` is `oneWay`.
excludeAirlinesNoDrops these airlines from the deals. Requires `arrivalId`. Cannot be combined with `includeAirlines`. Takes the same values as `includeAirlines`.
includeAirlinesNoKeeps only these airlines. Requires `arrivalId`. Cannot be combined with `excludeAirlines`. Comma-separated 2-character IATA codes (`AF`, `UA`, `B6`) and Google's alliances `STAR_ALLIANCE`, `SKYTEAM`, `ONEWORLD`. The two can be mixed. An airline that does not serve the route returns an empty `flightDeals` array, not an error.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: which fields always come back (dates, price, duration, stops, airline, booking link) versus which only appear for searches Google shaped itself (typical price, discount, destination photo), plus that the response includes derived destinations and date range. No permissions, rate limits, or pagination behavior are mentioned, keeping it short of 5 with annotations already carrying the safety story.

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

Conciseness4/5

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

The first sentence front-loads what the tool does, followed by the plain-language input examples, then the return payload, then filters, then use cases — a sensible order. It is dense and long-ish, but nearly every clause carries information (the conditional return fields and the derived destinations/date range are not stated anywhere else).

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

Completeness4/5

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

With 21 parameters and no output schema, the description is the only place describing what comes back, and it covers the return shape, the conditional fields, and the derived search information. Combined with a 100%-covered schema, an agent has enough to call it correctly; only the behavior of party-size repricing and the empty-result semantics of stops/airlines live exclusively in the schema, leaving minor room for improvement.

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% and the per-parameter descriptions are unusually rich (the maxDuration measurement caveat, the arrivalId requirement for every filter, the date-window spellings), so the schema does the heavy lifting. The description only groups the filters at a high level (trip type, cabin class, stops, dates, trip length, price and duration ceilings, airlines, party size), which maps onto the schema rather than adding meaning. Baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb and resource — turning a plain-language trip description into flight deals with Google choosing destinations and dates — which is far more than a restatement of the name. It implicitly separates this from the route-pinned sibling (getGoogleFlights), which requires arrivalId, but never names that alternative explicitly, so sibling differentiation is inferable rather than stated.

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?

"Use for inspiration-driven travel search, seasonal and event-based fare discovery, deal alerting, and travel-content generation" gives concrete when-to-use scenarios with examples of the query style (cherry blossom, beach escape, festival). There is no explicit when-not-to-use or named alternative for a user who already knows their exact destination and dates, which is the main remaining gap.

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