Skip to main content
Glama

Google Flights Search (Real-Time Fares)

Server Details

Real-time Google Flights: one-way and round-trip fares over date ranges, with price verdicts.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
mtnrabi/travel-agent-skills
GitHub Stars
0

Available Tools

2 tools
search_oneway_flightsSearch one-way flightsA
Read-only
Inspect

Search real-time one-way flights on Google Flights. Input: origin and destination IATA codes (destination may be a list) plus either one departure date or a date range. Returns each flight's price, airline, duration, stops, a bookable buy_link, and Google's historical price range (price_insights_low / price_insights_high) so you can say whether a fare is actually a good deal.

Use it for any one-way fare question, including open-ended ones. For a flexible search make ONE call with a date range and/or several destinations -- do NOT call it once per date. 'Cheapest flight to Sri Lanka anywhere in October' is one call, not thirty.

Each date/destination combination is one billed request; the count and the plan's remaining quota come back in api_usage.

Requires the caller's own RapidAPI key for the Google Flights Live API. Get one (free tier available) at https://rapidapi.com/mtnrabi/api/google-flights-live-api, then pass it as an x-rapidapi-key header (preferred), a ?rapidapi_key= query parameter on the server URL, or your client's own API key field -- first non-empty wins. Usage counts against the caller's own RapidAPI plan, not ours; every response reports what it spent and what is left in api_usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum flights to return, after merging and sorting.
sort_byNo"best", "price", or "duration". Applied across all results.best
currencyNoISO currency code, default "usd".usd
max_priceNoOnly return flights at or below this price.
max_stopsNoMaximum stops per flight. 0 means non-stop only.
seat_typeNo1 economy, 2 premium economy, 3 business, 4 first.
passengersNoPassenger counts as [adults, children, infants].
to_airportYesDestination IATA code, or a list of them to compare.
from_airportYesOrigin IATA code, e.g. "TLV".
max_searchesNoCap the billed requests this call may make. Lower it to spend less of the plan's quota on a wide search; the range is then sampled evenly rather than cut short.
use_fallbackNoLeave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included.
airline_codesNoRestrict to these airline codes, e.g. ["LY"].
departure_dateNoSingle departure date, "YYYY-MM-DD".
arrival_time_maxNoLatest arrival hour, 0-23.
arrival_time_minNoEarliest arrival hour, 0-23.
departure_date_toNoLast date of a departure range.
departure_time_maxNoLatest departure hour, 0-23.
departure_time_minNoEarliest departure hour, 0-23.
departure_date_fromNoFirst date of a departure range.
exclude_airline_codesNoExclude these airline codes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNoPresent when there is something the model must relay to the user rather than silently absorb -- no results, a degraded search, a missing key or a spent quota.
partialNoPresent when some searches failed but others succeeded. Plain text saying how much of the request the results cover.
resultsYesThe itineraries or properties found, already sorted and deduplicated. An empty array is only meaningful when search_status is 'empty'.
api_usageNoWhat this call cost the caller's own RapidAPI plan, and what remains on it. Present on every response that reached the upstream, including a degraded one -- a search that failed was still billed.
signup_urlNoWhere the caller subscribes or changes plan.
result_countNo
needs_api_keyNoTrue when no usable RapidAPI key arrived with the call, or the upstream rejected the one that did. No search was run and nothing was billed; signup_url and message say how to fix it.
search_statusNoWhether the underlying search actually completed, read from the backend's X-Search-Status header. 'ok': every combination searched returned results. 'empty': the search completed and Google genuinely has no itineraries for it -- a real answer, not a failure. 'partial': some combinations returned results and some failed, so the list is incomplete. 'degraded': every combination failed, so the search did not happen and an empty list means nothing; this case is also flagged with isError: true and is safe to retry.
quota_exhaustedNoTrue when the caller's RapidAPI plan has no requests left for the current period.
search_coverageNoWhat was actually searched. Present whether or not the request was truncated, so a model can state honestly what its answer rests on.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint annotations, the description discloses substantial behavioral context: each date/destination combination is a billed request against the caller's own RapidAPI plan, quota status is returned in api_usage, and an external API key is required with exact passing methods. It also reveals output behavior (price_insights_low/high for deal judgement) that annotations cannot express. No contradiction with the read-only, open-world hints.

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 description is front-loaded with purpose and return values, then moves to usage batching, billing, and auth. Every sentence carries unique operational information for a complex 20-parameter tool with an external API dependency. The auth paragraph is dense, but the detail is actionable; only slight tightening would make it fully optimal.

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 tool with 20 parameters, an external API key, and per-request billing, the description covers everything non-obvious needed to call it correctly: input shape, return values (with output schema available for detail), flexible-search batching, quota accounting, and key provisioning. The fallback behavior lives in the use_fallback parameter description, which is an appropriate place. Nothing an agent needs to invoke it safely is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful parameter-level context: that destination lists and date ranges combine into a single billed call rather than separate calls, and that max_searches caps quota spend. This cross-parameter cost model is not inferable from the schema alone, pushing it above baseline.

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?

