Skip to main content
Glama
HaroldLeo

Google Flights MCP Server

by HaroldLeo

get_multi_city_flights

Plan complex multi-city trips by fetching itineraries for multiple flight segments with dates, origins, and destinations.

Instructions

Fetches multi-city/multi-stop itineraries for complex trip planning.

⚠️  IMPORTANT: Multi-city flight scraping is not fully supported by the underlying fast-flights
library. This function will generate a valid Google Flights URL with your search parameters,
but may not be able to parse the results. If parsing fails, you'll receive a direct link to
view the flights on Google Flights.

💡 RECOMMENDATION FOR AI AGENTS: Instead of using this function, consider using the
get_one_way_flights() function multiple times (once for each leg of the journey) and
combining the results. This approach is more reliable and provides detailed flight
information for each segment, which you can then present together as a complete itinerary.

Args:
    flight_segments: JSON string of flight segments. Each segment should have "date", "from", and "to" fields.
                    Example: '[{"date": "2025-07-01", "from": "SFO", "to": "NYC"}, {"date": "2025-07-05", "from": "NYC", "to": "MIA"}, {"date": "2025-07-10", "from": "MIA", "to": "SFO"}]'
    adults: Number of adult passengers (default: 1).
    seat_type: Fare class (e.g., "economy", "business", default: "economy").
    return_cheapest_only: If True, returns only the cheapest option (default: False).

Example Args:
    {"flight_segments": '[{"date": "2025-07-01", "from": "SFO", "to": "NYC"}, {"date": "2025-07-05", "from": "NYC", "to": "MIA"}]'}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
flight_segmentsYes
adultsNo
seat_typeNoeconomy
return_cheapest_onlyNo
max_resultsNo
compact_modeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job explaining key behavioral traits: it warns that 'multi-city flight scraping is not fully supported,' explains what happens when parsing fails (returns a direct link), and describes the reliability issues. It doesn't cover all possible behavioral aspects like rate limits or authentication needs, but for a tool with no annotations, this provides substantial behavioral context.

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 perfectly structured and concise. It starts with the core purpose, immediately provides critical warnings and recommendations, then details parameters with clear examples. Every sentence serves a purpose - there's no fluff or repetition. The use of emojis and clear sectioning makes it easy to parse while maintaining professional clarity.

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?

Given the tool's complexity (6 parameters, no annotations, but has output schema), the description does an excellent job covering the most important aspects. It explains the tool's purpose, when to avoid it, key behavioral limitations, and parameter usage. The presence of an output schema means it doesn't need to explain return values. The main gap is not covering all parameters, but for a complex tool with no annotations, this is quite comprehensive.

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?

With 0% schema description coverage, the description must compensate. It provides detailed explanations for 4 of the 6 parameters (flight_segments, adults, seat_type, return_cheapest_only), including examples and default values. It doesn't cover max_results or compact_mode, but the coverage of the most complex parameter (flight_segments) with a JSON example adds significant value beyond what the bare schema provides.

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 clearly states the tool's purpose: 'Fetches multi-city/multi-stop itineraries for complex trip planning.' It specifies both the action ('fetches') and the resource ('multi-city/multi-stop itineraries'), and the mention of 'complex trip planning' distinguishes it from simpler flight search tools. This is specific and immediately tells the agent what this tool does differently from its siblings.

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 provides explicit guidance on when NOT to use this tool and recommends an alternative approach. It states: 'Instead of using this function, consider using the get_one_way_flights() function multiple times... This approach is more reliable.' This gives the agent clear direction about when to avoid this tool and what to use instead, which is exactly what usage guidelines should provide.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HaroldLeo/google-flights-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server