a2bflight fares
Server Details
Cached flight fares on thousands of routes, each with the day it was seen. Not live prices. No key.
- Status
- Healthy
- Uptime
- 100.0% over 24 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
The three tools have distinct and non-overlapping purposes: cheapest_routes provides cheapest fares from an origin or to a destination with filtering options; find_airports resolves names to IATA codes or lists nearby airports; route_fares retrieves all fare data for a specific airport pair. Their descriptions clearly delineate their roles, and while both cheapest_routes and route_fares deal with fares, the origin/destination vs. airport pair distinction is explicit and unambiguous.
The tool names maintain a consistent verb_noun or adjective_noun pattern: cheapest_routes, find_airports, route_fares. All are in snake_case and use nouns that clearly indicate the resource (routes, airports, fares), making them predictable and easy to remember.
The server has 3 tools, which is exactly right for its narrow domain of cached flight fare lookup and airport code resolution. Each tool is essential and covers a distinct aspect without redundancy.
The tool set covers fare lookup, airport code resolution, and detailed route pricing, but it lacks tools for direct booking, price alerts, or retrieving fare history. For a fares-focused server, these omissions are notable, though the core read-only use cases are adequately supported.
Available Tools
3 toolscheapest_routesCheapest routesARead-onlyInspect
The cheapest cached fare on every route we hold from an origin (or into a destination), cheapest one-way first, each with its cheapest round trip of a 3 to 21 day stay in return when we hold one. Filter by a maximum price and a departure month here rather than by reading the list; both apply to the one-way. Prices are one adult, economy, as last seen on the date in checked — observations, not quotes.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | destination IATA airport or city code | |
| from | No | origin IATA airport or city code (NYC covers JFK, LGA and EWR); give from, to or both | |
| limit | No | how many routes to return, 1 to 20; 10 when omitted | |
| month | No | YYYY-MM: the cheapest fare departing in that month; needs from | |
| max_price | No | keep only fares at or under this amount, in the currency the results carry |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| routes | Yes | |
| currency | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious behavior: prices are cached observations 'as last seen on the date in `checked`', not live quotes, and the round-trip component only appears 'when we hold one' — both material to how an agent should present results.
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?
Front-loaded with what is returned before the filtering advice and the pricing caveat. The opening sentence is long and parenthetical-heavy, but every clause carries information and nothing is redundant with the 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?
With an output schema present, the description is not obligated to detail return values, yet it still characterizes the shape of a result (one-way plus optional round trip). Combined with the staleness caveat and filter semantics, an agent has enough to call and interpret the tool; only sibling routing is left implicit.
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%, so the baseline is 3, but the description goes further: it explains that `from` and `to` are interchangeable anchors ('give from, to or both'), that the month/max_price filters apply to the one-way leg only, and that the `return` companion is a 3-to-21-day stay. That clarifies cross-parameter interaction the schema does not express.
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?
States a specific verb and resource: the cheapest cached fare on every route from an origin (or into a destination), with one-way first and a round-trip companion in `return`. The scope is unambiguous and clearly a list-over-routes tool rather than a single-route lookup, though it never names `route_fares` or `find_airports` to sharpen the contrast.
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 gives one useful directive: filter by max price and departure month via the parameters 'rather than by reading the list.' That is guidance about how to invoke, not about when to choose this tool over its siblings, and no prerequisite or exclusion conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_airportsFind airportsARead-onlyInspect
Look up airports and city codes by name, or list the airports near a code or a lat,lon point. Use it to turn a city name into the IATA code the other tools take.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | an IATA code, or lat,lon, to list the airports near it; give this or query | |
| query | No | a city or airport name or the start of one; give this or near |
Output Schema
| Name | Required | Description |
|---|---|---|
| places | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the agent knows this is a safe, closed-domain read. The description adds the dual-mode behavior (name lookup vs near-code/coordinates), which is useful, but says nothing about result volume, ranking, or limits on the proximity list.
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?
Two tight sentences, zero filler. The lookup-vs-list distinction is front-loaded and the downstream-purpose sentence is the key routing information.
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?
An output schema exists, so return-value documentation is unnecessary. Both input modes and the practical purpose are covered, which is everything an agent needs to select and call this tool against its two-parameter, zero-required schema.
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%, so the schema already documents both 'query' and 'near' including their either/or relationship. The description adds only the framing of turning a city name into an IATA code, which clarifies intent but no syntax or format detail 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?
States specific verbs (look up, list) over a specific resource (airports and city codes) and covers both operating modes: name lookup and proximity listing. It also positions the tool relative to its siblings by naming the downstream purpose (producing the IATA code other tools take).
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?
Gives a clear context of use: resolving a city name into the IATA code that the sibling tools consume, plus the two query modes. It stops short of explicitly naming cheapest_routes or route_fares as the consumers or stating when to prefer one mode, so it's clear context without explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_faresRoute faresARead-onlyInspect
Everything we hold for one airport pair: the cheapest one-way, the cheapest round trip of a 3 to 21 day stay, the cheapest one-way by departure date and by month, and the cheapest round trips. If we hold nothing yet, it starts pricing the route and says so; ask again a minute later.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | destination IATA airport code | |
| from | Yes | origin IATA airport code (an airport, not a city code) | |
| month | No | YYYY-MM: keep only departure dates in that month |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| dates | No | the cheapest one-way fares by departure date, cheapest first |
| months | No | the cheapest one-way fare in each month |
| status | Yes | held: fares below; pricing: we just started pricing this route, ask again in a minute; none: we hold no fare for it |
| returns | No | the cheapest round trips held, any stay, cheapest first |
| cheapest | No | the cheapest one-way; absent when we hold no dated one-way |
| currency | No | |
| page_url | Yes | |
| cheapest_return | No | the cheapest round trip of a 3 to 21 day stay; absent when we hold none, and page_url then offers a live return search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds a meaningful trait they don't: the result set can be empty on first call while background pricing kicks off, requiring a retry. That asynchronous, possibly-incomplete behavior is exactly the kind of thing annotations cannot express.
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 is a long run-on enumeration of return categories that partly duplicates the output schema, and the key operational fact (empty cache triggers pricing, retry later) is buried at the end. It is readable but not tightly front-loaded.
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 covering return values and annotations covering the safety profile, the description only needed to add the async empty-result behavior, which it does. Parameter and return documentation are adequately covered elsewhere, so the definition is essentially complete.
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%, so from/to/month are already documented in the schema. The description's fare-type listing describes return content rather than adding syntax or constraints to the parameters, so 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 resource (all fare data held for one airport pair) and enumerates the kinds of fares returned, so the agent knows exactly what it retrieves. It does not, however, differentiate itself from the sibling cheapest_routes, leaving the agent to infer the boundary.
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 line 'If we hold nothing yet, it starts pricing the route and says so; ask again a minute later' gives concrete retry guidance for the empty-cache case, which is genuinely useful. But it never says when to reach for this tool versus cheapest_routes, so alternative selection is left implicit.
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
- Changed
route_fares1 field changed- changed
Output schema / properties / cheapest / descriptionPrevious value: -"the cheapest one-way"New value: +"the cheapest one-way; absent when we hold no dated one-way"
3 tool updates
- First observed
cheapest_routes - First observed
find_airports - First observed
route_fares
Related MCP Connectors
Google Flights search data: fares, routes, stops, and price insights via a hosted MCP server.
Read-only public itinerary previews, observed round-trip fares, and flight savings verified today.
Is this flight price good right now? Verdicts from 90 days of observed fares on 500+ routes.
Google Flights itineraries with fares, legs, carbon emissions and price history, as JSON.
Related MCP Servers
- AlicenseAqualityAmaintenanceFlight price search via the Aviasales / Travelpayouts Data API: 13 read-only tools for fares by route and month, cheapest day, flexible dates, budget search and IATA lookup.1370 PyPI13GPL 3.0
- AlicenseNot gradedqualityBmaintenanceFlight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.3MIT
- AlicenseAqualityCmaintenanceEnables agents to search live public airfares between airports across a date window or flexibility range, returning itineraries with prices, times, layovers, and cheapest/fastest/compromise picks, plus offline airport resolution. It runs locally over stdio with no API key, and reports missing fields honestly rather than inventing bags, fares, or prices.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables real-time one-way and round-trip flight searches from any MCP client without an API key or account, returning live fares, historical price insights, and bookable links supported by disclosed sponsored cards.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.