The opening sentence uses a specific verb + resource: 'Search real-time one-way flights on Google Flights.' The 'one-way' qualifier distinguishes it directly from the sibling search_roundtrip_flights, and the description states what it returns (price, airline, duration, stops, buy_link, price insights). An agent can tell exactly what this tool does without opening the 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 description explicitly says 'Use it for any one-way fare question, including open-ended ones' and gives strong batching guidance: one call with a date range and/or multiple destinations, not one call per date, with the concrete example 'Cheapest flight to Sri Lanka anywhere in October.' It does not explicitly name the round-trip sibling as the alternative or state a when-not condition, but the one-way framing makes the boundary clear.

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

search_roundtrip_flightsSearch round-trip flightsA
Read-only
Inspect

Search real-time round-trip flights on Google Flights, priced as paired legs rather than two separate one-ways. Input: origin and destination IATA codes (destination may be a list), a departure date or range, and either a return date or a trip length in nights. Returns the total price for both legs, per-leg airline, stops and duration, and a single bookable buy_link for the trip.

Use it for any return-trip fare question. For a flexible search make ONE call: pass departure_date_from / departure_date_to for the outbound range and nights instead of return_date to compare trip lengths -- '5 to 7 nights in Rome sometime in May' is one call.

Each date/destination combination is one billed request; the count and the plan's remaining quota come back in api_usage.

