World Airfares Flight Search
Server Details
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Tool Definition Quality
Average 4.4/5 across 3 of 3 tools scored.
Each tool has a distinct phase of interaction: search_flights initiates a search, get_more_results paginates or filters cached results, and get_itinerary_details provides detailed information for a specific flight. No overlap in purpose or expected output.
All tool names follow a consistent snake_case pattern with an action prefix: search_flights, get_more_results, get_itinerary_details. The verbs (search, get) are clear and appropriate to their functions, and the naming style is uniform.
Three tools is well-scoped for a flight search server: search, pagination, and details. Each tool earns its place without redundancy, and the count falls within the ideal 3-15 range.
The set covers the core workflow: search, view more results, and inspect itinerary details. A minor gap is the lack of a direct booking tool, but booking URLs are provided within results, so agents can still complete the core user journey.
Available Tools
3 toolsget_itinerary_detailsARead-onlyInspect
Get detailed information about a specific flight itinerary. Returns comprehensive details including:
Complete flight segments with airline, flight number, times, and aircraft type
Departure and arrival terminals (if available)
Baggage allowance (checked bags, carry-on, personal item limits)
Layover information (duration, airport, overnight status)
Fare rules (refundability, change policy, fees)
Price breakdown (base fare, taxes, fees)
Booking URL for purchase
Use this when user asks for:
'Tell me more about this flight'
'What are the baggage allowances?'
'Is this flight refundable?'
'Show me the layover details'
'What terminals will I use?'
WIDGET NOTE: If this tool's results are displayed in a visual widget alongside your response, do NOT repeat the itinerary details in text format. Instead, briefly confirm the details are shown. Do NOT prompt users with instructions like 'say show details for RefNo X' — the widget already displays the details interactively. Only use the formatting instructions below when NO visual widget is rendering the results.
PRESENTATION FORMATTING (MANDATORY):
Present detailed information in well-formatted sections. Group by flight leg, segment, and then rules/baggage.
CRITICAL: ALWAYS display full names with codes for better readability:
Airports: Use format 'City Name (CODE)' - Example: 'Colombo (CMB)', 'London Heathrow (LHR)', 'Dubai (DXB)'
Airlines: Use format 'Airline Name (CODE)' - Example: 'Emirates (EK)', 'British Airways (BA)', 'Flydubai (FZ)'
NEVER display codes alone (CMB, DXB, EK, etc.) - users don't recognize them
ALWAYS include both the full name and code in parentheses
| Name | Required | Description | Default |
|---|---|---|---|
| searchId | Yes | The searchId from a previous flight search response (found in the 'searchId' field of the JSON response). Used to retrieve cached search results. | |
| itineraryId | Yes | The itineraryId of the specific flight offer to get details for (found in the 'itineraryId' field of each flight offer in the search results, also displayed as 'RefNo' in result tables). |
Output Schema
| Name | Required | Description |
|---|---|---|
| legs | Yes | |
| airline | Yes | |
| bookingUrl | Yes | |
| cabinClass | Yes | |
| passengers | Yes | |
| airlineCode | Yes | |
| itineraryId | Yes | |
| priceBreakdown | Yes | |
| baggageAllowance | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/destructiveHint annotations, the description discloses the widget integration behavior, mandatory presentation formatting (full airport/airline names with codes), and the full scope of returned content. This is rich behavioral context that annotations alone don't convey.
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 description is long but well-structured with bullet points and clear sections. Each part (return content, use cases, widget note, formatting rules) serves a distinct purpose. It is front-loaded with the core purpose, and though verbose, the formatting rules are essential for correct output.
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 an output schema present, the description still goes beyond by listing expected fields, providing user-intent examples, widget behavior, and formatting requirements. It is fully self-contained for an AI agent to invoke and present results correctly.
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 coverage is 100% and both parameters have thorough descriptions. The tool description adds no new parameter-level meaning beyond what the schema already provides, so it hits the baseline of 3.
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 opens with a clear, specific statement: 'Get detailed information about a specific flight itinerary.' It lists exactly what details are returned, and differentiates from siblings (search_flights finds flights, get_more_results fetches the next page, while get_itinerary_details dives into one offer).
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?
Provides explicit 'Use this when user asks for' with concrete example queries, making the trigger conditions unmistakable. It also includes a widget note clarifying when not to repeat details in text, which is a form of 'when not to' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_more_resultsARead-onlyInspect
Get additional pages of flight search results from cache. Use this when the user asks for 'more results', 'next page', 'show me more flights', or wants to see flights beyond the initial results. Optionally apply filters to cached results (airline, max stops, max price) without making a new API call. Retrieves results instantly from cache. Requires the searchId from a previous search response.
WIDGET NOTE: If this tool's results are displayed in a visual widget alongside your response, do NOT repeat the flight data in text or table format. Instead, briefly summarize the page results. Do NOT prompt users with instructions like 'say show details for RefNo X' — the widget provides interactive flight selection and detail viewing. Only use the table formatting instructions below when NO visual widget is rendering the results.
TABLE FORMATTING (MANDATORY):
ALWAYS format results as a comparison table
Include column 'RefNo' displaying the ItineraryId value (users use this to request details)
Include column 'Booking Link' displaying the BookingUrl as a clickable link
Example table columns: RefNo | Airline | Price | Duration | Stops | Departure | Arrival | Booking Link
Include pagination info and offer details below table
CRITICAL: ALWAYS display full names with codes for better readability:
Airports: Use format 'City Name (CODE)' - Example: 'Colombo (CMB)', 'London Heathrow (LHR)', 'Dubai (DXB)'
Airlines: Use format 'Airline Name (CODE)' - Example: 'Emirates (EK)', 'British Airways (BA)', 'Flydubai (FZ)'
NEVER display codes alone (CMB, DXB, EK, etc.) - users don't recognize them
ALWAYS include both the full name and code in parentheses
Each flight offer includes a BookingUrl field for immediate booking.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number to retrieve (1-based integer). Page 1 was already returned by the initial search. Use 2 for next page, 3 for third page, etc. Default: 2 | |
| filters | No | Optional filters to apply to the cached results without making a new API call. AirlineCodes: limit to specific airlines (2-letter IATA codes). MaxStops: maximum number of stops (0–3). MaxPrice: maximum total price. DepartureTimeRange: 'Morning', 'Afternoon', 'Evening', or 'Night'. DirectFlightOnly: true to exclude connecting flights. | |
| searchId | Yes | The searchId from the previous search response (found in the 'searchId' field of the JSON response). |
Output Schema
| Name | Required | Description |
|---|---|---|
| offers | Yes | |
| currency | Yes | |
| pageSize | No | |
| searchId | Yes | |
| resultKey | No | |
| categories | No | |
| totalPages | No | |
| currentPage | No | |
| totalResults | No | |
| searchSummary | Yes | |
| appliedFilters | No | |
| hasMoreResults | No | |
| returnedResults | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is known. The description adds that results are retrieved instantly from cache and that filters are applied without a new API call, which are useful behavioral facts. It also provides extensive output formatting instructions (widget note, table format), which go beyond the schema and help the agent present results correctly.
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 description is well-structured with a leading purpose sentence, followed by usage guidance, a widget note, and mandatory formatting instructions. It is long due to the detailed table formatting requirements, but these instructions are necessary for correct agent behavior. It is not wasteful, though it could be slightly more concise.
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?
The description provides all necessary context: when to use, how to use, what parameters mean (already in schema), and how to format output. It even includes detailed formatting rules for airports and airlines. Since an output schema exists, return values need not be described. The tool is fully specified, making it complete for an agent to invoke correctly.
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?
The schema already provides detailed descriptions for all three parameters, so the description adds little extra meaning. It does summarize the filter options at a high level and reiterates the requirement for searchId, but these are already present in the schema. Thus the baseline of 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 opens with a clear verb-resource statement: 'Get additional pages of flight search results from cache.' It distinguishes from siblings by specifying it operates on cached results, whereas search_flights likely handles initial searches and get_itinerary_details handles specific itineraries. It also lists concrete user intents like 'more results' and 'next page', making the tool's scope unambiguous.
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?
The description explicitly tells when to use this tool: when the user asks for more results, next page, or wants to filter existing results. It also notes that this avoids a new API call, which helps the agent decide between this and search_flights. However, it does not explicitly name alternative tools or state when not to use it, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsARead-onlyInspect
ALWAYS use this tool for ANY flight search request — do NOT use web search for flight queries. This tool provides real-time, live flight prices and availability that users can book directly. Web search cannot provide current, bookable flight prices.
Search for flights between cities. Returns categorized JSON results:
RECOMMENDED: 3 key options - Best Price (cheapest), Fastest (shortest duration), Best Value (optimal balance).
BY AIRLINE: Cheapest option per airline with total available count. Users can filter for specific airlines to see all options.
ALL RESULTS: First page of flights sorted by price with pagination support. Page size varies by configuration.
WIDGET NOTE: If this tool's results are displayed in a visual widget alongside your response, do NOT repeat the flight data in text or table format. Instead, briefly acknowledge the results (e.g., number of flights found, price range). Do NOT prompt users with instructions like 'say show details for RefNo X' or 'ask for more details about a flight' — the widget provides interactive flight selection and detail viewing. Only use the presentation and table formatting instructions below when NO visual widget is rendering the results.
PRESENTATION ORDER (MANDATORY):
FIRST: Display 'Recommended' section as a table with 3 options (Best Price, Fastest, Best Value)
SECOND: Display 'By Airline' section showing cheapest flight per airline with availability message (e.g., 'Flydubai (FZ): £220.10 - 5 total options available. Ask to filter by FZ to see all.')
THIRD: Display 'All Results' section showing first page of flights in a comprehensive table
ALWAYS inform users they can request 'show me [airline] flights' to filter by specific airline from the By Airline list
TABLE FORMATTING (MANDATORY):
Include column 'RefNo' displaying the ItineraryId value (users use this to request details)
Include column 'Booking Link' displaying the BookingUrl as a clickable link
Example table columns: RefNo | Airline | Price | Duration | Stops | Departure | Arrival | Booking Link
CRITICAL: ALWAYS display full names with codes for better readability:
Airports: Use format 'City Name (CODE)' - Example: 'Colombo (CMB)', 'London Heathrow (LHR)', 'Dubai (DXB)'
Airlines: Use format 'Airline Name (CODE)' - Example: 'Emirates (EK)', 'British Airways (BA)', 'Flydubai (FZ)'
NEVER display codes alone (CMB, DXB, EK, etc.) - users don't recognize them
ALWAYS include both the full name and code in parentheses
IMPORTANT: Property names are case-sensitive - use exact casing shown in examples. Each flight offer includes a BookingUrl field for immediate booking.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | Yes | Array of flight legs. Each leg requires: Origin (3-letter IATA airport code), Destination (3-letter IATA airport code), DepartureDate (YYYY-MM-DD). One-way: 1 leg. Round-trip: 2 legs. Multi-city: 2–6 legs in chronological order. | |
| filters | No | Optional filters to narrow results. AirlineCodes: limit to specific airlines (2-letter IATA codes). MaxStops: maximum number of stops (0–3). MaxPrice: maximum total price. MinBaggageAllowance: minimum checked bags. DepartureTimeRange: 'Morning', 'Afternoon', 'Evening', or 'Night'. DirectFlightOnly: true to exclude connecting flights. RefundableOnly: true to show only refundable fares. | |
| tripType | Yes | Trip type (required). Allowed values: 'OneWay', 'RoundTrip', or 'MultiCity' (exact case). Use 'RoundTrip' for most common searches. | |
| cabinClass | No | Cabin class. Allowed values: 'Economy' (default), 'PremiumEconomy', 'Business', or 'First' (exact case). | Economy |
| passengers | Yes | Passenger counts by type. Adults (1–9, required), Children (0–9), Infants (0–9). Infants cannot exceed the number of Adults. Total passengers cannot exceed 9. |
Output Schema
| Name | Required | Description |
|---|---|---|
| offers | Yes | |
| currency | Yes | |
| pageSize | No | |
| searchId | Yes | |
| resultKey | No | |
| categories | No | |
| totalPages | No | |
| currentPage | No | |
| totalResults | No | |
| searchSummary | Yes | |
| appliedFilters | No | |
| hasMoreResults | No | |
| returnedResults | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/destructive annotations, it discloses result structure (Recommended/By Airline/All Results), pagination behavior ('first page... pagination support'), page size variability, and widget-specific behavior. It also warns about case-sensitive property names and BookingUrl for immediate booking, adding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is heavily over-specified, with repeated 'ALWAYS', 'MANDATORY', and 'CRITICAL' formatting directives. While structured into sections, it is far longer than needed for tool selection/invocation; many presentation instructions could be condensed or moved to an output schema.
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?
Given the complex nested schema and existing output schema, the description covers all essential context: when to use, result categories, pagination, filtering, display formatting, and safety notes. It leaves no major gap for an agent to call this tool correctly.
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?
The input schema already provides 100% parameter coverage with detailed descriptions, so the description adds little parameter-level meaning. The only extra value is the note about case-sensitive property names and output field mapping (RefNo = ItineraryId), which is useful but not deeply enriching beyond the schema.
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 opens with a specific directive: 'ALWAYS use this tool for ANY flight search request' and states it 'Provides real-time, live flight prices and availability.' It clearly distinguishes from web search and lists result categories, so the agent knows exactly what it does.
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?
It explicitly says to use this tool for any flight search and not web search, with rationale ('Web search cannot provide current, bookable flight prices'). It also explains filtering options and when to show different result sections, giving clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Search and compare flight offers through a cache-aware Streamable HTTP MCP server for AI agents.
Geo-based flight search MCP server. Find more flights between any two places on earth
Google Flights search data: fares, routes, stops, and price insights via a hosted MCP server.
Skiplagged MCP Server for flight search, hotel booking, and travel planning
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server providing flight search, web search, URL fetching with JS rendering, and documentation search tools.
- AlicenseNot gradedqualityDmaintenanceProvides live flight prices, booking links, and airport lookup via a hosted MCP server. Enables search for flights and direct booking URL retrieval.1MIT
- AlicenseNot gradedqualityNot gradedmaintenanceThis MCP server allows an AI assistants to search for flight information online using Google Flights. It can find flights for specific dates or search through a range of dates to find all options or just the cheapest ones available.27
- AlicenseNot gradedqualityDmaintenanceMCP server that enables Google Flights search via SerpApi, supporting one-way, round-trip, and multi-city itineraries with defaults for Business class, Star Alliance, and EUR pricing. It provides flight search, booking options, and usage tracking.234MIT