HasData Google Flights Deals
Server Details
A plain-language trip description becomes dated flight deals with prices and booking links.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- HasData/google-flights-deals-mcp
- GitHub Stars
- 0
- Server Listing
- Google Flights Deals MCP Server
TDQS
Scored across 1 tool
With only one tool, there is no ambiguity in tool selection. The single tool's purpose is clearly stated in its description.
The tool name mixes snake_case and camelCase (e.g., hasdata_google_travel_flights_deals_getGoogleFlightsDeals), which is a minor inconsistency. However, with only one tool, there is no cross-tool pattern to violate.
One tool feels thin for a server, even if it is comprehensive. Typically, servers with multiple operations benefit from more granular tools, but this may be intentional for a simple API.
The tool covers the entire described functionality: it takes a natural language query and returns flight deals with rich details and filters. No obvious missing operations for the stated purpose, though deeper deal inspection might be a minor gap.
Available Tools
1 toolhasdata_google_travel_flights_deals_getGoogleFlightsDealsgoogle_travel_flights_deals: GET /ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Free-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`. | |
| gl | No | The 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`. | |
| hl | No | The 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`. | |
| type | No | Flight type. Requires `arrivalId`. - `1` / `roundTrip` — round trip (default) - `2` / `oneWay` — one way A one-way deal carries no `returnDate` and no `tripLengthDays`. | |
| stops | No | Maximum 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. | |
| adults | No | Number 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. | |
| children | No | Number of children, priced at their own fare. Counts towards the limit of 9 passengers. | |
| currency | No | Parameter defines the currency of the returned prices Provide one exact documented value (71 allowed), e.g. `ALL`, `DZD`. | |
| maxPrice | No | Maximum 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. | |
| arrivalId | No | Pins 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. | |
| returnDate | No | When 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`. | |
| tripLength | No | Trip 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`. | |
| departureId | Yes | Departure 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. | |
| maxDuration | No | Maximum 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. | |
| travelClass | No | Travel 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. | |
| infantsOnLap | No | Number 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. | |
| outboundDate | No | When 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. | |
| infantsInSeat | No | Number of infants in their own seat. Counts towards the limit of 9 passengers. | |
| travelDuration | No | Preset 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`. | |
| excludeAirlines | No | Drops these airlines from the deals. Requires `arrivalId`. Cannot be combined with `includeAirlines`. Takes the same values as `includeAirlines`. | |
| includeAirlines | No | Keeps 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. |
TDQS
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.
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.
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.
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.
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.
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- First observed
hasdata_google_travel_flights_deals_getGoogleFlightsDeals
Related MCP Connectors
Live flight prices and working booking links for AI agents and travel apps.
Search flights by flexible dates and broad destinations, with live prices and booking links.
Is this flight price good? Buy-or-wait verdict from 90 days of real observed fares per route
Flight search, airfare analytics, flexible destinations
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables real-time flight fare searches across date ranges and multiple destinations, with historical price insights and booking links. Provides one-way and round-trip search tools through MCP.41MIT
- FlicenseNot gradedqualityBmaintenanceEnables finding the cheapest flight destinations from an airport as structured JSON, with bargain detection via typical price comparisons and booking links.-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol Server search realtime flight detail with multiple fligh carrier, price , stop , time duration for any given date using simple prompt43MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to search Google Flights for one-way, round-trip, open-jaw and multi-city itineraries with filters for cabin, stops, airlines, alliances, layovers, duration and price. It also compares the cheapest fares across dates and checks whether a round-trip ticket beats two separate one-way bookings.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.