Requires the caller's own RapidAPI key for the Google Flights Live API. Get one (free tier available) at https://rapidapi.com/mtnrabi/api/google-flights-live-api, then pass it as an x-rapidapi-key header (preferred), a ?rapidapi_key= query parameter on the server URL, or your client's own API key field -- first non-empty wins. Usage counts against the caller's own RapidAPI plan, not ours; every response reports what it spent and what is left in api_usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum trips to return, after merging and sorting.
nightsNoTrip length in nights; a number, or a list like [5, 6, 7]. The return date is derived from each departure date.
sort_byNo"best", "price", or "duration". Applied across all results.best
currencyNoISO currency code, default "usd".usd
max_priceNoOnly return trips at or below this total price.
seat_typeNo1 economy, 2 premium economy, 3 business, 4 first.
passengersNoPassenger counts as [adults, children, infants].
to_airportYesDestination IATA code, or a list of them to compare.
return_dateNoFixed return date. Use this OR nights, not both.
from_airportYesOrigin IATA code, e.g. "TLV".
max_searchesNoCap the billed requests this call may make. Lower it to spend less of the plan's quota on a wide search; the range is then sampled evenly rather than cut short.
use_fallbackNoLeave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included.
departure_dateNoSingle outbound date, "YYYY-MM-DD".
max_return_stopsNoMaximum stops on the return leg.
departure_date_toNoLast date of an outbound range.
departure_date_fromNoFirst date of an outbound range.
max_departure_stopsNoMaximum stops on the outbound leg.
return_airline_codesNoRestrict the return leg to these airlines.
departure_airline_codesNoRestrict the outbound leg to these airlines.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageNoPresent when there is something the model must relay to the user rather than silently absorb -- no results, a degraded search, a missing key or a spent quota.
partialNoPresent when some searches failed but others succeeded. Plain text saying how much of the request the results cover.
resultsYesThe itineraries or properties found, already sorted and deduplicated. An empty array is only meaningful when search_status is 'empty'.
api_usageNoWhat this call cost the caller's own RapidAPI plan, and what remains on it. Present on every response that reached the upstream, including a degraded one -- a search that failed was still billed.
signup_urlNoWhere the caller subscribes or changes plan.
result_countNo
needs_api_keyNoTrue when no usable RapidAPI key arrived with the call, or the upstream rejected the one that did. No search was run and nothing was billed; signup_url and message say how to fix it.
search_statusNoWhether the underlying search actually completed, read from the backend's X-Search-Status header. 'ok': every combination searched returned results. 'empty': the search completed and Google genuinely has no itineraries for it -- a real answer, not a failure. 'partial': some combinations returned results and some failed, so the list is incomplete. 'degraded': every combination failed, so the search did not happen and an empty list means nothing; this case is also flagged with isError: true and is safe to retry.
quota_exhaustedNoTrue when the caller's RapidAPI plan has no requests left for the current period.
search_coverageNoWhat was actually searched. Present whether or not the request was truncated, so a model can state honestly what its answer rests on.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark readOnlyHint=true and destructiveHint=false, so the description's additional context about billing (each date/destination combo is one billed request), quota reporting in api_usage, and the required RapidAPI key adds substantial value. It also discloses fallback behavior and auth key precedence. No contradiction with annotations.

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

Conciseness5/5

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

The description is dense but well-structured into three paragraphs: core function, usage patterns, and billing/auth. Every sentence earns its place, with no filler. The length is justified by the tool's 19 parameters, external API integration, and auth requirements.

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 tool with this complexity, the description covers input formats, output essentials, auth requirements, billing behavior, and fallback logic. With an output schema present, it doesn't need to enumerate full return fields. The sibling distinction is implied through the round-trip focus and is sufficient for correct tool selection.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that destination may be a list, that departure can be a range via departure_date_from/to, and that nights is an alternative to return_date. It also clarifies max_searches' sampling behavior and the use_fallback escalation logic, going beyond the schema's own descriptions.

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: 'Search real-time round-trip flights on Google Flights.' Contrasts with 'priced as paired legs rather than two separate one-ways', which directly differentiates it from the one-way sibling. The description also lists inputs and outputs, leaving no ambiguity about what the tool does.

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?

