Skip to main content
Glama

Server Details

True cost of flight extras (bags, seats, fees) on 29 airlines in Europe and North America, sourced.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
jimiwalters-cmyk/airfare-brain-mcp
GitHub Stars
0
Server Listing
Airfare Brain MCP server
ChatGPT
Airfare Brain
Claude
Airfare Brain

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation4/5

airline_fees returns the published fee table for an airline, while true_cost computes a personalized total for a party and trip; the descriptions make this boundary clear. trip_at_airport overlaps with true_cost but is distinguished by adding car hire. The only mild confusion is get_capabilities versus list_airlines, which both serve discovery.

Naming Consistency3/5

The set mixes verb_noun names (get_capabilities, list_airlines) with bare noun phrases (airline_fees, true_cost, trip_at_airport). All names are descriptive and readable, but there is no single predictable pattern.

Tool Count5/5

Five tools is well-scoped for a fee-data server: discovery, per-airline lookup, cost calculation, a bundled trip answer, and capability documentation. No obvious redundancy or padding.

Completeness4/5

The surface covers discovery, raw fee data, personalized cost calculation, and a combined trip-plus-car-hire answer, which is solid lifecycle coverage for a research (non-booking) tool. A cross-airline comparison or route/airport-based fee search is a minor gap that agents could work around via list_airlines plus repeated calls.

Available Tools

5 tools
airline_feesAirline feesA
Read-onlyIdempotent
Inspect

One airline's published extra fees (bags, seats, priority, check-in, changes, payment), each with the price range, when bought (at booking / later / airport), how it is charged, its source URL and the date checked. Optionally filter by category.

NameRequiredDescriptionDefault
airlineYesName or IATA code, e.g. 'Ryanair', 'FR', 'easyJet', 'W6'
categoryNoOnly fees of this kind; omit for every fee the airline publishes
currencyNoCurrency of the answer: EUR (default) or GBP, as the airline publishes it

Output Schema

NameRequiredDescription
feesNo
noteNo
pageNo
errorNo
airlineNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile needs no restating. The description adds genuine value beyond that: each fee carries a price range, purchase timing (at booking / later / airport), charging method, source URL and date checked — provenance detail an agent needs to judge data freshness and trustworthiness.

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?

A single dense sentence that front-loads the resource and then the returned fields, followed by a short filter note. Nearly every clause earns its place; only the trailing filter remark is mildly redundant with the schema.

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?

An output schema exists, so return structure need not be spelled out, and the description still summarizes the key fields anyway. Combined with fully documented parameters and clear annotations, an agent has enough to call it correctly; the missing piece is cross-tool routing against true_cost.

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?

