Skip to main content
Glama

Gondola Award Travel Search

search_flights

Read-only

Search for flights by route and date. Returns cash-priced options ranked for the traveler — weighing their airline loyalty/status and travel history alongside flight quality, not price alone — 10 options per page. Results are discovery-only and cannot be booked through Gondola. Call again with page=2, 3, ... to see more options if none of the first page fit. When you asked for points and the response comes back with pending_sources, award pricing is still being fetched: call get_flight_points with the same search_id and departure_date, passing those pending_sources back, to get it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based results page, 10 options per page. Increment to see more options.
originYesOrigin airport code or city (e.g. "LAX", "SFO", "New York").
pointsNoSet true when the traveler asks about award pricing, miles, points, redeeming rewards, award availability, or comparing cash vs. points — including phrases like "include points", "show me miles", "how many points", or "use my [program] miles". Default false. When true, award prices arrive on a follow-up call to get_flight_points (not in this response), so you MUST call get_flight_points after this returns. One-way flights only.
airlinesNoOptional airline codes or names, e.g. ["UA"] or ["United"]. Filters the discovery results.
max_stopsNoOptional maximum stops per direction. Use 0 for nonstop only.
cabin_classNoOptional cabin class: "economy", "premium economy", "business", "first".
destinationYesDestination airport code or city (e.g. "NRT", "LHR", "Paris").
return_dateNoOptional return date in YYYY-MM-DD format for a round trip. Read the labels on the results: a price marked 'round trip' already covers both directions, while results split into separate outbound and return sections are one-way prices whose sum overstates the real round-trip fare.
departure_dateYesDeparture date in YYYY-MM-DD format.
num_passengersNoNumber of passengers.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / airlines / description
      Previous value: -"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Used only in \"browse\" mode to filter results."New value: +"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Filters the discovery results."
    • changedInput schema / properties / max_stops / description
      Previous value: -"Optional maximum stops per direction in \"browse\" mode. Use 0 for nonstop only."New value: +"Optional maximum stops per direction. Use 0 for nonstop only."
    • removedInput schema / properties / mode
      Removed value: -{
      -  "default": "browse",
      -  "description": "Leave as \"browse\" (default). \"book\" is a restricted alpha — only use it if the user explicitly asks to book a flight.",
      -  "enum": [
      -    "browse",
      -    "book"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / points / description
      Previous value: -"Set true when the traveler asks about award pricing, miles, points, redeeming rewards, award availability, or comparing cash vs. points — including phrases like \"include points\", \"show me miles\", \"how many points\", or \"use my [program] miles\". Default false. When true, award prices arrive on a follow-up call to get_flight_points (not in this response), so you MUST call get_flight_points after this returns. One-way flights only; no effect in book mode."New value: +"Set true when the traveler asks about award pricing, miles, points, redeeming rewards, award availability, or comparing cash vs. points — including phrases like \"include points\", \"show me miles\", \"how many points\", or \"use my [program] miles\". Default false. When true, award prices arrive on a follow-up call to get_flight_points (not in this response), so you MUST call get_flight_points after this returns. One-way flights only."
  2. Changed1 schema field changed
    • changedInput schema / properties / points / description
      Previous value: -"Leave as false (default). Set true only when the traveler asks about award pricing — redeeming miles or points, award availability, or whether cash or points is the better deal. Someone mentioning a balance in passing (\"I have 80k Aeroplan\") is context, not a request. Award prices are not in this response: they come from live airline scrapes, so a true here means you must make a second call to get_flight_points once this returns. Setting it speculatively costs the traveler that extra round trip. No effect in book mode."New value: +"Set true when the traveler asks about award pricing, miles, points, redeeming rewards, award availability, or comparing cash vs. points — including phrases like \"include points\", \"show me miles\", \"how many points\", or \"use my [program] miles\". Default false. When true, award prices arrive on a follow-up call to get_flight_points (not in this response), so you MUST call get_flight_points after this returns. One-way flights only; no effect in book mode."
  3. Changed1 schema field changed
    • changedInput schema / properties / airlines / description
      Previous value: -"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Used only in \"browse\" mode and passed to the Google Flights search API."New value: +"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Used only in \"browse\" mode to filter results."
  4. Changed1 schema field changed
    • addedInput schema / properties / points
      Added value: +{
      +  "default": false,
      +  "description": "Leave as false (default). Set true only when the traveler asks about award pricing — redeeming miles or points, award availability, or whether cash or points is the better deal. Someone mentioning a balance in passing (\"I have 80k Aeroplan\") is context, not a request. Award prices are not in this response: they come from live airline scrapes, so a true here means you must make a second call to get_flight_points once this returns. Setting it speculatively costs the traveler that extra round trip. No effect in book mode.",
      +  "type": "boolean"
      +}
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "result": {
      +      "title": "Result",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "result"
      +  ],
      +  "title": "search_flightsOutput",
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / return_date / description
      Previous value: -"Optional return date in YYYY-MM-DD format for a round trip. In browse mode, the tool searches outbound and return legs separately as one-way results."New value: +"Optional return date in YYYY-MM-DD format for a round trip. Read the labels on the results: a price marked 'round trip' already covers both directions, while results split into separate outbound and return sections are one-way prices whose sum overstates the real round-trip fare."
  7. Changed36 schema fields changed
    • removedInput schema / properties / airlines / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / airlines / default
      Removed value: -null
    • addedInput schema / properties / airlines / description
      Added value: +"Optional airline codes or names, e.g. [\"UA\"] or [\"United\"]. Used only in \"browse\" mode and passed to the Google Flights search API."
    • addedInput schema / properties / airlines / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / airlines / title
      Removed value: -"Airlines"
    • addedInput schema / properties / airlines / type
      Added value: +"array"
    • removedInput schema / properties / cabin_class / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / cabin_class / default
      Removed value: -null
    • addedInput schema / properties / cabin_class / description
      Added value: +"Optional cabin class: \"economy\", \"premium economy\", \"business\", \"first\"."
    • removedInput schema / properties / cabin_class / title
      Removed value: -"Cabin Class"
    • addedInput schema / properties / cabin_class / type
      Added value: +"string"
    • addedInput schema / properties / departure_date / description
      Added value: +"Departure date in YYYY-MM-DD format."
    • removedInput schema / properties / departure_date / title
      Removed value: -"Departure Date"
    • addedInput schema / properties / destination / description
      Added value: +"Destination airport code or city (e.g. \"NRT\", \"LHR\", \"Paris\")."
    • removedInput schema / properties / destination / title
      Removed value: -"Destination"
    • removedInput schema / properties / max_stops / anyOf
      Removed value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / max_stops / default
      Removed value: -null
    • addedInput schema / properties / max_stops / description
      Added value: +"Optional maximum stops per direction in \"browse\" mode. Use 0 for nonstop only."
    • addedInput schema / properties / max_stops / minimum
      Added value: +0
    • removedInput schema / properties / max_stops / title
      Removed value: -"Max Stops"
    • addedInput schema / properties / max_stops / type
      Added value: +"integer"
    • addedInput schema / properties / mode / description
      Added value: +"Leave as \"browse\" (default). \"book\" is a restricted alpha — only use it if the user explicitly asks to book a flight."
    • removedInput schema / properties / mode / title
      Removed value: -"Mode"
    • addedInput schema / properties / num_passengers / description
      Added value: +"Number of passengers."
    • removedInput schema / properties / num_passengers / title
      Removed value: -"Num Passengers"
    • addedInput schema / properties / origin / description
      Added value: +"Origin airport code or city (e.g. \"LAX\", \"SFO\", \"New York\")."
    • removedInput schema / properties / origin / title
      Removed value: -"Origin"
    • addedInput schema / properties / page / description
      Added value: +"1-based results page, 10 options per page. Increment to see more options."
    • removedInput schema / properties / page / title
      Removed value: -"Page"
    • removedInput schema / properties / return_date / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / return_date / default
      Removed value: -null
    • addedInput schema / properties / return_date / description
      Added value: +"Optional return date in YYYY-MM-DD format for a round trip. In browse mode, the tool searches outbound and return legs separately as one-way results."
    • removedInput schema / properties / return_date / title
      Removed value: -"Return Date"
    • addedInput schema / properties / return_date / type
      Added value: +"string"
    • removedInput schema / title
      Removed value: -"search_flightsArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "title": "Result",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "search_flightsOutput",
      -  "type": "object"
      -}New value: +null
  8. Changed2 schema fields changed
    • addedInput schema / properties / airlines
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Airlines"
      +}
    • addedInput schema / properties / max_stops
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Max Stops"
      +}
  9. Changed1 schema field changed
    • addedInput schema / properties / page
      Added value: +{
      +  "default": 1,
      +  "title": "Page",
      +  "type": "integer"
      +}
  10. Changed1 schema field changed
    • addedInput schema / properties / mode
      Added value: +{
      +  "default": "browse",
      +  "enum": [
      +    "browse",
      +    "book"
      +  ],
      +  "title": "Mode",
      +  "type": "string"
      +}
  11. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/openWorld/non-destructive annotations, the description discloses important behaviors: results are ranked by traveler loyalty/history rather than price alone, results are cash-priced and discovery-only, responses are paginated at 10 options, and award pricing may arrive asynchronously via pending_sources. These traits materially affect how an agent should interpret and act on the result, and none of them are visible from annotations alone.

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 front-loaded with the core action, then adds ranking behavior, pagination, booking limitation, and the points follow-up in tight, purposeful sentences. Every sentence earns its place and the length is justified by the tool's complexity. There is no filler or repetition of annotation values.

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 search tool with an output schema and readOnly/openWorld annotations, the description covers everything needed to call and interpret the tool correctly: what results look like, how pagination works, that booking is not possible, and what to do about pending award pricing. No critical operational context 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?

The input schema already has 100% parameter description coverage, so the baseline is 3. The description adds some flow-level context about page and points, but it does not add much parameter-specific meaning beyond what the schema already provides. Since the schema covers all parameter semantics, no compensation is needed and 3 is appropriate.

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 description opens with a specific verb and resource: 'Search for flights by route and date.' It clearly differentiates this tool from the other search_* siblings (hotels, vehicles, events) by domain, and from get_flight_points by stating that this search returns cash-priced discovery options while award pricing is handled by a follow-up call. The scoping to flights, date, and route is unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: pagination instructions ('Call again with page=2, 3, ...'), a discovery-only limitation ('cannot be booked through Gondola'), and a concrete conditional handoff to get_flight_points when pending_sources appears. It names the alternative tool and the exact condition that triggers it, so an agent knows when to use this tool versus the flight-points follow-up.

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.