Explicitly says 'Use it for any return-trip fare question', giving a clear when-to-use. Provides a concrete flexible-search example showing how to combine date ranges and nights in one call. Does not explicitly name the sibling or say 'do not use for one-way', but the round-trip focus is strong enough to guide an agent.

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. Dates show when Glama detected each change.

  1. 2 tool updates
    • Changedsearch_oneway_flights4 fields changed
      • addedOutput schema / description
        Added value: +"A completed flight search. Read search_status before reading results: an empty array means 'no flights' only when search_status is 'empty'."
      • addedOutput schema / properties
        Added value: +{
        +  "api_usage": {
        +    "additionalProperties": true,
        +    "description": "What this call cost the caller's own RapidAPI plan, and what remains on it. Present on every response that reached the upstream, including a degraded one -- a search that failed was still billed.",
        +    "properties": {
        +      "note": {
        +        "description": "The same figures as a sentence, for the model to relay.",
        +        "type": "string"
        +      },
        +      "plan_requests_limit": {
        +        "type": "integer"
        +      },
        +      "plan_requests_remaining": {
        +        "type": "integer"
        +      },
        +      "requests_used_by_this_call": {
        +        "minimum": 0,
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "message": {
        +    "description": "Present when there is something the model must relay to the user rather than silently absorb -- no results, a degraded search, a missing key or a spent quota.",
        +    "type": "string"
        +  },
        +  "needs_api_key": {
        +    "description": "True when no usable RapidAPI key arrived with the call, or the upstream rejected the one that did. No search was run and nothing was billed; signup_url and message say how to fix it.",
        +    "type": "boolean"
        +  },
        +  "partial": {
        +    "description": "Present when some searches failed but others succeeded. Plain text saying how much of the request the results cover.",
        +    "type": "string"
        +  },
        +  "quota_exhausted": {
        +    "description": "True when the caller's RapidAPI plan has no requests left for the current period.",
        +    "type": "boolean"
        +  },
        +  "result_count": {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "results": {
        +    "description": "The itineraries or properties found, already sorted and deduplicated. An empty array is only meaningful when search_status is 'empty'.",
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "search_coverage": {
        +    "additionalProperties": true,
        +    "description": "What was actually searched. Present whether or not the request was truncated, so a model can state honestly what its answer rests on.",
        +    "properties": {
        +      "departure_dates_searched": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "destinations_searched": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "max_searches_per_request": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "requested_combinations": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "searched_combinations": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "truncated": {
        +        "description": "True when the request expanded past this call's spend ceiling and was sampled. A date absent from departure_dates_searched was never searched, which is not the same as having no flights.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "search_status": {
        +    "description": "Whether the underlying search actually completed, read from the backend's X-Search-Status header. 'ok': every combination searched returned results. 'empty': the search completed and Google genuinely has no itineraries for it -- a real answer, not a failure. 'partial': some combinations returned results and some failed, so the list is incomplete. 'degraded': every combination failed, so the search did not happen and an empty list means nothing; this case is also flagged with isError: true and is safe to retry.",
        +    "enum": [
        +      "ok",
        +      "empty",
        +      "partial",
        +      "degraded"
        +    ],
        +    "type": "string"
        +  },
        +  "signup_url": {
        +    "description": "Where the caller subscribes or changes plan.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "results"
        +]
      • addedOutput schema / title
        Added value: +"Flight search result"
    • Changedsearch_roundtrip_flights4 fields changed
      • addedOutput schema / description
        Added value: +"A completed flight search. Read search_status before reading results: an empty array means 'no flights' only when search_status is 'empty'."
      • addedOutput schema / properties
        Added value: +{
        +  "api_usage": {
        +    "additionalProperties": true,
        +    "description": "What this call cost the caller's own RapidAPI plan, and what remains on it. Present on every response that reached the upstream, including a degraded one -- a search that failed was still billed.",
        +    "properties": {
        +      "note": {
        +        "description": "The same figures as a sentence, for the model to relay.",
        +        "type": "string"
        +      },
        +      "plan_requests_limit": {
        +        "type": "integer"
        +      },
        +      "plan_requests_remaining": {
        +        "type": "integer"
        +      },
        +      "requests_used_by_this_call": {
        +        "minimum": 0,
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "message": {
        +    "description": "Present when there is something the model must relay to the user rather than silently absorb -- no results, a degraded search, a missing key or a spent quota.",
        +    "type": "string"
        +  },
        +  "needs_api_key": {
        +    "description": "True when no usable RapidAPI key arrived with the call, or the upstream rejected the one that did. No search was run and nothing was billed; signup_url and message say how to fix it.",
        +    "type": "boolean"
        +  },
        +  "partial": {
        +    "description": "Present when some searches failed but others succeeded. Plain text saying how much of the request the results cover.",
        +    "type": "string"
        +  },
        +  "quota_exhausted": {
        +    "description": "True when the caller's RapidAPI plan has no requests left for the current period.",
        +    "type": "boolean"
        +  },
        +  "result_count": {
        +    "minimum": 0,
        +    "type": "integer"
        +  },
        +  "results": {
        +    "description": "The itineraries or properties found, already sorted and deduplicated. An empty array is only meaningful when search_status is 'empty'.",
        +    "items": {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "search_coverage": {
        +    "additionalProperties": true,
        +    "description": "What was actually searched. Present whether or not the request was truncated, so a model can state honestly what its answer rests on.",
        +    "properties": {
        +      "departure_dates_searched": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "destinations_searched": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "max_searches_per_request": {
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "requested_combinations": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "searched_combinations": {
        +        "minimum": 0,
        +        "type": "integer"
        +      },
        +      "truncated": {
        +        "description": "True when the request expanded past this call's spend ceiling and was sampled. A date absent from departure_dates_searched was never searched, which is not the same as having no flights.",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "search_status": {
        +    "description": "Whether the underlying search actually completed, read from the backend's X-Search-Status header. 'ok': every combination searched returned results. 'empty': the search completed and Google genuinely has no itineraries for it -- a real answer, not a failure. 'partial': some combinations returned results and some failed, so the list is incomplete. 'degraded': every combination failed, so the search did not happen and an empty list means nothing; this case is also flagged with isError: true and is safe to retry.",
        +    "enum": [
        +      "ok",
        +      "empty",
        +      "partial",
        +      "degraded"
        +    ],
        +    "type": "string"
        +  },
        +  "signup_url": {
        +    "description": "Where the caller subscribes or changes plan.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "results"
        +]
      • addedOutput schema / title
        Added value: +"Flight search result"
  2. 2 tool updates
    • Changedsearch_oneway_flights23 fields changed
      • addedInput schema / properties / airline_codes / description
        Added value: +"Restrict to these airline codes, e.g. [\"LY\"]."
      • addedInput schema / properties / arrival_time_max / description
        Added value: +"Latest arrival hour, 0-23."
      • addedInput schema / properties / arrival_time_min / description
        Added value: +"Earliest arrival hour, 0-23."
      • addedInput schema / properties / currency / description
        Added value: +"ISO currency code, default \"usd\"."
      • addedInput schema / properties / departure_date / description
        Added value: +"Single departure date, \"YYYY-MM-DD\"."
      • addedInput schema / properties / departure_date_from / description
        Added value: +"First date of a departure range."
      • addedInput schema / properties / departure_date_to / description
        Added value: +"Last date of a departure range."
      • addedInput schema / properties / departure_time_max / description
        Added value: +"Latest departure hour, 0-23."
      • addedInput schema / properties / departure_time_min / description
        Added value: +"Earliest departure hour, 0-23."
      • addedInput schema / properties / exclude_airline_codes / description
        Added value: +"Exclude these airline codes."
      • addedInput schema / properties / from_airport / description
        Added value: +"Origin IATA code, e.g. \"TLV\"."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum flights to return, after merging and sorting."
      • addedInput schema / properties / max_price / description
        Added value: +"Only return flights at or below this price."
      • addedInput schema / properties / max_searches / description
        Added value: +"Cap the billed requests this call may make. Lower it to spend less of the plan's quota on a wide search; the range is then sampled evenly rather than cut short."
      • addedInput schema / properties / max_stops / description
        Added value: +"Maximum stops per flight. 0 means non-stop only."
      • addedInput schema / properties / passengers / description
        Added value: +"Passenger counts as [adults, children, infants]."
      • addedInput schema / properties / seat_type / description
        Added value: +"1 economy, 2 premium economy, 3 business, 4 first."
      • addedInput schema / properties / sort_by / description
        Added value: +"\"best\", \"price\", or \"duration\". Applied across all results."
      • addedInput schema / properties / to_airport / description
        Added value: +"Destination IATA code, or a list of them to compare."
      • addedInput schema / properties / use_fallback / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / use_fallback / default
        Previous value: -falseNew value: +null
      • addedInput schema / properties / use_fallback / description
        Added value: +"Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included."
      • removedInput schema / properties / use_fallback / type
        Removed value: -"boolean"
    • Changedsearch_roundtrip_flights22 fields changed
      • addedInput schema / properties / currency / description
        Added value: +"ISO currency code, default \"usd\"."
      • addedInput schema / properties / departure_airline_codes / description
        Added value: +"Restrict the outbound leg to these airlines."
      • addedInput schema / properties / departure_date / description
        Added value: +"Single outbound date, \"YYYY-MM-DD\"."
      • addedInput schema / properties / departure_date_from / description
        Added value: +"First date of an outbound range."
      • addedInput schema / properties / departure_date_to / description
        Added value: +"Last date of an outbound range."
      • addedInput schema / properties / from_airport / description
        Added value: +"Origin IATA code, e.g. \"TLV\"."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum trips to return, after merging and sorting."
      • addedInput schema / properties / max_departure_stops / description
        Added value: +"Maximum stops on the outbound leg."
      • addedInput schema / properties / max_price / description
        Added value: +"Only return trips at or below this total price."
      • addedInput schema / properties / max_return_stops / description
        Added value: +"Maximum stops on the return leg."
      • addedInput schema / properties / max_searches / description
        Added value: +"Cap the billed requests this call may make. Lower it to spend less of the plan's quota on a wide search; the range is then sampled evenly rather than cut short."
      • addedInput schema / properties / nights / description
        Added value: +"Trip length in nights; a number, or a list like [5, 6, 7]. The return date is derived from each departure date."
      • addedInput schema / properties / passengers / description
        Added value: +"Passenger counts as [adults, children, infants]."
      • addedInput schema / properties / return_airline_codes / description
        Added value: +"Restrict the return leg to these airlines."
      • addedInput schema / properties / return_date / description
        Added value: +"Fixed return date. Use this OR nights, not both."
      • addedInput schema / properties / seat_type / description
        Added value: +"1 economy, 2 premium economy, 3 business, 4 first."
      • addedInput schema / properties / sort_by / description
        Added value: +"\"best\", \"price\", or \"duration\". Applied across all results."
      • addedInput schema / properties / to_airport / description
        Added value: +"Destination IATA code, or a list of them to compare."
      • addedInput schema / properties / use_fallback / anyOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / use_fallback / default
        Previous value: -falseNew value: +null
      • addedInput schema / properties / use_fallback / description
        Added value: +"Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included."
      • removedInput schema / properties / use_fallback / type
        Removed value: -"boolean"
  3. 2 tool updates
    • First observedsearch_oneway_flights
    • First observedsearch_roundtrip_flights

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables users to find the cheapest dates to fly a route via Google Flights, supporting one-way and round-trip searches through multiple backends. It provides a tool that can search date ranges, filter by nonstop, seat, currency, and force a particular backend.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Search Google Flights for one-way, round-trip and multi-city fares, with offline airport lookup and nearby-airport resolution.
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Flight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.6/5.0
Disambiguation5/5

The two tools are clearly differentiated by trip type: one-way versus round-trip. There is no realistic ambiguity about which tool to select for a given query.

Naming Consistency5/5

Both tools follow the exact same verb_noun pattern: search_oneway_flights and search_roundtrip_flights. The naming is predictable and instantly signals the search mode.

Tool Count4/5

With only two tools the surface is thin, but each covers a core flight-search mode and supports flexible date/destination lists within a single call. The count is slightly under the typical well-scoped range but not inadequate.

Completeness4/5

The two tools cover the primary one-way and round-trip fare-search workflows, including flexible dates and multiple destinations. Multi-city or more advanced itinerary types are absent, but the core Google Flights search surface is functionally complete.