Schema coverage is 100% and both enum parameters are documented in the schema, so baseline is 3. The description's 'Optionally filter by category' merely restates what the category param already says; it adds nothing about currency handling or airline-name vs IATA-code acceptance that the schema doesn't already give.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (one airline's published extra fees) and enumerates the fee families covered (bags, seats, priority, check-in, changes, payment). An agent can tell it retrieves per-airline fee reference data, distinct from siblings like true_cost, but the description never names or contrasts those siblings explicitly.

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

Usage Guidelines3/5

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

The only usage signal is 'Optionally filter by category', which covers filtering but not when to prefer this over true_cost or list_airlines. No preconditions, no exclusions, no alternative routing guidance.

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

get_capabilitiesGet capabilitiesA
Read-onlyIdempotent
Inspect

What Airfare Brain covers: airlines, how fees are researched and dated, what it does NOT do (no live fares, no booking), and what car hire at the destination airport typically costs.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteNo
errorNo
methodNo
airlinesNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds meaningful behavioral context by disclosing the tool's scope, explicit exclusions (no live fares, no booking), and inclusion of typical car hire costs, which helps the agent understand what information will be returned.

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 a single front-loaded sentence that lists the covered domains and the important exclusions without any filler. Every clause contributes directly to scope understanding.

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?

For a zero-parameter informational tool with an output schema and full annotations, the description covers the essential aspects an agent needs: what is covered, what is explicitly not covered, and related cost information. The output schema handles return details, though the description could be slightly stronger by explicitly stating that it returns a structured capabilities summary.

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?

There are zero parameters, so the baseline is 4. The description correctly adds no parameter guidance because none is needed, and it uses the space to explain the tool's informational content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear that this tool describes Airfare Brain's coverage: airlines, fee research, limitations, and destination car hire costs. It effectively distinguishes scope from siblings like airline_fees and trip_at_airport, though it relies on the title for the explicit 'get' verb rather than stating an action in the description itself.

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

Usage Guidelines3/5

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

The description lists what the tool does NOT do (no live fares, no booking) and defines coverage boundaries, implying it should be used as a reference before other tools. However, it does not explicitly say when to call it versus alternatives or that it should be called first, leaving usage to inference.

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

list_airlinesList airlinesA
Read-onlyIdempotent
Inspect

List every airline with a fee table: name, IATA code, the date its fees were checked, and its page.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteNo
errorNo
airlinesNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds the scoping detail that only airlines with a fee table are returned and what fields come back, which is modest but real added 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?

A single front-loaded sentence with no filler; the scoping clause ('with a fee table') leads and the returned fields follow compactly.

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?

For a no-parameter list tool with a full output schema and complete annotation coverage, the description supplies everything needed to invoke it correctly. The only shortfall is the absence of any routing guidance against the sibling tools.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify about inputs, and it does not confuse the reader with phantom arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus resource ('every airline') and it enumerates the returned fields (name, IATA code, date fees checked, page). It is clearly distinguishable in intent from siblings like airline_fees or true_cost, but it never names or contrasts those siblings directly.

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

Usage Guidelines2/5

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

No guidance on when to call this versus airline_fees, true_cost, or get_capabilities. The only implied usage comes from the word 'List', which leaves the agent to infer the routing decision on its own.

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

trip_at_airportTrip at airportA
Read-onlyIdempotent
Inspect

The whole trip into one airport in one answer: the flight's extras on an airline (bags, seats, fees, as true_cost) AND what car hire there really costs (Car Rental Brain's measured median per day, car only, dated). Use for 'flying to Faro with Ryanair, bags and a hire car: what will it cost?'. Car only: deposits, second-driver fees and desk cover are not included; the answer links to the airport's full car-hire report.

NameRequiredDescriptionDefault
fareNoTotal fare for the whole party, if known
seatNoPaid seat choice: none (random seat), standard, or extra (legroom / front)
tripNoone_way (default) or return: return counts each extra on both flights
airlineNoAirline name or IATA code (optional; without it you get car hire only)
airportYesIATA code or name of the airport you fly INTO, e.g. 'FAO', 'Faro', 'Malaga'
infantsNoUnder-2s on a lap (default 0)
car_daysNoDays of car hire (default 7)
currencyNoCurrency of the answer: EUR (default) or GBP, as the airline publishes it
domesticNotrue for a flight within the US: US airlines charge different bag prices there than on international routes
priorityNoPriority boarding
cabin_bagNoA large cabin bag for the overhead locker (the small under-seat bag is free)
hold_bagsNoChecked bags per person (default 1); the 2nd bag often costs more
group_bagsNoChecked bags shared by the whole party, fewer than the people (e.g. 1 bag between 2): priced as that many 1st bags; needs checked_bag_kg
passengersNoPeople aged 2+ (default 1)
checked_bag_kgNoChecked bag(s) per person of this weight allowance, e.g. 20 or 23; omit for none

Output Schema

NameRequiredDescription
noteNo
errorNo
flightNo
airportNo
car_hireNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description correctly spends its words on scope limits instead: car hire is 'car only' and excludes deposits, second-driver fees and desk cover, and the answer links to the full report. That is meaningful disclosure beyond the annotations, though it does not say how the median is dated or sampled.

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 core promise is front-loaded in the first sentence, followed by a use-case example and then the car-only caveat. It is dense and mostly earns its length, though the embedded example quote is longer than needed to convey the intent.

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?

With 15 parameters, an output schema, and rich annotations, the description supplies what structured fields cannot: the composite nature of the answer, the optional-airline branch, and the car-hire exclusions. Only the dating/measurement basis of the car-hire figure is left unstated.

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?

Schema description coverage is 100%, so every parameter including enums and defaults is already documented. The description adds only one semantic point (airline is optional and omitting it yields car hire only); the bag/seat/passenger semantics are left entirely to the schema, so baseline 3 applies.

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 names a specific composite output: airline flight extras (bags, seats, fees as true_cost) plus measured car-hire median per day at a given airport. This is clearly distinguishable from siblings like airline_fees or true_cost, which appear to cover only one half of the calculation.

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?

It gives a concrete triggering example ('flying to Faro with Ryanair, bags and a hire car: what will it cost?') and states the condition that drops the flight half ('without it you get car hire only'). It never names the sibling tools to use instead for flight-only or cost-only questions, so routing guidance is clear but not complete.

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

true_costTrue costA
Read-onlyIdempotent
Inspect

The true cost of a flight on one airline. Pass fare (the total for the whole party, from a flight-search tool or the person) to get fare + extras; without it you get the extras alone. Extras = what the person chooses (cabin bag, checked bag by kg, seat, priority, infants) for their party and trip, as the range the airline publishes. Also lists what costs more if left until the airport, unchosen fees that may apply (admin, card %), and extras the airline does not publish a price for.

NameRequiredDescriptionDefault
fareNoTotal fare already found for the whole party, if known
seatNoextra = legroom / front
tripNoone_way (default) or return: return counts each extra on both flights
airlineYesName or IATA code
infantsNoUnder-2s on a lap
currencyNoCurrency of the answer: EUR (default) or GBP, as the airline publishes it
domesticNotrue for a flight within the US: US airlines charge different bag prices there than on international routes
priorityNoPriority boarding
cabin_bagNoA large cabin bag for the overhead locker
hold_bagsNoChecked bags per person (default 1); the 2nd bag often costs more
group_bagsNoChecked bags shared by the whole party, fewer than the people (e.g. 1 bag between 2): priced as that many 1st bags; needs checked_bag_kg
passengersNoPeople aged 2+ (default 1)
checked_bag_kgNoChecked bag(s) per person of this weight allowance

Output Schema

NameRequiredDescription
noteNo
pageNo
errorNo
linesNo
airlineNo
true_costNo
extras_totalNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly/idempotent/non-destructive and closed-world behavior, and the description is consistent with all of them. It adds real context beyond the annotations: prices come 'as the airline publishes', results are ranges, airport-purchase surcharges and unchosen fees (admin, card %) are surfaced, and unpublished extras are flagged rather than priced. It does not mention limits such as missing airlines or unsupported currencies.

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 mode distinction (fare given vs omitted) is front-loaded in the first two sentences, which is the highest-value information. The trailing sentence about airport surcharges and unpublished fees is dense but slightly run-on, packing four separate output concepts into one clause chain.

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?

For a 13-parameter read-only estimator with an output schema and full annotation coverage, the description supplies the one thing structured fields cannot: how fare-present and fare-absent modes differ and what the extras represent. Nothing critical is missing, though a note on which airlines are covered (presumably list_airlines) would round it out.

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?

Schema description coverage is 100%, so the schema already documents every parameter, including the hold_bags vs group_bags distinction and the domestic bag-pricing note. The description reinforces the party-level framing of `fare` and the 'for their party and trip' scope, but largely restates what the schema already carries, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific computation over a specific resource ('the true cost of a flight on one airline') and immediately decomposes it into fare + extras, so an agent knows exactly what is produced. It does not name or contrast the sibling tools (airline_fees, trip_at_airport), leaving the differentiation to be inferred from names alone.

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?

It gives a clear conditional rule: pass `fare` when you already have a party-level total from a flight-search tool or the person, omit it to get extras alone. That is genuine use-case guidance, but there is no when-not clause and no explicit pointer to airline_fees or trip_at_airport as alternatives.

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. 2 tool updates
    • Changedtrip_at_airport1 field changed
      • addedInput schema / properties / group_bags
        Added value: +{
        +  "description": "Checked bags shared by the whole party, fewer than the people (e.g. 1 bag between 2): priced as that many 1st bags; needs checked_bag_kg",
        +  "maximum": 8,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedtrue_cost1 field changed
      • addedInput schema / properties / group_bags
        Added value: +{
        +  "description": "Checked bags shared by the whole party, fewer than the people (e.g. 1 bag between 2): priced as that many 1st bags; needs checked_bag_kg",
        +  "maximum": 8,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  2. 2 tool updates
    • Changedtrip_at_airport1 field changed
      • addedInput schema / properties / domestic
        Added value: +{
        +  "description": "true for a flight within the US: US airlines charge different bag prices there than on international routes",
        +  "type": "boolean"
        +}
    • Changedtrue_cost1 field changed
      • addedInput schema / properties / domestic
        Added value: +{
        +  "description": "true for a flight within the US: US airlines charge different bag prices there than on international routes",
        +  "type": "boolean"
        +}
  3. 3 tool updates
    • Changedairline_fees2 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Only fees of this kind; omit for every fee the airline publishes"
      • addedInput schema / properties / currency / description
        Added value: +"Currency of the answer: EUR (default) or GBP, as the airline publishes it"
    • Changedtrip_at_airport9 fields changed
      • addedInput schema / properties / cabin_bag / description
        Added value: +"A large cabin bag for the overhead locker (the small under-seat bag is free)"
      • addedInput schema / properties / checked_bag_kg / description
        Added value: +"Checked bag(s) per person of this weight allowance, e.g. 20 or 23; omit for none"
      • addedInput schema / properties / currency / description
        Added value: +"Currency of the answer: EUR (default) or GBP, as the airline publishes it"
      • addedInput schema / properties / hold_bags / description
        Added value: +"Checked bags per person (default 1); the 2nd bag often costs more"
      • addedInput schema / properties / infants / description
        Added value: +"Under-2s on a lap (default 0)"
      • addedInput schema / properties / passengers / description
        Added value: +"People aged 2+ (default 1)"
      • addedInput schema / properties / priority / description
        Added value: +"Priority boarding"
      • addedInput schema / properties / seat / description
        Added value: +"Paid seat choice: none (random seat), standard, or extra (legroom / front)"
      • addedInput schema / properties / trip / description
        Added value: +"one_way (default) or return: return counts each extra on both flights"
    • Changedtrue_cost3 fields changed
      • addedInput schema / properties / currency / description
        Added value: +"Currency of the answer: EUR (default) or GBP, as the airline publishes it"
      • addedInput schema / properties / priority / description
        Added value: +"Priority boarding"
      • addedInput schema / properties / trip / description
        Added value: +"one_way (default) or return: return counts each extra on both flights"
  4. 1 tool update
    • Addedtrip_at_airport
  5. 1 tool update
    • Changedtrue_cost2 fields changed
      • changedInput schema / properties / checked_bag_kg / description
        Previous value: -"One checked bag per person of this weight allowance"New value: +"Checked bag(s) per person of this weight allowance"
      • addedInput schema / properties / hold_bags
        Added value: +{
        +  "description": "Checked bags per person (default 1); the 2nd bag often costs more",
        +  "maximum": 3,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  6. 4 tool updates
    • First observedairline_fees
    • First observedget_capabilities
    • First observedlist_airlines
    • First observedtrue_cost

Publisher details

Operator
Airfare Brain, run by Jimi Walters · Publisher source
Vendor relationship
First-party · Publisher source
Trust center
Not available
Restrictions
None. Free, no sign-up, no API key, no OAuth; read-only. Live fares come from Kiwi.com at search time; booking happens on Kiwi.com.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to report what a car hire will really cost at 120+ airports in Europe, the UK and the US, drawing on measured data for second-driver fees, deposits, debit-card acceptance, desk hours and excess-cover prices. Also builds links to live prices for a person's exact dates and needs, ranked by the total they will actually pay.
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Search flights using Google Flights data via SerpAPI, covering all airlines including low-cost carriers like Ryanair and easyJet.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Flexible multi-leg, multi-airport flight search that finds the cheapest route across an entire itinerary — available as a CLI and as an MCP server for AI agents.
    17 PyPI
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.