Skip to main content
Glama

cwsi.net Fare Classes & Mileage Calculators

Server Details

Airline fare classes, fare comparisons and miles earned, from cwsi.net's charts and calculators.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 27 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 56 tools

Disambiguation4/5

Most tools are clearly bound to a specific airline or program, so an agent that already knows the airline can usually pick the right calculator. However, several Miles & More / PhoenixMiles calculators overlap conceptually, and many US-carrier tools share an almost identical vague description ('estimate what a X ticket earns'), forcing selection by name alone.

Naming Consistency5/5

All tools use snake_case with a verb-first pattern (calculate_*, get_*, compare_*). Suffixes vary by program currency (miles, points, avios, airpoints, lifemiles), but that reflects the domain and remains predictable.

Tool Count2/5

At 56 tools, the surface is far larger than an agent can comfortably navigate in one server. While complex airline-specific rules justify some separation, a large portion of the set could likely be consolidated behind an airline/program parameter, and the volume increases misselection risk.

Completeness3/5

Coverage is broad for fare-class lookup and many mileage programs, but there are notable gaps: several airlines listed in get_fare_classes (e.g. Hawaiian, Ethiopian) lack mileage calculators, and major programs such as Emirates Skywards are absent. compare_fare_classes only covers five US carriers, and get_airport_lounges is largely out of scope for the stated fare/mileage focus.

Available Tools

56 tools
calculate_aegean_airlines_milesAegean Airlines Miles+Bonus CalculatorA
Read-onlyIdempotent
Inspect

Aegean Airlines Miles+Bonus tier miles and award miles for Aegean and Olympic Air flights, from Aegean's own route table: a fixed number per airport pair by fare family (fam) and booking class (cls); within Greece a flat amount, abroad a share of the distance with a minimum. A class the fare family does not list, or a route Aegean does not list, earns nothing and says so. Award miles = tier miles x 100% (Blue), 110% (Silver) or 120% (Gold), rounded; Gold adds 200 award miles from Athens within Greece and 500 from Athens to a Schengen country (needs toCountry; Aegean does not list the Intra-Schengen countries, so this uses the cwsi.net list of the Schengen area countries, without Cyprus). Progress toward Silver and Gold by tier miles in 12 months (tm: the tier miles so far); the rules from 5 November 2026 (Platinum, flight counts) are a note only. Give segs: one entry per one-way flight, in order, with from and to, the IATA codes of its two airports (required; the miles come from the table), and optionally the ISO country codes. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
tmNoTier miles you have in the last 12 months (optional). Used only for the progress toward Silver and Gold.
clsNoBooking class. C = C (Business); D = D (Business); Z = Z (Business); A = A (Business); Y = Y; B = B; M = M; H = H; W = W; L = L; V = V; O = O; G = G; Q = Q; K = K; J = J; S = S; F = F; E = E; U = U; T = T; P = P; I = I (earns nothing); N = N (earns nothing); R = R (earns nothing); X = X (earns nothing). The letter on your ticket. C, D, Z and A are Business; the rest Economy. I, N, R and X are not in Aegean's charts.M
famNoFare family. LI = Economy Light; FX = Economy Flex; FA = Economy Family; CF = Economy ComfortFlex; SV = Economy Saver (Greece, a few routes abroad); CO = Economy Comfort (a few routes); CP = Economy Comfort Plus (a few routes); BB = Business Basic; BU = Business. As shown on your booking. On international routes Saver, Comfort and Comfort Plus are listed only on a few routes from Athens (Kuwait, Dammam, Delhi, Mumbai); within Greece the chart lists Saver at the Flex numbers.LI
segsNoThe flights, one way and in order, one entry per flight (1 to 8): from and to, the IATA codes of its two airports (required: the earn table is keyed by the airport pair); optional fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports.
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Miles+Bonus tier. B = Blue; S = Silver; G = Gold. Silver earns 10% more award miles and Gold 20% more (plus Gold extras from Athens). Tier miles are the same.B
creditToNoCredit the flights to a partner program instead of Aegean Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). Give the flights as creditFlights (one entry per flight with its great-circle miles).
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.1/5.0
Behavior4/5

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

With annotations already declaring readOnlyHint, idempotentHint, destructiveHint false, and openWorldHint false, the description adds substantial behavioral context: the tier-mile formula, award-mile multipliers by status, Gold extras requiring toCountry, the 12-month progress logic, the note-only status of future rules, and the unofficial cwsi.net data source. It also discloses that unlisted classes or routes earn nothing and says so, which is useful transparency for a calculator. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but it quickly becomes a dense, comma-heavy paragraph that is difficult to parse. Much of the detail is relevant for this complex calculator, yet the lack of paragraph breaks or clear grouping makes it less concise than it could be. It is appropriately sized for the domain but structurally weak.

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?

Given the high complexity, the 10-parameter schema, the 100% schema description coverage, and the presence of an output schema, the description provides an unusually complete picture. It covers calculation rules, fare family and booking class semantics, award-mile multipliers, Gold extras, progress tracking, partner-program crediting, and data provenance. An agent has enough context to call the tool correctly without needing return-value explanations that the output schema already supplies.

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?

Schema description coverage is 100%, so the schema already documents each parameter in detail, making 3 the baseline. The description adds meaningful parameter context beyond the schema: it explains that Gold extras need toCountry, that segs entries are one-way flights in order with required from/to IATA codes, that creditTo uses creditFlights with great-circle miles, and that the tool takes no price. These relationships and constraints go beyond raw field descriptions.

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: it calculates Aegean Airlines Miles+Bonus tier miles and award miles for Aegean and Olympic Air flights. It immediately distinguishes the scope from sibling airline calculators by naming the airline programs and the underlying route table, so an agent can identify the correct tool without opening the schema.

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 states the scope of applicability (Aegean/Olympic flights, route-table-based earning, fare family and booking class constraints) and notes that unlisted classes or routes earn nothing. However, it never explicitly says when to choose this tool over the many sibling airline calculators, nor does it name alternatives for non-Aegean flights. The usage is implied by the airline-specific name and scope, but the guidance remains implicit.

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

calculate_aerolineas_argentinas_milesAerolineas Argentinas Aerolineas Plus CalculatorA
Read-onlyIdempotent
Inspect

Aerolineas Argentinas Aerolineas Plus miles for Aerolineas Argentinas flights. Miles = distance x a % set by the first letter of the fare basis (fare) and the zone: Domestic (both airports in Argentina), Regional (Argentina and Bolivia, Brazil, Chile, Paraguay, Peru, Uruguay or Colombia) or International (Argentina and the US, Mexico, the Dominican Republic or Europe), from 0% to 200%, rounded down, no minimum and no elite bonus. A flight that does not touch Argentina, or a letter the zone does not list, is refused with a message. Progress toward Oro (25,000 qualifying miles or 30 segments), Platino (50,000 or 60) and Diamante (70,000 or 80) in 12 months; sm and fl are the miles and segments so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
flNoQualifying segments you have in the last 12 months (optional). Oro, Platino and Diamante can be reached with 30, 60 or 80 qualifying segments.
smNoQualifying miles you have in the last 12 months (optional). Miles earned by fare on Aerolineas Argentinas and SkyTeam flights, without status or promotion extras.
fareNoFirst letter of your fare basis. A = A (Domestic 0%, regional 25%, international 25%); B = B (Domestic 100%, regional 125%, international 125%); C = C (Domestic not listed, regional 150%, international 200%); D = D (Domestic not listed, regional 150%, international 200%); E = E (Domestic 25%, regional 25%, international 25%); G = G (Domestic 0%, regional 0%, international 0%); H = H (Domestic 75%, regional 100%, international 100%); I = I (Domestic not listed, regional 150%, international 200%); J = J (Domestic not listed, regional 150%, international 200%); K = K (Domestic 75%, regional 100%, international 100%); L = L (Domestic 75%, regional 100%, international 100%); M = M (Domestic 100%, regional 125%, international 125%); N = N (Domestic 25%, regional 25%, international 25%); Q = Q (Domestic 25%, regional 100%, international 100%); R = R (Domestic 0%, regional 25%, international 25%); S = S (Domestic 150%, regional 150%, international 150%); T = T (Domestic 25%, regional 25%, international 25%); U = U (Domestic 75%, regional 100%, international 100%); V = V (Domestic 25%, regional 25%, international 25%); W = W (Domestic 150%, regional 150%, international 150%); Y = Y (Domestic 100%, regional 125%, international 125%). Find the fare basis on your electronic ticket receipt: its first letter sets the percentage. Aerolineas does not map letters to cabins.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Aerolineas Plus status. CL = Clasico; OR = Oro; PL = Platino; DI = Diamante. Used to show your next tier. Oro, Platino and Diamante members may earn extra miles, but no percentage is published, so none is added.CL
creditToNoCredit the flights to a partner program instead of Aerolineas Argentinas's own: flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantive behavior: rounding down, no minimum, no elite bonus, refusal-with-message for non-Argentina flights or unlisted letters, tier thresholds, and provenance ('cwsi.net's calculator', 'Unofficial'). That is well beyond what the annotations convey.

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?

Front-loads the core formula before branching into zones, refusal rules, tiers and input format. It is dense and somewhat run-on (mixing earning rule, status progression and provenance in one paragraph), but every sentence carries information relevant to correct invocation.

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 an output schema, 100% schema coverage and full annotations, the description only needs to carry the domain model, which it does (earning rule, zones, rounding, tier progression, refusal behavior). It omits mention of the Flying Blue creditTo/creditClass/creditStatus path, though the schema documents those fully.

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?

Schema coverage is 100%, so 3 is the floor, but the description supplies the zone definitions (Domestic = both airports in Argentina; the specific Regional and International country lists) that are not in the schema and are required to pick the correct fare percentage. It also clarifies segs ordering and that no price is taken, adding real meaning on top of the schema.

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?

States a specific verb+resource ('Aerolineas Argentinas Aerolineas Plus miles for Aerolineas Argentinas flights') and immediately gives the earning rule (distance x a fare-letter/zone percentage). The airline is named explicitly, so it is trivially distinguishable from the dozens of sibling airline calculators.

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?

Gives clear context on when the tool applies (flights touching Argentina, listed fare letters, no price) and routes the agent to the companion tool by saying the segs miles come from 'calculate_flight_distance'. It also notes the refusal condition for out-of-scope flights, but does not explicitly contrast itself against other calculator siblings.

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

calculate_aeromexico_pointsAeromexico Rewards Points CalculatorA
Read-onlyIdempotent
Inspect

Aeromexico Rewards points and qualifying points for a flight operated by Aeromexico. Points = 8 per US dollar of base fare (the ticket total minus taxes and fees, whole ticket), rounded down; qualifying points are the same, except Basic Economy (class V, fam BS), which earns points but no qualifying points. The level does not change the earning (the "additional accrual" Aeromexico lists by level prints no unit, so it is not added). Progress toward Silver (25,000), Gold (50,000), Platinum (80,000) and Titanium (100,000) qualifying points in a calendar year; qp is the qualifying points so far. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qpNoQualifying points you have so far this year (optional). Used only for the progress toward the next level.
famNoFare family. BS = Basic Economy (class V); CL = Clasica (R N E T Q L H K U M B Y); AP = AM Plus (class W); PR = Premier or Premier One (I D C J). The fare family on your ticket. All of them earn 8 points per dollar; only Basic Economy (class V) earns no qualifying points.CL
priceNoBase fare in US dollars (whole ticket) in US dollars. The ticket total minus taxes and fees, for the whole ticket. If you paid in pesos, enter the equivalent in US dollars. Required unless creditTo is given.
statusNoYour Aeromexico Rewards level. CL = Classic; SV = Silver; GD = Gold; PL = Platinum; TI = Titanium. Used only for the progress toward the next level. The earning is the same at every level.CL
creditToNoCredit the flights to a partner program instead of Aeromexico's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/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 safety bar is low. The description adds meaningful behavioral context beyond them: it discloses that the tool is unofficial, that it uses cwsi.net's calculator and published rules, and flags a nontrivial judgment call (the per-level 'additional accrual' is deliberately not added). No return-format detail is needed because an output schema exists.

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?

Front-loads the core purpose and earning formula before edge cases, and every sentence (rounding, Basic Economy exception, additional-accrual decision, progress thresholds) carries real information. It is dense as a single block and could be split, but there is no filler.

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?

Complete for a computation tool with a rich 8-param schema and an output schema: it explains the earning formula, the qualifying-points distinction, the escalation thresholds, currency handling, and the partner-crediting alternative, so an agent has everything needed to call it correctly. Return values are covered by the output schema, so omitting them is appropriate.

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?

Schema description coverage is 100%, so the baseline is 3, but the description adds tie-in semantics: it clarifies that price drives the 8-per-dollar formula, that fam only matters via the Basic Economy exception, and that status/qp affect only progress, not earning. This meaningfully reinforces the parameter roles on top of an already complete schema.

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?

States a specific verb+resource: calculates Aeromexico Rewards points and qualifying points for an Aeromexico-operated flight, with the exact earning rule (8 points per USD of base fare, rounded down). The airline name distinguishes it from the ~50 sibling calculators, and it names the one alternate path (creditTo partner programs).

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?

Gives clear operating context: level does not change earning, status/qp are used only for progress, Basic Economy earns points but no qualifying points, and price is required unless creditTo is given. It points to calculate_flight_distance as the source of the miles it needs. It does not explicitly state when to prefer this tool over a sibling airline calculator, but the airline scoping makes that self-evident.

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

calculate_air_canada_pointsAir Canada Aeroplan Points and SQC CalculatorA
Read-onlyIdempotent
Inspect

Estimate the Aeroplan points and Status Qualifying Credits (SQC) an Air Canada-ticketed (014) fare earns. Points = fare in CAD x status multiplier (Member 1 to Super Elite 6); SQC = fare x 2 (Standard), x 4 (Flex, Comfort, Latitude, Premium Economy, Business), 0 (Basic). Uses cwsi.net's calculator and the airline's published rules. Give the price in CAD, not US dollars. Unofficial.

NameRequiredDescriptionDefault
sqcNoSQC you have so far this year (optional). Used only for the progress toward the next status.
fareNoFare brand. BA = Basic (no SQC); ST = Standard (2 SQC per C$1); FL = Flex (4 SQC per C$1); CO = Comfort (4 SQC per C$1); LA = Latitude (4 SQC per C$1); PE = Premium Economy (4 SQC per C$1); BU = Business (4 SQC per C$1). Basic earns points but no SQC. Standard earns 2 SQC per C$1; Flex, Comfort, Latitude, Premium Economy and Business earn 4.ST
priceNoFare paid for the whole ticket (CAD) in CAD. Base fare plus carrier-imposed surcharges, in Canadian dollars, without government taxes and airport fees. If you paid in another currency, Air Canada converts it to CAD at an industry-standard rate. Required unless creditTo is given.
statusNoYour Aeroplan status when you fly. M = Member (1x points); 25K = 25K (2x points); 35K = 35K (3x points); 50K = 50K (4x points); 75K = 75K (5x points); SE = Super Elite (6x points). Your status multiplies the points (not the SQC).M
creditToNoCredit the flights to a partner program instead of Air Canada's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent, closed-world read, so the bar is lower; the description still adds real substance by disclosing that the result is an unofficial estimate derived from cwsi.net's calculator plus published rules, and by laying out the exact points and SQC formulas. That is meaningful context beyond the annotation block.

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?

Front-loads the purpose and formulas, then handles both modes compactly in a few sentences with no repetition. The trailing one-word 'Unofficial.' is slightly abrupt but carries a real caveat.

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 an 8-parameter tool with two distinct modes and an output schema (which relieves it of explaining return values), the description covers the modes, the required inputs, and the calculation basis adequately. Minor gaps remain around what exactly the estimate returns for the creditTo path, but nothing blocking.

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 fare brands, status multipliers, and the creditTo pathway in detail, making 3 the baseline. The description reinforces the CAD-only requirement and the price-vs-creditTo exclusivity but adds little the schema does not already state.

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?

States a specific verb and resource ('Estimate the Aeroplan points and SQC'), names the exact scope (Air Canada-ticketed 014 fare), and covers both the own-program and partner-credit modes. An agent can distinguish it from the ~50 sibling airline calculators by the carrier named in the title and first sentence.

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?

Gives usable routing conditions: use it for Air Canada-ticketed fares, supply the price in CAD, and 'leave creditTo out for the airline's own program' versus giving creditClass/creditFlights to credit to a partner. It stops short of naming the sibling to use instead (e.g. calculate_united_miles) when crediting elsewhere, so it is 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.

calculate_air_china_milesAir China PhoenixMiles CalculatorA
Read-onlyIdempotent
Inspect

Air China PhoenixMiles mileage (in kilometres) and qualifying segments for Air China flights. Mileage = distance in km (the great-circle miles x 1.609344; Air China uses the IATA distance) x booking-class %, at least 1,000 km in First, 800 in Business and 500 in Premium Economy and Economy; where Air China prints two rates, the first is a flight within Mainland China (both airports CN) and the second an international or regional flight (Hong Kong, Macao and Taiwan count as regional). Classes O, I, X and N earn nothing. The 25/30/50% elite bonus is a note only. Qualifying kilometres for the flight are not calculated (Air China does not say they equal the mileage earned), so the flight is not added to the progress. Cards need Silver 40,000, Gold 80,000 or Platinum 160,000 qualifying km, or 25 / 40 / 90 qualifying segments, in 12 months; qk and qs are the member's own totals so far, used only for the progress. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qkNoQualifying kilometres you have in the last 12 months (optional). Used only for the progress toward the next card; the flight is not added.
qsNoQualifying segments you have in the last 12 months (optional). Segments can be fractions, for example 1.1 in Y. Used only for the progress toward the next card; the flight is not added.
clsNoBooking class. F = F (First 300%); A = A (First 200% / 250%); J = J (Business 300% / 250%); C = C (Business 200%); D = D (Business 150%); Z = Z (Business 125%); R = R (Business 110% / 125%); G = G (Premium Economy 110%); E = E (Premium Economy 90%); Y = Y (Economy 110%); B = B (Economy 100% / 110%); M = M (Economy 100%); U = U (Economy 100% / 75%); H = H (Economy 75%); Q = Q (Economy 75%); V = V (Economy 75%); W = W (Economy 50%); S = S (Economy 50%); T = T (Economy 50%); L = L (Economy 25%); K = K (Economy 25%); P = P (Economy 25%); O = O (earns nothing); I = I (earns nothing); X = X (earns nothing); N = N (earns nothing). The letter on your Air China ticket. A class with two percentages pays the first on flights within Mainland China and the second on international and regional flights.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour PhoenixMiles card. NO = Not an elite member; SI = Silver (+25%); GO = Gold (+30%); PL = Platinum (+50%). Elite members earn extra mileage on Air China group flights. It is shown as a note, not added, because Air China does not say what it is a percentage of.NO
creditToNoCredit the flights to a partner program instead of Air China's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare this is a safe, idempotent, non-open-world read. The description goes well beyond that: it discloses the tool is "Unofficial," uses cwsi.net's calculator plus published rules, takes no price, shows the elite bonus as a note only, and does not add the flight to progress. These are substantive behavioral disclosures.

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?

It is front-loaded with purpose and then flows into rules and usage, with each sentence carrying calculation or input meaning. It is dense and a single unstructured block that repeats some schema content (e.g., O/I/X/N earn nothing), which keeps it from a 5.

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 10-parameter calculator with an output schema and safety annotations, the description supplies the missing methodology, edge cases (zero-earning classes, dual rates), and progress semantics. Nothing an agent needs to invoke it correctly is absent.

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?

Schema description coverage is 100%, so the baseline is 3; however the description adds computation semantics the schema lacks, such as the mileage formula (km = IATA distance x 1.609344 x class %), minimums per cabin, dual-rate mainland/regional rule, and the dynamic relationship between cls, creditClass, segs and creditFlights.

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 first sentence states a specific verb and resource: PhoenixMiles mileage (in km) and qualifying segments for Air China flights. It is unambiguously distinguishable from its many sibling airline calculators by naming the Air China program and noting it is unofficial.

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 concrete input guidance ("Give segs: one entry per one-way flight, in order") and points to the sibling calculate_flight_distance for the miles value, which is a genuine routing hint. It lacks explicit when-not-to-use or a direct contrast against the other airline calculators, but context is clear.

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

calculate_air_europa_milesAir Europa Suma Miles CalculatorA
Read-onlyIdempotent
Inspect

Air Europa Suma Miles for an Air Europa ticket, from the fare in euros (EUR: fare plus fuel surcharge, no taxes or fees, whole ticket): 5 Miles per EUR 1, plus 1 on flights to and from America (route AM) and 3 in Business (cabin J), plus a level bonus of 50% (Silver), 75% (Gold) or 100% (Platinum) of the base 5, rounded up. Premium Economy earns the Economy rate. Level Miles per flight are not published, so they are not calculated; Silver, Gold and Platinum need 18,000, 32,000 or 60,000 Level Miles, or 14, 26 or 50 flights, in 12 months (at least 4 on Air Europa). Uses cwsi.net's calculator and the airline's published rules. Give the price in EUR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
cabinNoCabin. Y = Economy (Lite, Standard, Flex); W = Premium Economy (Standard, Flex); J = Business (+3 per €1). Business adds 3 Miles per €1. Premium Economy earns at the Economy rate.Y
priceNoFare paid (EUR, whole ticket) in EUR. In euros: the fare plus the fuel surcharge for the whole ticket, without taxes and fees. For another currency, enter the equivalent in euros. Required unless creditTo is given.
routeNoWhere the flight goes. EU = Spain and Europe (5 per €1); AM = America (6 per €1). Air Europa gives one rate for Spain and Europe and a higher one for America flights.EU
statusNoYour Suma level when you fly. BS = Suma (no bonus); SV = Silver (+50%); GD = Gold (+75%); PT = Platinum (+100%). The level bonus is a percentage of the base 5 Miles per €1.BS
creditToNoCredit the flights to a partner program instead of Air Europa's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.9/5.0
Behavior5/5

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

Annotations already confirm a safe read-only, idempotent, non-destructive operation. The description adds substantial behavioral context: the exact calculation rules, rounding, that Level Miles are not published and therefore not calculated, the data source (cwsi.net), the unofficial status, and a currency warning. This goes well beyond what structured fields provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is long and dense, and the inclusion of Level Miles thresholds (18,000/32,000/60,000 or 14/26/50 flights) is tangential to calculating redeemable miles. Information is front-loaded, but the description carries unnecessary detail that dilutes focus.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with two distinct operating modes (own program vs partner crediting), the main description only covers the Air Europa Suma Miles mode and entirely omits the creditTo, creditClass, creditStatus, and creditFlights functionality. Although the schema documents those parameters, the description leaves an agent unaware of the tool's full capability.

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 all eight parameters thoroughly. The description restates some rules (5 Miles per EUR, route/cabin bonuses, level bonuses) but adds no per-parameter meaning beyond the schema, particularly for the four creditTo-related parameters it ignores entirely.

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?

States the specific airline (Air Europa) and program (Suma Miles), clearly distinguishing it from the many sibling airline mileage calculators. An agent can tell immediately what this tool computes.

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 airline name implies the tool is for Air Europa tickets, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives among the sibling calculators. The description also fails to note when to use the partner credit mode versus the default mode.

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

calculate_air_india_pointsAir India Maharaja Club CalculatorA
Read-onlyIdempotent
Inspect

Air India Maharaja Club Maharaja Points and Tier Points for an Air India or Air India Express (carrier IX) ticket, from the fare in Indian rupees (INR): Air India counts the base fare plus the fuel surcharge (YQ), Air India Express the base fare only, without taxes and fees. Maharaja Points = fare / 100 x 6 (Red), 8 (Silver), 9 (Gold) or 10 (Platinum), rounded down, plus 2 per INR 100 when booked directly on the Air India website or app (direct YES, Air India only); Tier Points = 6 per INR 100 at every tier. Air India converts a fare in another currency itself and does not publish the rate, so give the INR amount. Progress toward Silver (15,000), Gold (30,000) and Platinum (45,000) Tier Points in 365 days; tp is the Tier Points so far. Uses cwsi.net's calculator and the airline's published rules. Give the price in INR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
tpNoTier Points you have so far (optional). Tier Points from the last 365 days. Used only for the progress toward the next tier.
priceNoFare paid (INR, whole ticket) in INR. In Indian rupees: the base fare plus the fuel surcharge (YQ) for Air India, or the base fare alone for Air India Express, without taxes and fees. Air India converts a fare paid in another currency itself. Required unless creditTo is given.
directNoBooked directly on the Air India website or app?. NO = No (travel agent or other); YES = Yes (+2 per INR 100). Direct bookings earn 2 bonus Maharaja Points per INR 100 on Air India flights. The bonus does not add Tier Points. Only applies to some choices of the other fields; ignored otherwise.NO
statusNoYour Maharaja Club tier when you fly. RD = Red (6 per INR 100); SV = Silver (8 per INR 100); GD = Gold (9 per INR 100); PT = Platinum (10 per INR 100).RD
carrierNoAirline. AI = Air India (base fare plus YQ); IX = Air India Express (base fare only). Air India counts the base fare plus the fuel surcharge (YQ). Air India Express counts the base fare only.AI
creditToNoCredit the flights to a partner program instead of Air India's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in carrier (AI: united, aeroplan; IX: none). Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly/idempotent/non-destructive), yet the description adds substantial operational context: rounding down, the unstated FX conversion behavior, the direct-booking bonus that adds Maharaja Points but not Tier Points, tier thresholds (15,000/30,000/45,000 over 365 days), and the 'unofficial, uses cwsi.net' provenance caveat.

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 formula and the INR instruction are front-loaded, and every clause carries rule content rather than filler. It is a dense single paragraph, however, and the 'give the INR amount, not US dollars' instruction is effectively repeated at the end, which is mild redundancy.

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 9-parameter calculator with an output schema (so return values need not be explained), the description covers the carrier/tier/direct math, the creditTo partner branch, and the currency constraint, plus provenance. Nothing needed to call it correctly is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond field definitions by explaining how parameters interact: fare/100 x tier multiplier, +2 per INR 100 only when direct=YES on Air India, carrier AI counting base fare plus YQ versus IX counting base fare only. This formula-level context is not restated from the schema.

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?

Names the specific output (Maharaja Points and Tier Points) for a specific carrier set (Air India / Air India Express carrier IX), with the exact input basis (fare in INR). Against ~50 sibling calculators that differ only by airline, the carrier-specific scope makes it unmistakable which one to pick.

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?

Gives concrete routing rules: give the price in INR rather than USD because Air India converts foreign currency itself, and 'leave creditTo out for the airline's own program' while describing the partner-program path. It also points to calculate_flight_distance as the source of creditFlights miles. It stops short of naming an explicit alternative tool for partner crediting, so not a full 5.

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

calculate_air_new_zealand_airpointsAir New Zealand Airpoints and Status Points CalculatorA
Read-onlyIdempotent
Inspect

Air New Zealand Koru Airpoints and Status Points for Air New Zealand flights: a fixed number per flight from Air New Zealand's own earn tables, by the directed airport pair (route group), booking class (cls) and, for Economy on domestic, Tasman and Pacific Islands flights, the fare (Seat, Seat+Bag, Flexi Change, Flexi Refund, The Works, Works Flexi). Airpoints can be decimals (for example 10.8). Classes N, I, R and X earn nothing; F earns Status Points only; a pair Air New Zealand does not list is not counted. Partner-airline flights are not calculated. The tier does not change the earning. Progress toward Silver (450), Gold (900), Platinum (1,500) and Black (3,200) Status Points in 12 months; sp is the Status Points so far. Give segs: one entry per one-way flight, in order, with from and to, the IATA codes of its two airports (required; distance and countries do not matter). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
spNoStatus Points you have in the last 12 months (optional). Used only for the progress toward Silver, Gold, Platinum and Black.
clsNoBooking class. C = C (Business); D = D (Business); Z = Z (Business); J = J (Business); U = U (Premium); E = E (Premium); O = O (Premium); A = A (Premium); Y = Y; B = B; M = M; H = H; Q = Q; V = V; W = W; T = T; L = L; S = S; G = G; K = K; P = P; F = F; X = X (earns nothing); N = N (earns nothing); I = I (earns nothing); R = R (earns nothing). The letter on your ticket. J, Z, D and C are Business Premier; A, O, E and U Premium Economy; the rest Economy.M
fareNoEconomy fare. S = Seat; SB = Seat+Bag; FC = Flexi Change; FR = Flexi Refund; WK = The Works or Works Flexi. Domestic flights: Seat, Seat+Bag, Flexi Change or Flexi Refund. Flights to Australia and the Pacific Islands: Seat, Seat+Bag, The Works or Works Flexi. Long-haul Economy earns the same on every fare. Only applies to some choices of the other fields; ignored otherwise.S
segsNoThe flights, one way and in order, one entry per flight (1 to 8): from and to, the IATA codes of its two airports (required: the earn table is keyed by the airport pair); optional fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports.
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Koru tier. B = Bronze; S = Silver; G = Gold; P = Platinum; BK = Black. Your tier does not change what a flight earns; it is used for the progress below.B
creditToNoCredit the flights to a partner program instead of Air New Zealand's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). Give the flights as creditFlights (one entry per flight with its great-circle miles).
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/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 bar is low, and the description adds substantial domain behavior: zero-earn classes, F earning only Status Points, decimals, unlisted pairs being skipped, tier irrelevance, and the 'uses cwsi.net, unofficial' caveat. It does not cover error behavior or output interpretation, but for a read-only calculator this is well beyond the structured fields.

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 earn logic, exclusions and segs format are front-loaded and information-dense. It is a single semicolon-chained paragraph of roughly 180 words with some repetition of the fare list and airline name, so a couple of sentences could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter tool with two distinct modes, the description covers only the airline's own program and never mentions creditTo/creditClass/creditStatus/creditFlights or that an alternative crediting path exists. Output schema and schema descriptions compensate for return values and per-param detail, but the mode split is a real omission.

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?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it expands the fare enum names (Seat, Seat+Bag, Flexi Change, Flexi Refund, The Works), explains 'sp' as Status Points so far, describes segs as one entry per one-way flight with required from/to, and notes distance/countries don't matter. It goes beyond the enum labels rather than restating them.

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?

States a specific verb and resource ('Air New Zealand Koru Airpoints and Status Points for Air New Zealand flights') and immediately scopes it: fixed earn per flight from ANZ's own tables, keyed by airport pair, booking class and fare. It also explicitly distinguishes itself from the ~50 sibling calculators by declaring partner-airline flights and unlisted pairs are not counted.

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?

Gives domain conditions (N/I/R/X earn nothing, F earns Status Points only, tier does not change earning) and notes partner-airline flights are not calculated. But there is no routing to alternatives — e.g. calculate_flight_distance is only named in the schema, not the description — and the entire creditTo/partner-crediting mode, which is a major alternative path this tool supports, is never mentioned in the description.

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

calculate_alaska_milesAlaska Atmos Rewards CalculatorB
Read-onlyIdempotent
Inspect

Estimate what a Alaska Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with an Atmos Rewards card. none = No; AS = Ascent (+3 per $1); SU = Summit (+3 per $1); BU = Business (+3 per $1).none
fareNoFare. 200 = First, full fare (J); 175 = First (C); 150a = First, discount (D, I); 150b = Main, full fare (Y, B); 125 = Main (H, K); 100 = Main, discount (M, L, V, S, N, Q, O, G); 0 = Saver (X). Only applies to some choices of the other fields; ignored otherwise.100
kindNoFare type. paid = Paid fare (Main, Premium, First); basic = Basic or Saver (earns 0). Only applies to some choices of the other fields; ignored otherwise.paid
segsNoSegments. Each flight (segment) earns 500 points. Only applies to some choices of the other fields; ignored otherwise.
whenNoWhen do you fly?. 2026 = Through Dec 31, 2026; 2027 = From Jan 1, 2027. Members choose a method from Oct 1, 2026; it applies to flights from Jan 1, 2027.2026
milesNoMiles flown. The flight distance in miles. Only applies to some choices of the other fields; ignored otherwise.
priceNoPrice paid (before taxes and fees) in US dollars. Needed for your card, or for the price method from 2027. Required unless creditTo is given.
legacyNoSaver booked early or flown soon. 1 = Yes (30%); 0 = No (earns 0). Saver earns 30% when booked before Jun 11, 2026, or flown through Jul 31, 2026. Otherwise it earns 0. Only applies to some choices of the other fields; ignored otherwise.0
methodNoYour earning method. dist = Distance (1 per mile); price = Price paid (5 per $1); seg = Segments (500 per segment). Only applies to some choices of the other fields; ignored otherwise.dist
statusNoYour Atmos status. none = Member (No status); SV = Silver (+25%); GD = Gold (+50%); PT = Platinum (+100%); TT = Titanium (+150%).none
creditToNoCredit the flights to a partner program instead of Alaska Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description usefully adds that it is an 'Estimate', that it is 'Unofficial', and that results are derived from cwsi.net's calculator plus the airline's published rules — signalling approximation and possible staleness, which the annotations do not convey.

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?

Two compact sentences, front-loaded with the primary estimate action and closing with the sourcing/provenance caveat. No padding or redundancy, though it is arguably too terse for a 14-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 values need not be explained. However, for a tool with 14 interacting parameters and a major 2026/2027 earning-method regime change, the description gives no orientation to those complexities, leaving the agent fully dependent on the schema to understand the two distinct calculation regimes.

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% and each of the 14 parameters carries a detailed description (enum semantics, defaults, applicability notes), so the schema does the heavy lifting. The description adds no parameter-level meaning beyond that, making the baseline of 3 appropriate.

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 verb ('Estimate') and resource ('what an Alaska Airlines ticket earns — miles or points, and status credit'), which is immediately distinguishable from the per-airline siblings by the named carrier. It stops short of explicitly contrasting itself with adjacent tools like calculate_flight_distance or the partner calculators, but the core purpose 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 Guidelines2/5

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

There is no when-to-use or when-not guidance, no prerequisites, and no mention of alternatives. This matters because the schema exposes a creditTo path that overlaps with sibling tools (calculate_american_miles, calculate_british_airways_avios), and the description never tells the agent when to prefer one over the other.

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

calculate_allegiant_pointsAllways Rewards CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Allegiant Air ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with the Allways Rewards Visa. none = No; AV = Yes (3 card points per $1).none
priceYesQualified spend on the itinerary (without taxes and fees) in US dollars. What you paid Allegiant for the flight package, less taxes, fees, vouchers and promo codes.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive behavior, so the safety profile is covered. The description still adds real value beyond them: it discloses the estimation methodology (cwsi.net's calculator plus the airline's published rules) and an 'Unofficial' disclaimer the agent would otherwise not know.

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 whose parenthetical adds scope rather than padding, capped by a two-word disclaimer. No sentence is wasted.

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 an output schema present, return values need no explanation, and all parameters plus the safety profile are covered by structured fields. The only missing piece is any hint about input units beyond the schema or what 'status credit where it applies' means in practice, which is minor.

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% — both 'price' (qualified spend ex-taxes/fees) and 'card' (the AV enum worth 3 points per $1) are fully documented in the schema. The description adds no parameter-level detail beyond that, so the 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?

States a specific verb (Estimate) plus the exact resource (an Allegiant Air ticket's earnings), and even names the reward currencies involved (miles/points, status credit). This distinguishes it cleanly from the dozens of sibling airline calculators, which differ only by carrier.

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?

Usage is only implied by the airline name — an agent can infer it applies to Allegiant earnings, but the description gives no explicit when-to-use guidance and never mentions relevant siblings such as calculate_flight_distance or compare_fare_classes. Adequate but with a clear routing gap.

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

calculate_american_milesAmerican AAdvantage CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a American Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with an AAdvantage card. none = No; MU = MileUp (+2 per $1); PS = Platinum Select (+2 per $1); GB = Globe (+3 per $1); EX = Executive (+4 per $1).none
fareNoFare type. 1 = Standard (Main Cabin and above); 0 = Basic Economy.1
priceNoTicket price in US dollars. Base fare plus carrier-imposed fees, without government taxes. Required unless creditTo is given.
statusNoYour AAdvantage status. none = None; GL = Gold (+40%); PL = Platinum (+60%); PP = Platinum Pro (+80%); EP = Executive Platinum (+120%).none
creditToNoCredit the flights to a partner program instead of American Airlines's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds two genuinely useful facts beyond that: results are estimates, not exact, and they come from cwsi.net's calculator plus published airline rules ("Unofficial"). It says nothing about determinism or edge cases, so this is solid but not rich.

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 sentence with no filler, front-loading the purpose and appending the important "Unofficial" caveat. Minor awkwardness in phrasing ("what a American Airlines ticket earns") but nothing wasteful.

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 an output schema present, return values need no explanation, and 100% parameter coverage plus read-only annotations mean the structured fields cover most needs. The remaining gap is cross-tool routing (creditTo to Alaska vs. calculate_alaska_miles, and the dependency on calculate_flight_distance for creditFlights.miles, which is only mentioned in the schema).

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% and the enum values, card multipliers, status bonuses and creditTo mechanics are all documented inline. The description adds no parameter-level meaning; it only hints that outputs may be miles, points or status credit. Baseline 3 is appropriate when the schema carries the burden.

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 verb and resource: "Estimate what a American Airlines ticket earns (miles or points, and status credit where it applies)". An agent can tell this is the AAdvantage earning calculator. It does not distinguish itself from siblings, though the airline-specific name plus the ~50 parallel calculators makes that differentiation largely self-evident.

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?

Scope is implied — it covers American Airlines tickets and status credit "where it applies" — but there is no explicit when-to-use/when-not statement. Notably, the tool supports crediting to Alaska (creditTo) which overlaps with the sibling calculate_alaska_miles, and the description never routes the agent between the two; that guidance lives only in the schema.

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

calculate_ana_milesANA Mileage Club Miles and Premium Points CalculatorA
Read-onlyIdempotent
Inspect

Estimate the ANA Mileage Club miles and Premium Points for flights operated by the ANA Group. Miles = distance x booking-class rate (F/A/J 150%, C/D/Z 125%, G/E/Y/B/M 100%, P/N/U/H/Q 70%, V/W/S/T 50%, L/K 30%, O/I/R/X 0). Premium Points = distance x the same rate x route ratio (Japan domestic x2; Japan to Asia, Oceania or Vladivostok x1.5; else x1) + 400 boarding points in F A J C D Z P G E N Y B M (none on Japan domestic legs). Give segs: one entry per one-way flight with its great-circle miles (calculate_flight_distance gives them), the ISO country codes of its two airports, and from/to IATA airport codes (set from or to to VVO for Vladivostok, which shares RU with the rest of Russia). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
ppNoPremium Points you have this year (optional). Used only for the progress toward the next tier.
clsNoBooking class. FA = F, A (First 150%); J = J (Business 150%); CDZ = C, D, Z (Business 125%); P = P (Business 70%); GE = G, E (Premium Economy 100%); N = N (Premium Economy 70%); YBM = Y, B, M (Economy 100%); UHQ = U, H, Q (Economy 70%); VWST = V, W, S, T (Economy 50%); LK = L, K (Economy 30%); ORIX = O, R, I, X (Not eligible). The letter on your ticket. ANA earns by booking class, not by fare brand name.YBM
ppgNoOf those, Premium Points on ANA Group flights (optional). Each tier needs half its Premium Points on ANA Group flights. The flights here are ANA Group flights.
cardNoANA Gold Card or ANA Card Premium?. N = No; G = Yes. Holders reach Bronze at 30,000 Premium Points without the 15,000 on ANA Group flights.N
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour ANA status. NO = None; BR = Bronze; PL = Platinum; DI = Diamond.NO
creditToNoCredit the flights to a partner program instead of ANA's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly/idempotent/non-destructive/closed-world), but the description adds genuinely new behavioral context: the underlying data source ('cwsi.net's calculator and the airline's published rules'), an authoritative caveat ('Unofficial'), and an input-coverage statement ('Takes no price'). It does not discuss precision, rounding, or rule-version staleness, so it is not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in sentence one, and nothing is pure filler, but the rest is a single dense paragraph that interleaves the earning-rate table, the Premium Points formula, input format instructions, and sourcing caveats. Substantial portions (the class-rate enumeration, the segs field guidance) restate what the schema already carries, so the text is longer than it needs to be.

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 an 11-parameter tool with a nested segs array and an output schema, the description covers the core path end to end: what it computes, the formula, the required per-segment shape, the dependency on calculate_flight_distance, and the data source/disclaimer. Return values are covered by the output schema, so their absence here is not a gap.

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?

Schema description coverage is 100%, so the baseline is 3; the description earns above that by explaining how the parameters interact (miles = distance x booking-class rate; Premium Points adds route ratio and 400 boarding points) and by adding an actionable rule not spelled out in the schema ('set from or to to VVO for Vladivostok, which shares RU with the rest of Russia'). It still says nothing about the creditTo/creditClass/creditStatus/creditFlights family, leaving a quarter of the parameters purely schema-defined.

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?

States a specific verb and resource ('Estimate the ANA Mileage Club miles and Premium Points') and bounds the scope to 'flights operated by the ANA Group', which an agent can distinguish at a glance from the ~50 sibling airline calculators. It goes further by naming the exact formulas used, so the agent knows what output to expect.

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?

Gives clear input guidance ('Give segs: one entry per one-way flight...') and routes the agent to the sibling that produces the needed miles value ('calculate_flight_distance gives them'), plus the unusual VVO-for-Vladivostok instruction. It never states an explicit when-not or names a competing tool, so it stops 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.

calculate_avianca_lifemilesAvianca LifeMiles CalculatorA
Read-onlyIdempotent
Inspect

Avianca LifeMiles for a flight operated by Avianca. LifeMiles = fare in US dollars (whole ticket, without taxes, fees and extras) x rate by fare family (Basic and Light 3, Classic 6, Flex 8, Business 10), plus an Elite bonus of that base (Red Plus 10%, Silver 20%, Gold 60%, Diamond 80%, Magno 100%), rounded down. Qualifying miles = the base LifeMiles plus 1 per 20 bonus LifeMiles. Progress toward Red Plus (6,000), Silver (12,000), Gold (24,000), Diamond (45,000) and Magno (110,000) qualifying miles in a calendar year; qm is the qualifying miles so far. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qmNoQualifying miles you have so far this year (optional). Used only for the progress toward the next Elite status.
fareNoFare family. BS = Basic (3 per $1, domestic flights); LT = Light (3 per $1, international flights); CL = Classic (6 per $1); FX = Flex (8 per $1); BZ = Business (10 per $1, Business Classic, Business Flex, INSIGNIA). Shown on your booking. Avianca does not publish booking class letters for its fare families.CL
priceNoFare paid (USD, whole ticket) in US dollars. In US dollars: the fare for the whole ticket without taxes, fees and additional services (bags, seats and other extras). Required unless creditTo is given.
statusNoYour LifeMiles Elite status when you fly. NO = No Elite status (no bonus); RP = Red Plus (10% bonus); SV = Silver (20% bonus); GD = Gold (60% bonus); DI = Diamond (80% bonus); MG = Magno (100% bonus).NO
creditToNoCredit the flights to a partner program instead of Avianca's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower, and the description adds meaningful domain context beyond them: the full earning formula, rounding-down behavior, elite bonus percentages, qualifying-mile thresholds, the credit-card-partner alternative via creditTo, and the 'Unofficial' caveat with its data source (cwsi.net plus published rules).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opener is front-loaded and clear, but the body collapses into a long, dense run-on of formulas, percentages and thresholds. Most content is necessary for a calculator, yet it could be structured far more readably (bullets/steps) for the same information.

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 an output schema exists and parameter coverage is complete, the description needn't explain returns and doesn't. It supplies the domain logic (formula, bonuses, thresholds, partner-credit path) an agent needs to invoke it correctly, falling just short of explicitly tying each branch of the model to the input parameters it consumes.

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 (qm, fare, price, status, creditTo, creditClass, creditStatus, creditFlights). The description largely restates the fare-family rates and elite bonuses that the schema enum descriptions already carry, so it adds little semantic meaning beyond the structured fields.

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?

States a specific verb+resource (calculates Avianca LifeMiles) and scopes eligibility ('for a flight operated by Avianca'). An agent can immediately distinguish it from the ~50 sibling airline calculators by the airline and the exact earning model it exposes.

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 implies usage (pass fare/price/status, or creditTo to redirect to a partner) and references calculate_flight_distance for miles, but never states when to prefer this tool or when not to use it. No explicit when/alternatives guidance against the sibling set.

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

calculate_breeze_pointsBreezy Rewards CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Breeze Airways ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with the Breeze Easy Visa. none = No; BV = Yes (card points).none
fareNoBundle. NF = No Flex Fare (1 per $1); NI = Nice (2 per $1); NR = Nicer (5 per $1); NT = Nicest (5 per $1).NI
priceYesFare and trip add-ons paid to Breeze (without taxes and fees) in US dollars. Booked with Breeze: the fare plus bags and seat selection. Government taxes and fees do not earn.
statusNoYour Breezy Rewards level. Member = Member; Breezy 1 = Breezy 1 (+25%); Breezy 2 = Breezy 2 (+50%); Breezy 3 = Breezy 3 (+75%); Breezy Club = Breezy Club (+100%).Member

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds genuine extra context by disclosing that results are estimates, that it relies on cwsi.net's calculator plus published rules, and that it is "Unofficial" – all useful for calibrating trust in the output.

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 compact sentence leads with the core purpose and tucks the provenance and "Unofficial" caveat into a short trailing clause. Nothing is wasted, though the parenthetical is slightly dense.

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?

With an output schema present, the description need not explain return values, and annotations handle the safety profile. The description covers purpose, estimation caveat, provenance, and scope, which is sufficient for a low-risk, single-required-parameter calculator.

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% and each enum value (card, fare, status) is already fully documented in the schema. The description adds no fare/status/card semantics beyond what the schema provides, 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 pairs a specific verb ("Estimate") with a specific resource ("what a Breeze Airways ticket earns") and even names the sub-outputs (miles or points, status credit). The Breeze Airways name naturally separates it from the many sibling airline calculators, though it never explicitly frames itself as the Breeze-specific alternative.

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?

Usage is implied by the airline scope and the earnings context, but there is no explicit when-to-use guidance, no prerequisites, and no pointer to a sibling or alternative. Nothing tells the agent what a caller must already know (fare/bundle data) before invoking it.

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

calculate_british_airways_aviosBritish Airways Avios and Tier Points CalculatorB
Read-onlyIdempotent
Inspect

Estimate what a British Airways ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Give the price in GBP, not US dollars. Unofficial.

NameRequiredDescriptionDefault
clNoCabin. WT = World Traveller (economy); WP = World Traveller Plus (premium economy); CW = Club World (business); FI = First. Only applies to some choices of the other fields; ignored otherwise.WT
csNoCabin. ET = Euro Traveller (economy); CE = Club Europe (business). Only applies to some choices of the other fields; ignored otherwise.ET
tpNoTier points you have so far (optional). Used only for the progress toward the next tier.
yrNoWhen you fly. 26 = Up to 31 March 2027; 27 = From 1 April 2027. From 1 April 2027 British Airways lowers the extra tier points on some long-haul fares (World Traveller Plus Premium Economy, Club World and First) and Silver needs 8,000 tier points, Gold 21,000.26
fceNoClub Europe fare type. BU = Business (+175 tier points); SF = Semi-Flex (+275 tier points); FF = Fully-Flex (+375 tier points). Only applies to some choices of the other fields; ignored otherwise.BU
fcwNoClub World fare type. BU = Business (+500 tier points (200 from 1 April 2027)); SF = Semi-Flex (+700 tier points (400 from 1 April 2027)); FX = Flex (+900 tier points (600 from 1 April 2027)); FF = Fully-Flex (+1,100 tier points (800 from 1 April 2027)). Only applies to some choices of the other fields; ignored otherwise.BU
fetNoEuro Traveller fare type. B = Basic (no extra tier points); P = Plus (+75 tier points); SF = Semi-Flex (+175 tier points); FF = Fully-Flex (+275 tier points). Basic is the Basic Economy fare: it earns no extra tier points. Only applies to some choices of the other fields; ignored otherwise.P
ffiNoFirst fare type. FI = First (+650 tier points (300 from 1 April 2027)); SF = Semi-Flex (+850 tier points (500 from 1 April 2027)); FX = Flex (+1,050 tier points (700 from 1 April 2027)); FF = Fully-Flex (+1,250 tier points (900 from 1 April 2027)). Only applies to some choices of the other fields; ignored otherwise.FI
fwpNoWorld Traveller Plus fare type. PE = Premium Economy (+275 tier points (175 from 1 April 2027)); SF = Semi-Flex (+375 tier points); FX = Flex (+475 tier points); FF = Fully-Flex (+575 tier points). Only applies to some choices of the other fields; ignored otherwise.PE
fwtNoWorld Traveller fare type. B = Basic (no extra tier points); ST = Standard (+150 tier points); SF = Semi-Flex (+250 tier points); FX = Flex (+350 tier points); FF = Fully-Flex (+450 tier points). Basic is the Basic Economy fare: it earns no extra tier points. Only applies to some choices of the other fields; ignored otherwise.ST
haulNoShort haul or long haul. S = Short haul; L = Long haul. Short haul is Euro Traveller and Club Europe; long haul is World Traveller, World Traveller Plus, Club World and First.S
priceNoFare paid (GBP, whole ticket) in GBP. In pounds: base fare plus carrier-imposed charges for the whole ticket, without government taxes and airport charges. British Airways converts other currencies at the IATA 5-day rate on the day you buy. Required unless creditTo is given.
addonsNoAdd-ons (GBP, optional). Paid seats, extra bags and sustainable aviation fuel (SAF): 2 tier points per £1, and Avios at your tier rate. Tier points from SAF are capped at 2,000 a year.
statusNoYour British Airways Club tier. BL = Blue; BR = Bronze; SV = Silver; GD = Gold.BL
flightsNoNumber of flights. Each flight earns the extra tier points: a return trip is 2 flights, and a connection adds one per leg.
creditToNoCredit the flights to a partner program instead of British Airways's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and closed-world, so safety is covered. The description adds two genuinely non-structured facts: results are derived from cwsi.net plus published airline rules, and the output is 'Unofficial'. It does not disclose the two distinct calculation modes (own programme vs creditTo partner) or that most fare-type fields are ignored depending on cabin.

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?

Two short sentences with the core scope front-loaded and the practical currency constraint immediately after. No filler, though the 'miles or points' parenthetical is slightly redundant with the airline context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full schema coverage, the description needn't explain return values or fields, and it doesn't. However, for a 19-parameter tool with mutually exclusive cabin/fare-type combinations and a whole alternative creditTo pathway, the description says nothing about the two modes of use, leaving the agent to reconstruct them from the schema.

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 one of the 19 parameters, including the creditTo/creditClass/creditFlights trio, is already documented in detail. The description only restates the GBP currency requirement, which the price schema field also states. Baseline 3 is appropriate when the schema does all the parameter work.

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 verb and resource: 'Estimate what a British Airways ticket earns (miles or points, and status credit)'. The airline name plus the miles/points/status-credit scope separates it from the many sibling calculators without needing to name them. It does not explicitly contrast with near-neighbours like calculate_iberia_avios or calculate_qantas_points, so it stops short of a 5.

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?

'Give the price in GBP, not US dollars' is the only usage constraint, and it is really a parameter rule. Nothing says when to use this versus compare_fare_classes, get_fare_classes, or the creditTo partner path, and the 'Unofficial' caveat is stated without saying how much to trust the result. Usage is implied by the tool name rather than explained.

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

calculate_cathay_pacific_milesCathay Pacific Asia Miles and Status Points CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Cathay Pacific flight earns (miles and status points) from its distance in miles, booking class and fare type, using cwsi.net's calculator and the airline's published rules. Get the miles from calculate_flight_distance. For flights of 751 to 2,750 miles to or from Japan, Indonesia, Sri Lanka, Nepal, Bangladesh or India, set t2 to that country code (JP, ID, LK, NP, BD or IN); otherwise leave t2 out. Unofficial.

NameRequiredDescriptionDefault
spNoStatus Points you have so far (optional). Used only for the progress toward the next tier.
t2NoJapan, Indonesia, Sri Lanka, Nepal, Bangladesh or India at either end?. none = None of these; JP = Japan; ID = Indonesia; LK = Sri Lanka; NP = Nepal; BD = Bangladesh; IN = India. Short-haul flights (751 to 2,750 miles) to or from these countries are Type 2 and earn more. Pick the country when either end of the flight is in one of them. Only applies to some choices of the other fields; ignored otherwise.none
clsNoBooking class. FA = F, A (First Flex); JC = J, C (Business Flex); DP = D, P (Business Essential); I = I (Business Light); WR = W, R (Premium Economy Flex); E = E (Premium Economy Essential); YBHK = Y, B, H, K (Economy); MLV = M, L, V (Economy); SNQO = S, N, Q, O (Economy).YBHK
fareNoEconomy fare type. L = Light; E = Essential; F = Flex. Economy classes are sold as Light, Essential or Flex, and each earns differently. Only applies to some choices of the other fields; ignored otherwise.
tripNoTrip. ow = One way (1 flight); rt = Round trip (2 flights).ow
milesNoFlight distance (miles). One flight (sector). Filled in from the airports above; you can also type it.
statusNoYour Cathay status. GR = Green; SV = Silver; GD = Gold; DM = Diamond.GR
creditToNoCredit the flights to a partner program instead of Cathay Pacific's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles).
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this a read-only, idempotent, non-destructive calculation. The description adds a meaningful transparency note beyond that: 'Unofficial,' flagging that the numbers come from a third-party calculator and airline rules rather than a guaranteed source. It adds no return format or rate-limit detail, but the output schema carries the result shape.

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?

Front-loaded with the purpose, then the prerequisite, then the one non-obvious conditional rule, then a caveat. Every sentence carries weight, though the t2 guidance partially duplicates the schema enum description.

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 an 11-parameter tool with an output schema and full schema coverage, the description supplies what structured fields don't: the cross-tool dependency on calculate_flight_distance, the special t2 case, and the 'Unofficial' caveat. Partner-credit mechanics live in the schema, so nothing critical 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?

Schema description coverage is 100%, so the schema already documents every parameter including the t2 country list and its 'ignored otherwise' behavior. The description restates the t2 rule with the distance threshold, which adds operational emphasis but little information beyond the schema itself; baseline 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?

States a specific verb and resource: 'Estimate what a Cathay Pacific flight earns (miles and status points) from its distance in miles, booking class and fare type.' It also names its inputs at a high level and the data source (cwsi.net's calculator plus published rules), clearly separating it from the other airline calculator siblings.

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?

Gives an explicit prerequisite ('Get the miles from calculate_flight_distance') and a concrete conditional rule for t2 (751–2,750 mile flights to/from JP, ID, LK, NP, BD, IN). It does not state when-not to use this tool versus a competing program's calculator, but the airline-specific name makes that largely self-evident.

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

calculate_china_airlines_milesChina Airlines Dynasty Flyer Miles CalculatorA
Read-onlyIdempotent
Inspect

China Airlines Dynasty Flyer miles for China Airlines flights. Miles = distance x booking-class % (J 175; C 150; D, W, U 125; A 115; E, Y, B, M 100; K, V, T 80; R, Q, H, N 50; L, O, Z, X, G, S 0), rounded to the nearest mile per flight, no minimum. The Gold, Emerald and Paragon incentive (15/25/30%) is a note only. Status Points per flight are not calculated; the thresholds are Gold 360, Emerald 720 and Paragon 1,400 Status Points (sp: the Status Points you have, for the progress). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
spNoStatus Points you have in the last 12 months (optional). Used only for the progress toward the next tier; the flight's own Status Points are not added.
clsNoBooking class. J = J (Business Flex, 175%); C = C (Business Standard, 150%); D = D (Business Basic, 125%); W = W (Premium Economy Flex, 125%); U = U (Premium Economy Flex, 125%); A = A (Premium Economy Standard, 115%); E = E (Premium Economy Basic, 100%); Y = Y (Economy Flex, 100%); B = B (Economy Flex, 100%); M = M (Economy Flex, 100%); K = K (Economy Standard, 80%); V = V (Economy Standard, 80%); T = T (Economy Standard, 80%); R = R (Economy Basic, 50%); Q = Q (Economy Basic, 50%); H = H (Economy Basic, 50%); N = N (Economy Basic, 50%); L = L (Economy Discount, 0%); O = O (No miles); Z = Z (No miles); X = X (No miles); G = G (No miles); S = S (No miles). The letter on your ticket. Classes O, Z, X, G and S, and L, earn no miles.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Dynasty Flyer tier. DY = Dynasty; GD = Gold; EM = Emerald; PG = Paragon. Gold, Emerald and Paragon members get incentive miles on top; the calculator shows them as a note.DY
creditToNoCredit the flights to a partner program instead of China Airlines's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly/idempotent/non-destructive/closed-world). Beyond them the description adds real behavioral detail: rounding to the nearest mile per flight with no minimum, that the 15/25/30% tier incentive is a note only, that Status Points per flight are not calculated, and that the source is cwsi.net plus published rules and is unofficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The formula is front-loaded, which is good, but the body is a dense run-on of semicolon-joined clauses and it duplicates the class-percentage table that the schema already lists, which is wasted length.

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 complex 9-parameter tool this covers the earning rules, rounding, exclusions (no status points, no price) and source disclaimers well, and an output schema exists so return values need no explanation. The creditTo/partner-program branch is documented but terse relative to its complexity.

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 baseline is 3. The description restates the booking-class percentages already fully enumerated in cls's schema and re-explains the segs shape, adding little semantics beyond what the structured fields carry.

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?

States a specific verb+resource ('China Airlines Dynasty Flyer miles for China Airlines flights') and scopes it to one airline, cleanly distinguishing it from the many sibling airline calculators. The earning formula is given up front, so an agent immediately knows what is being computed.

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?

The description clarifies the scope (China Airlines flights, no price taken) and routes to alternatives via 'calculate_flight_distance gives them' for segment miles and via creditTo for crediting to partner programs instead of Dynasty Flyer. It gives clear context but stops short of explicit when-not/exclusion statements.

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

calculate_china_eastern_milesChina Eastern Eastern Miles CalculatorA
Read-onlyIdempotent
Inspect

China Eastern Eastern Miles for a China Eastern, Shanghai Airlines or China United ticket, from the fare plus the YQ fuel surcharge in yuan (CNY, whole ticket). Miles = fare x a coefficient by member level and sales channel (China Eastern app, website or 95530 / other channels: 1-star 0.264 / 0.24 up to Platinum 1.232 / 1.12), rounded down, no minimum. China Eastern does not say how a ticket in another currency is converted, so give the CNY amount. Progress toward the next level by yearly spend (2-star 3,000 up to Platinum 100,000 yuan; each level also needs qualifying segments or kilometres, named in the note); spend is the qualifying spend so far. Uses cwsi.net's calculator and the airline's published rules. Give the price in CNY, not US dollars. Unofficial.

NameRequiredDescriptionDefault
levelNoYour Eastern Miles level when you fly. S1 = 1-star member (coefficient 0.264 or 0.24); S2 = 2-star member (0.44 or 0.4); S3 = 3-star member (0.66 or 0.6); S4 = 4-star member (0.792 or 0.72); S5 = 5-star member (0.88 or 0.8); S6 = 6-star member (0.968 or 0.88); SV = Silver card (SkyTeam Elite, 1.056 or 0.96); GD = Gold card (SkyTeam Elite Plus, 1.144 or 1.04); PT = Platinum card (SkyTeam Elite Plus, 1.232 or 1.12).S1
priceNoFare plus YQ (CNY, whole ticket) in CNY. In yuan: the ticket price including the YQ fuel surcharge, for the whole ticket. China Eastern does not say how a ticket in another currency is converted. Required unless creditTo is given.
spendNoQualifying spend so far in the 12 months (CNY, optional). Used only for the progress toward the next level.
channelNoWhere the ticket was sold. OWN = China Eastern app, website or 95530 (higher coefficient); OTH = Any other channel (travel agents and other sellers). China Eastern pays a higher coefficient on its own channels.OWN
creditToNoCredit the flights to a partner program instead of China Eastern's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive, closed-world profile, and the description adds real context beyond them: the result is rounded down with no minimum, progress is driven by yearly spend plus qualifying segments/km, and the tool is explicitly "Unofficial" and built on cwsi.net's calculator. It omits return shape, but an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and currency caveat are front-loaded, but the body is a single dense paragraph embedding two coefficient tables and level thresholds in prose, which is hard to parse. Information is relevant but not efficiently structured.

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 branching tool with eight parameters and an output schema (so return values need no explanation), the description covers both the own-program formula and the creditTo partner path, including the creditClass/creditFlights requirements. Minor gaps remain around the creditTo earning mechanics, but overall it is sufficient to call the tool correctly.

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% and the enum values already document the coefficient tables and channel/level meanings. The description largely restates those coefficients (1-star 0.264/0.24 up to Platinum 1.232/1.12) rather than adding new semantic detail, so the 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?

States a specific verb (calculate), resource (Eastern Miles), and precise scope (China Eastern, Shanghai Airlines or China United tickets, from fare plus YQ). Against a large sibling set of airline calculators, the airline scope and the exact earning formula make it unambiguous which tool applies.

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?

Explains when to use the own-program path versus the creditTo partner path ("leave creditTo out for the airline's own program"), and repeatedly instructs to supply CNY rather than another currency. No explicit when-not or pointer to sibling calculators, so it stops short of full routing guidance.

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

calculate_copa_airlines_milesCopa Airlines ConnectMiles CalculatorA
Read-onlyIdempotent
Inspect

Copa Airlines ConnectMiles miles, qualifying miles and qualifying segments for Copa Airlines flights. Miles = distance x fare family % (Economy Basic 50, Economy Classic 100, Economy Full and Business Promo 175, Business Full 300), at least 500 per flight; qualifying miles are the same; booking classes G, I, N, P, X and Z earn nothing (noearn Y). PreferMember bonus on miles only (Silver 25%, Gold 50%, Platinum 75%, Presidential 100%). Progress toward Silver, Gold, Platinum and Presidential by qualifying miles (20,000 / 40,000 / 70,000 / 90,000) or segments in a calendar year; qm and qs are the totals so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qmNoQualifying miles you have this calendar year (optional). Used only for the progress toward the next PreferMember status.
qsNoQualifying segments you have this calendar year (optional). Economy Basic counts half a segment.
famNoFare family. EB = Economy Basic (Economy, 50%); EC = Economy Classic or Classic Flex (Economy, 100%); EF = Economy Full (Economy, 175%); BP = Business Promo (Business, 175%); BF = Business Full (Business, 300%). The fare family on your Copa Airlines ticket. Economy Basic earns half the distance; Business Full earns triple.EC
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
noearnNoIs your booking class G, I, N, P, X or Z?. N = No; Y = Yes (earns nothing). Copa Airlines says these classes earn no miles or segments. Choose No if you do not know.N
statusNoYour PreferProgram status. NO = Not a PreferMember; SI = Silver (+25%); GO = Gold (+50%); PL = Platinum (+75%); PR = Presidential (+100%). The PreferMember bonus is paid on award miles for Copa Airlines flights; it does not count toward status.NO
creditToNoCredit the flights to a partner program instead of Copa Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this is a read-only, idempotent, non-destructive, closed-world computation, so the safety profile is covered. The description goes further by disclosing the provenance ('Uses cwsi.net's calculator and the airline's published rules') and the fact that it is 'Unofficial', plus the full deterministic earning logic, which is genuine added context. It does not cover failure modes or edge cases.

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?

Everything is compressed into a single front-loaded paragraph that opens with what is computed before moving to rules and inputs, and no sentence is pure filler. It is dense and unsegmented, and portions duplicate the schema, which keeps it short of a 5.

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 an 11-parameter tool with an output schema and annotations already present, the description covers the earning rules, the partner-credit path, the segs input shape and the qualifying-status thresholds, which is enough for correct invocation. Return values need not be described since an output schema exists.

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% and the schema itself is extremely detailed (fare-family percentages, enum labels, segs structure), so the baseline is 3. The description largely restates those same rules (fare family percentages, status bonuses, no-earn classes, qm/qs as year-to-date totals) rather than adding meaning beyond the schema, though 'Takes no price' and the segs ordering hint add marginal value.

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 names a specific verb and resource — computing ConnectMiles award miles, qualifying miles and qualifying segments for Copa flights — and spells out the earning model, so the agent knows exactly what is produced. It distinguishes itself from the ~50 sibling calculators mainly through the airline-specific rules it enumerates rather than an explicit contrast statement.

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 concrete invocation guidance: 'Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them)', names the prerequisite sibling tool, and states 'Takes no price' plus 'leave creditTo out for the airline's own program'. What is missing is an explicit when-not-to-use or a routing statement against other airlines' calculators, though that is largely implied by the airline name.

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

calculate_croatia_airlines_milesCroatia Airlines Miles & More CalculatorA
Read-onlyIdempotent
Inspect

Miles & More miles, Points, Qualifying Points and HON Circle Points for flights operated by Croatia Airlines (a Star Alliance member whose flights earn in Miles & More), by booking class (cls). Within Croatia (Domestic) and between two European countries (Cross-Border): fixed miles by class whatever the distance (Domestic 125 to 1,500, Cross-Border 125 to 2,000); Miles & More prints no table for other routes, so a flight outside Europe, or a domestic flight in another country, is refused with a message. I, N, R and X earn nothing. Points and Qualifying Points per flight: Economy 20, Business (C, D, Z) 40; HON Circle Points the same, in Business only. The status bonus of up to 50% more miles is not published as a rule and is not added. Algeria, Egypt, Libya, Morocco and Tunisia count as Europe; set tc to EU or AS for Turkey, Cyprus, Georgia, Armenia, Azerbaijan, Kazakhstan and Russia. Croatia flights booked through a Lufthansa Group channel earn by fare instead (calculate_lufthansa_miles). Progress toward Frequent Traveller (650 Points and 325 Qualifying Points), Senator (2,000 and 1,000) and HON Circle (6,000 HON Circle Points) in a calendar year; pts, qp and hp are the totals so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
hpNoHON Circle Points you have this year (optional). Only applies to some choices of the other fields; ignored otherwise.
qpNoQualifying Points you have this year (optional).
tcNoTurkey, Cyprus, the Caucasus, Kazakhstan and Russia count as. EU = Europe; AS = Asia (outside Europe). These countries lie on two continents and Miles & More does not say which one it counts. Only applies to some choices of the other fields; ignored otherwise.EU
clsNoBooking class. C = C (Business); D = D (Business); Z = Z (Business); B = B (Economy); Y = Y (Economy); M = M (Economy); A = A (Economy); F = F (Economy); H = H (Economy); J = J (Economy); G = G (Economy); O = O (Economy); Q = Q (Economy); K = K (Economy); V = V (Economy); S = S (Economy); W = W (Economy); E = E (Economy); L = L (Economy); P = P (Economy); T = T (Economy); U = U (Economy); I = I (earns nothing); N = N (earns nothing); R = R (earns nothing); X = X (earns nothing). The letter on your ticket. Business C, D and Z; the rest Economy. I, N, R and X earn nothing.M
ptsNoPoints you have this year (optional). Used only for the progress toward the next tier.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Miles & More status. MM = Member (no status); FT = Frequent Traveller; SE = Senator; HC = HON Circle. Used for the progress toward the next tier. The bonus of up to 50% more miles for status holders is not published as a rule, so it is not added.MM
creditToNoCredit the flights to a partner program instead of Croatia Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond readOnly/idempotent annotations, the description discloses operational behavior: fixed mileage by class, no status bonus added, no price taken, route-refusal behavior, country-continent handling, and that it is unofficial and based on cwsi.net and published airline rules.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is dense and front-loads purpose, but it is delivered as one very long paragraph rather than clearly structured guidance. Many details earn their place for a complex calculator, yet some repeat the schema and make the description heavier than necessary.

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?

Given the 12-parameter schema with 100% coverage, an output schema, and read-only annotations, the description supplies the remaining context an agent needs: route scope, class behavior, tier progress, country handling, alternatives and source limitations. It is complete enough to call the tool correctly.

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?

Schema description coverage is 100%, but the description adds meaningful semantics for key parameters such as cls, tc, segs, pts/qp/hp and status, including rules like Algeria, Egypt, Libya, Morocco and Tunisia counting as Europe. It does not cover creditTo/creditFlights, so it does not fully extend beyond the already rich schema.

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 calculation resource and scope: Miles & More miles, Points, Qualifying Points and HON Circle Points for flights operated by Croatia Airlines, by booking class. It distinguishes itself from siblings by specifying Croatia Airlines only and naming calculate_lufthansa_miles for Lufthansa Group bookings.

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?

It gives explicit when-to-use scope for Croatia Airlines flights and when-not conditions, including refusal for routes outside Europe, a domestic flight in another country, and zero earning for I, N, R and X. It names alternatives: calculate_lufthansa_miles for Lufthansa Group channels and calculate_flight_distance for great-circle miles.

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

calculate_delta_milesDelta SkyMiles CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Delta Air Lines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with a Delta Amex card. none = No; BL = Blue; GO = Gold; PL = Platinum; RE = Reserve.none
fareNoFare type. CR = Classic (or Refundable); EX = Extra; PB = Basic (Comfort, First, Premium Select, One); BA = Main Basic (Basic Economy). Delta Comfort, First, Premium Select and Delta One earn as Classic or Extra, whichever you bought. Their Basic fares earn as Basic.CR
priceNoTicket price in US dollars. Base fare plus carrier charges, without government taxes and fees (shown on your receipt). Required unless creditTo is given.
statusNoYour Medallion status. none = None; FO = Silver; GM = Gold; PM = Platinum; DM = Diamond.none
creditToNoCredit the flights to a partner program instead of Delta Air Lines's own: flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare the safe, read-only, idempotent, closed-world profile, so the bar is lower. The description still adds genuine behavioral context beyond that: it discloses the underlying source (cwsi.net's calculator plus the airline's published rules) and flags the result as 'Unofficial', which is an accuracy/reliability caveat an agent should weigh. It does not discuss auth, rate limits, or determinism of results, so it is not a 5.

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 front-loaded sentence with no filler; the core verb and resource lead. The trailing list of outputs plus 'Unofficial' is efficient. It is well-sized, though slightly dense, which keeps it from a 5.

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 an output schema present, return values need no explanation, and full schema coverage means parameters are self-documenting. The description supplies the one thing structured fields cannot: what the number means and that it is unofficial. It omits guidance on the conditional price-vs-creditTo requirement, but the schema covers that, so the gap is minor.

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 all 8 parameters including enum meanings, the price/creditTo mutual exclusion, and the creditFlights structure. The description adds no parameter-level detail beyond what the schema provides. Baseline 3 applies when the schema does the heavy lifting.

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+resource: 'Estimate what a Delta Air Lines ticket earns (miles or points, and status credit)'. The airline name plus the Delta-specific tool name clearly separates it from the ~50 sibling calculators. It stops short of a 5 because it never names the adjacent alternatives (e.g. the partner-program calculators, calculate_flight_distance) that an agent might otherwise reach for.

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?

The description gives no when-to-use, when-not-to-use, or alternative routing. Nothing tells the agent it should prefer calculate_flying_blue_miles / partner tools when crediting to a partner program, even though the tool accepts creditTo for exactly those programs. Usage has to be inferred entirely from the schema.

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

calculate_etihad_guest_milesEtihad Guest Miles CalculatorA
Read-onlyIdempotent
Inspect

Etihad Guest Miles and Tier Miles for Etihad-marketed and operated flights on an Etihad ticket (number starting 607, 291 or 169; stock EY). Each route from Abu Dhabi (AUH) has a fixed base number from Etihad's own miles calculator (1,000 to 7,000, not the distance flown); a journey between two other cities is two flights via AUH, each on its own base. Guest Miles = base x fare-brand %, rounded half up: Economy (cabin Y) Basic 5% (15% if issued before 18 June 2026), Value 35, Comfort 75, Deluxe 125; Business (J) Value 100, Comfort 150 (200 if issued before 21 July 2025), Deluxe 250; First (F) Comfort 200 (300 before 21 July 2025), Deluxe 300 (issued: N from 18 Jun 2026, M 21 Jul 2025 to 17 Jun 2026, O before 21 Jul 2025). Tier bonus on paid fares: Silver 25%, Gold 50%, Platinum and Emerald 100% of the base, Guest Miles only. Tier Miles = the same share of the base, no bonus. Promo (award) seats (seat P) earn no Guest Miles; Tier Miles 0 (Value), 25% (Comfort), 50% (Deluxe). A city not on Etihad's list is refused. Other tickets (stock OT) earn by booking class and are not worked out (the message gives the table). Progress toward Silver 25,000, Gold 50,000 and Platinum 125,000 Tier Miles in 12 months (25% less from 18 March 2026 to 31 March 2027 for existing members); tm is the Tier Miles so far. Give segs: one entry per journey, in order, with from and to, the IATA codes of its two airports (required; the base numbers come from the table). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
tmNoTier Miles you have in the last 12 months (optional). Used only for the progress toward Silver, Gold and Platinum. Only applies to some choices of the other fields; ignored otherwise.
seatNoFare type. C = Paid fare; P = Promo seat (award). Promo seats are Etihad's award (miles) seats: no Guest Miles, Tier Miles on Comfort and Deluxe only. Only applies to some choices of the other fields; ignored otherwise.C
segsNoThe flights, one way and in order, one entry per flight (1 to 4): from and to, the IATA codes of its two airports (required: the earn table is keyed by the airport pair); optional fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports.
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way. Only applies to some choices of the other fields; ignored otherwise.ow
brandNoFare brand. B = Basic; V = Value; C = Comfort; D = Deluxe. As on your booking. Basic is Economy only; First is Comfort or Deluxe. Only applies to some choices of the other fields; ignored otherwise.V
cabinNoCabin. Y = Economy; J = Business; F = First. The Residence is not a fare brand in Etihad's tables, so it is not offered. Only applies to some choices of the other fields; ignored otherwise.Y
stockNoTicket number starts with. EY = 607, 291 or 169 (Etihad ticket); OT = Another number (by booking class). Etihad's rates by fare brand apply to Etihad tickets (607, 291 or 169). Other tickets earn by booking class.EY
issuedNoTicket issued. N = From 18 Jun 2026; M = 21 Jul 2025 to 17 Jun 2026; O = Before 21 Jul 2025. Economy Basic earned 15% before 18 June 2026; Business Comfort 200% and First Comfort 300% before 21 July 2025. Only applies to some choices of the other fields; ignored otherwise.N
statusNoYour Etihad Guest tier. BR = Bronze; SI = Silver; GO = Gold; PL = Platinum; EM = Emerald. The tier bonus adds Guest Miles (Silver 25%, Gold 50%, Platinum and Emerald 100% of the base). Tier Miles are the same for everyone. Only applies to some choices of the other fields; ignored otherwise.BR
creditToNoCredit the flights to a partner program instead of Etihad Airways's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles).
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds behavior beyond them: it discloses the refusal path for unlisted cities, that it takes no price, that results come from cwsi.net's calculator, and that the tool is unofficial — useful context for trusting/validating output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, but the rest is a single undifferentiated block of reference rules (percentages, dates, rounding) that duplicates the schema rather than adding new information. For a 13-parameter tool the length is defensible, yet structure and non-redundancy suffer.

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 values need not be explained. Given the complexity (13 params, 8 enums, partner-program path via creditTo), the description covers eligibility, formulas, exceptions, refusal behavior and the unofficial disclaimer, leaving only the creditTo partner flow to the schema.

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 baseline is 3. The description's rule text (base 1,000–7,000, fare-brand percentages, tier bonuses, issued-date cutoffs) largely restates what the schema already documents for brand, issued, status, seat and stock, so the marginal semantic gain over structured fields is limited.

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 opening sentence names the specific resource (Etihad Guest Miles and Tier Miles) and the exact scope (Etihad-marketed and operated flights on a ticket starting 607/291/169, stock EY), which cleanly separates it from the dozens of other airline calculators in the sibling list. An agent knows immediately this is the Etihad earning calculator, not a generic distance or fare-class tool.

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 real applicability conditions: rates by fare brand apply only to Etihad tickets, other tickets (stock OT) 'are not worked out' and only return a table, promo seats (seat P) behave differently, and 'A city not on Etihad's list is refused.' It does not explicitly route the agent to calculate_flight_distance or compare_fare_classes, but the when-it-applies/when-it-does-not context is unusually strong.

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

calculate_eva_air_milesEVA Air Infinity MileageLands Miles CalculatorA
Read-onlyIdempotent
Inspect

EVA Air Infinity MileageLands Award Miles, Status Miles and qualifying flight sectors for EVA Air flights. Award Miles and Status Miles = distance x booking-class % (C 175; J 150; D, K 125; L, T 115; P, Y, B 100; M, H, Q 75; S, W, V 50; A and group tickets G 0), plus a tier bonus on Award Miles only on international flights (Silver 15%, Gold and Diamond 25%). Progress toward the next card by Status Miles or flights; sm and fl are the Status Miles and qualifying flights so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
flNoQualifying flights so far (optional). EVA Air and UNI Air international flights (whole flights). Used only for the progress.
smNoStatus Miles you have so far (optional). Counted in the 12 months during your current tier. Used only for the progress.
clsNoBooking class. C = C (Business Up, 175%); J = J (Business Standard, 150%); D = D (Business Basic, 125%); K = K (Premium Economy Up, 125%); LT = L, T (Premium Economy Standard, 115%); P = P (Premium Economy Basic, 100%); YB = Y, B (Economy Up, 100%); MHQ = M, H, Q (Economy Standard, 75%); SWV = S, W, V (Economy Basic, 50%); A = A (Economy Discount, 0%); G = G (Group tickets, 0%). The letter on your ticket. The percentage is of the distance flown.YB
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Infinity MileageLands card. GR = Green Card; SI = Silver Card (+15% Award Miles); GO = Gold Card (+25% Award Miles); DI = Diamond Card (+25% Award Miles).GR
creditToNoCredit the flights to a partner program instead of EVA Air's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond them: it takes no price, is driven by cwsi.net's calculator plus the airline's published rules, and is explicitly unofficial, which tells the agent about accuracy caveats and the absence of fare input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, but the middle is a dense formula block that duplicates the cls enum's percentage list, and the segs/IATA-labeling detail reappears in the schema's seg descriptions. Earns most of its space, yet repeats structured data.

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 10-parameter tool with an output schema (so return values need not be described), it covers the earning math, tier bonus, partner-program crediting and progress inputs. Only the routing among sibling airline calculators is left unaddressed.

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 the cls enum already spells out every booking-class percentage, so much of the description's formula and sm/fl explanation restates the schema. It adds some value by tying segs/creditFlights together (defaulting creditFlights to segs), but the baseline of 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?

Names a specific verb and resource: computes EVA Air Infinity MileageLands Award Miles, Status Miles and qualifying sectors. The airline and program identity are explicit, so an agent can separate it from the dozens of sibling calculate_*_miles tools without opening any schema.

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?

Provides operational context (one seg entry per one-way flight, in order; leave creditTo out for the airline's own program) and points to calculate_flight_distance for the mile figures. However, it never states when to choose this tool over a sibling calculator or its exclusions, leaving the airline-selection decision implicit.

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

calculate_finnair_aviosFinnair Avios and Tier Points CalculatorA
Read-onlyIdempotent
Inspect

Finnair Plus Avios and tier points for a Finnair ticket. Both = (fare in EUR: the base fare plus any airline surcharge for the whole ticket, without taxes; plus travel extras on Finnair flights) x tier factor (Basic 6, Silver 7, Gold 8, Platinum 9, Platinum Lumo 10), rounded down. Set flt to CS for a Finnair codeshare flight (AY2501-AY7000) booked from 3 June 2025, where extras earn nothing. Progress toward Silver (15,000), Gold (45,000), Platinum (80,000) and Platinum Lumo (300,000) tier points; tp is the tier points so far. Uses cwsi.net's calculator and the airline's published rules. Give the price in EUR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
tpNoTier points you have so far (optional). Used only for the progress toward the next tier.
fltNoFlight. AY = Finnair flight (AY0001-AY2000, AY7001-AY7500); CS = Codeshare flight (AY2501-AY7000, booked from 3 June 2025). The flight number on your ticket. Codeshare flights booked before 3 June 2025 earn by distance and are not covered here.AY
priceNoFare paid (EUR, whole ticket) in EUR. In euros: the base fare plus any airline surcharge ("Extra fee" in the price breakdown) for the whole ticket, without taxes and airport charges. Finnair converts a fare paid in another currency to euros itself. Required unless creditTo is given.
extrasNoTravel extras (EUR, optional). The total price of travel extras bought for Finnair flights (for example bags or seats). They earn at the same rate as the fare. Only applies to some choices of the other fields; ignored otherwise.
statusNoYour Finnair Plus tier when you fly. BS = Basic (6 per €1); SV = Silver (7 per €1); GD = Gold (8 per €1); PT = Platinum (9 per €1); LU = Platinum Lumo (10 per €1).BS
creditToNoCredit the flights to a partner program instead of Finnair's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent profile, so the bar is lower, and the description adds real behavioral context: the exact earning formula, tier factors, the rule that extras earn nothing on codeshare flights, tier-point thresholds, and the 'Unofficial' status plus cwsi.net data source. It does not contradict the annotations.

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 purpose and formula are front-loaded, and each sentence carries computation rules or constraints rather than filler. It is dense and somewhat run-on, and repeats tier-factor values already in the schema, but it is appropriately sized for a rule-heavy calculator.

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 an output schema present, return values need not be explained, and the description covers the earning rules, codeshare/program branches, currency constraint, and source disclaimers. Coverage is complete enough for an agent to invoke the tool correctly across its branches.

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 the schema descriptions are themselves very detailed (price, extras, status, creditTo all fully documented). The description restates much of this, including the tier-factor mapping already present in the status enum. It adds the combined price+extras formula linking parameters, which earns it above a bare baseline, but most content duplicates the schema.

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 opens with a specific verb+resource: Avios and tier points earned for a Finnair ticket, computed from fare x tier factor. An agent can immediately tell this is the Finnair-specific earnings calculator. It does not explicitly name sibling tools, but the airline scope in name/title makes the distinction obvious.

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 concrete usage conditions: set flt=CS for codeshare flights booked from 3 June 2025, leave creditTo out for Finnair's own program, and 'Give the price in EUR, not US dollars.' It also routes partner-program crediting through creditTo. It stops short of explicitly contrasting with the sibling calculate_*_miles tools, so not a 5.

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

calculate_flight_distanceCalculate flight distanceA
Read-onlyIdempotent
Inspect

Great-circle distance in miles, nautical miles and kilometres for a route, leg by leg and in total, from cwsi.net's Great Circle Distance Calculator. Give airport codes joined by "-", e.g. ATL-SFO-ATL, with "" between separate trips, e.g. ATL-SFOSJC-ATL.

NameRequiredDescriptionDefault
routeYesAirport codes joined by "-" (spaces or commas also work), e.g. "ATL-SFO-ATL". Use "~" between separate trips, e.g. "ATL-SFO~SJC-ATL". Codes are 3 or 4 letters or digits; each trip needs 2 or more; at most 5 trips and 20 codes.

Output Schema

NameRequiredDescription
kmYes
miYes
nmYes
okYes
linkYes
tripsYes
unknownYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond that: the data source (cwsi.net's Great Circle Distance Calculator) and the fact that results are broken out per leg and in total.

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?

Two tight sentences with the capability statement front-loaded and the input syntax second. Nothing is wasted, though the syntax detail partially duplicates the schema description.

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?

With an output schema present, the description needn't explain return values, and it does state what is returned (miles, nautical miles, kilometres, per leg and total). Annotations cover safety and an output schema covers results, so an agent has everything needed to invoke it.

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 the schema already documents the route format, delimiters, code length, and trip/code limits. The description's examples largely restate what the schema says, so the baseline 3 applies; it adds only the concrete ATL-SFO~SJC-ATL pattern.

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?

States a specific verb (calculate) and resource (great-circle flight distance) and names the three output units plus leg-by-leg and total aggregation, which no sibling does. It is clearly distinguishable from the ~55 airline-points calculators that share the 'calculate_' prefix.

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?

Provides detailed input-format guidance ('-' joins legs, '~' separates trips) but never states when to choose this tool over the airline mileage calculators in the sibling set. The intended use (raw distance vs. loyalty accrual) is only implied.

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

calculate_flying_blue_milesAir France-KLM Flying Blue Miles and XP CalculatorA
Read-onlyIdempotent
Inspect

Estimate the Flying Blue Miles and XP an Air France or KLM ticket earns (set airline to KL for KLM). Miles = fare in EUR (base fare plus carrier surcharge, no taxes) x rate by level (Explorer 4, Silver 6, Gold 7, Platinum 8, Ultimate 9). XP per flight by cabin and distance band (Domestic = both airports in one country; Medium under 2,000 miles; Long 1 to 3,500; Long 2 to 5,000; Long 3 above). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Uses cwsi.net's calculator and the airline's published rules. Give the price in EUR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
xpNoXP you have so far (optional). Used only for the progress toward the next level.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way for XP. The fare above is for the whole ticket either way.ow
cabinNoCabin. E = Economy; P = Premium; B = Business; F = La Première (Air France). XP depend on the cabin and the distance band, not the booking class. La Première is Air France only.E
levelNoYour Flying Blue level. EX = Explorer (4 per euro); SV = Silver (6 per euro); GD = Gold (7 per euro); PL = Platinum (8 per euro); UL = Ultimate (9 per euro).EX
priceNoTicket fare in euros (whole trip) in EUR. The base fare plus the carrier-imposed surcharge, without government taxes and airport charges, for the whole ticket. Enter it in euros; Flying Blue converts other currencies itself. Required unless creditTo is given.
airlineNoAirline. AF = Air France; KL = KLM.AF
creditToNoCredit the flights to a partner program instead of Air France's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in airline (AF: delta, flying-club; KL: delta, flying-club). Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights. No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent, closed-world read, so the description earns credit for what it adds: the earning formula, that it relies on cwsi.net's calculator and the airline's published rules, and the honest 'Unofficial' caveat. It does not, however, describe rate limits, accuracy caveats beyond 'unofficial', or pagination-type traits.

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?

Purpose is front-loaded and the dense paragraph keeps formula, band definitions, and input requirements together with little redundancy. It is long and somewhat wall-of-text, but each clause carries operative content.

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?

With 11 parameters, nested segs, and an output schema present, the description still covers inputs, units, ordering, the creditTo alternative flow, and the unofficial-service caveat. Nothing an agent needs to invoke it correctly appears missing, and return values are properly delegated to the output schema.

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?

Schema description coverage is 100%, so baseline is 3, but the description adds genuine meaning beyond the schema: the level-to-rate mapping (Explorer 4 ... Ultimate 9), that miles derive from base fare plus carrier surcharge excluding taxes, and the distance-band definitions. These clarify how price, level, and segs interrelate rather than merely restating fields.

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?

States a specific verb (Estimate) and resource (Flying Blue Miles and XP) scoped to Air France or KLM tickets, immediately telling an agent which of the many sibling airline calculators to use. It even disambiguates the AF/KL dual-branding with 'set airline to KL for KLM'.

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?

Gives concrete preconditions and unit guidance (price in EUR not USD, miles via calculate_flight_distance, one seg per one-way flight in order) and explains when the creditTo partner path applies. It routes to a sibling for distances but never explicitly frames when *not* to use this tool versus another airline's calculator.

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

calculate_frontier_milesFrontier Miles CalculatorB
Read-onlyIdempotent
Inspect

Estimate what a Frontier Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoFrontier Airlines Mastercard cardmember. none = No; FC = Yes (Cardmember rate).none
fareNoFare. BF = Basic Fare (basic rate); EC = Economy Bundle (bundle rate); PR = Premium Bundle (bundle rate); BZ = Business Bundle (bundle rate).BF
priceYesAmount paid to Frontier (fare, bundle, bags and seats; not taxes) in US dollars. Eligible Frontier purchases on this booking. Taxes and change or cancel fees do not earn.
statusNoYour Frontier status. Member = Member; Elite Silver = Elite Silver; Elite Gold = Elite Gold; Elite Platinum = Elite Platinum; Elite Diamond = Elite Diamond.Member

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds that the result is an estimate based on cwsi.net's calculator and published rules and is 'Unofficial' — useful context about reliability. It does not contradict the closed-world annotation despite mentioning an external calculator as methodology source.

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 front-loaded sentence that leads with the action and resource, followed by methodology and the 'Unofficial' caveat. No filler or repetition. Slightly dense parenthetical but nothing wasted.

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 values need not be described, and all four parameters are fully covered by the schema. For a self-contained pure-calculation tool, the description supplies the essentials (what it computes, methodology, unofficial status). Only the lack of routing versus sibling airline calculators leaves a minor gap.

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%, with enum meanings spelled out for card, fare, and status and a detailed note on what price includes/excludes. The description adds no parameter-level detail beyond this, so the baseline 3 for a fully documented schema is appropriate.

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 verb (estimate) and resource (what a Frontier Airlines ticket earns in miles/points plus status credit), so the agent immediately knows the output type. The airline specificity distinguishes it from the large sibling family of airline calculators. It does not, however, explicitly route against any named alternative.

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?

The description says what the tool does but never states when to pick it over a sibling or any prerequisite (e.g., must be a Frontier booking). With ~50 near-identical calculators, some routing guidance would materially help; none is given, leaving usage to be inferred from the tool name.

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

calculate_iberia_aviosIberia Club Avios and Elite Points CalculatorA
Read-onlyIdempotent
Inspect

Iberia Club Avios and Elite Points for an Iberia (IB) ticket. Avios = fare in EUR (fare plus carrier charges, no taxes, whole ticket) x tier factor (Clasica 5, Plata 6, Oro 7, Platino 8, Platino Prime 9; one more per euro when every flight is on the Madrid-Barcelona Air Shuttle, two more to or from Latin America). Elite Points = 1 per euro plus Extra Elite Points per flight by cabin, fare (Basic none; Optimal, Comfort, Flexible) and distance (up to or over 3,000 miles), with progress toward Plata, Oro, Platino and Platino Prime (ep and fl: Elite Points and flights so far). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them), the ISO country codes of its two airports, and from/to IATA airport codes: Iberia needs them to spot the Madrid-Barcelona Air Shuttle (MAD-BCN), which earns its own Avios and Extra Elite Points; without them that flight counts as an ordinary short flight. Uses cwsi.net's calculator and the airline's published rules. Give the price in EUR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
epNoElite Points you have since 1 April (optional). Used only for the progress toward the next tier.
flNoQualifying flights you have since 1 April (optional). Plata, Oro and Platino can also be reached with 20, 40 or 90 flights.
fareNoFare. B = Basic; O = Optimal; C = Comfort; F = Flexible. The fare brand on your booking. Basic earns no Extra Elite Points and is Economy only. On the Madrid-Barcelona Air Shuttle choose Comfort or Flexible. Executive is left out: Iberia's Extra Elite Points table does not list it (choose Basic to see the spend alone).O
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (Y, W, C) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tierNoYour Iberia Club tier. CL = Clásica (5 per euro); PL = Plata (6 per euro); OR = Oro (7 per euro); PT = Platino (8 per euro); PP = Platino Prime (9 per euro). Sets the Avios per euro. Infinita and Infinita Prime are not offered: Iberia does not publish their Avios rate.CL
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way for Extra Elite Points. The fare above is for the whole ticket either way.ow
cabinNoCabin. Y = Economy; W = Premium Economy (long haul); C = Business.Y
priceNoTicket fare in euros (whole trip) in EUR. The fare and carrier charges, without taxes and fees, for the whole ticket. Enter it in euros; Iberia converts a fare in another currency at the IATA rate on the day the ticket is issued. Required unless creditTo is given.
creditToNoCredit the flights to a partner program instead of Iberia's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights. No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.2/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 safety profile is covered. The description adds real behavioral context beyond them: it is unofficial, it mirrors cwsi.net's calculator and Iberia's published rules, Executive fare is excluded, Infinita tiers are unsupported, and omitting IATA codes silently degrades the Shuttle to an ordinary short flight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is one dense block that mixes earning formulas, eligibility caveats, and parameter instructions, so it is not cleanly front-loaded by task. Substantial content duplicates the schema's own enum descriptions (tier factors, fare brands, segs fields), which costs it efficiency rather than adding value.

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 12-parameter, nested-segment tool with an output schema, the description covers the earning model, the Shuttle special case, currency handling, and the partner-credit branch, so an agent has what it needs. Minor gaps remain around ordering/pagination of results, which the output schema likely handles.

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?

Schema coverage is 100%, so the baseline is 3, but the description genuinely extends it — the Avios/Elite Point formulas, the tier-per-euro mapping, and the consequence of missing from/to codes ('without them that flight counts as an ordinary short flight') add meaning the schema does not carry. The 'price in EUR, not US dollars' warning is also a useful semantic guardrail.

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?

States a specific verb and resource ('Iberia Club Avios and Elite Points for an Iberia (IB) ticket') and spells out the two outputs it computes. The airline and loyalty program are named explicitly, so an agent can separate it from the dozens of sibling calculate_*_miles tools without opening the schema.

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?

Gives clear operative context: segs must be one entry per one-way flight in order, and it routes the agent to calculate_flight_distance for the miles. It also frames the creditTo path (alaska vs Iberia's own program) and states what to leave out. It stops short of explicit when-not-to-use guidance, but the airline scoping makes alternatives obvious.

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

calculate_ita_airways_milesITA Airways Miles & More CalculatorA
Read-onlyIdempotent
Inspect

Miles & More miles, Points, Qualifying Points and HON Circle Points for flights operated by ITA Airways (ITA joined Star Alliance on 1 April 2026; its Volare program ended and ITA flights earn in Miles & More), by booking class. Within one European country and between European countries: fixed miles by class (European Domestic, European Cross-Border); worldwide: distance x class factor (25% to 200%) with a minimum per class. A, F, I, O, R and X earn nothing; E, G and N (Premium Economy) are listed for worldwide flights only. Points and Qualifying Points per flight by cabin, continental or intercontinental (Economy 20/60, Premium Economy 20/80, Business 40/200; HON Circle Points in Business only). Algeria, Egypt, Libya, Morocco and Tunisia count as Europe; set tc to EU or AS for Turkey, Cyprus, Georgia, Armenia, Azerbaijan, Kazakhstan and Russia. Miles & More says ITA miles go by ticket price or by booking class depending on how you book, and does not state which bookings earn by price; these are its booking-class rates. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
hpNoHON Circle Points you have this year (optional). Only applies to some choices of the other fields; ignored otherwise.
qpNoQualifying Points you have this year (optional).
tcNoTurkey, Cyprus, the Caucasus, Kazakhstan and Russia count as. EU = Europe; AS = Asia (outside Europe). These countries lie on two continents and Miles & More does not say which one it counts. Only applies to some choices of the other fields; ignored otherwise.EU
clsNoBooking class. C = C (Business 200%); D = D (Business 200%); J = J (Business 200%); Z = Z (Business 150%); P = P (Business 100%); E = E (Premium Economy 150%); G = G (Premium Economy 150%); N = N (Premium Economy 100%); Y = Y (Economy 150%); B = B (Economy 150%); H = H (Economy 100%); M = M (Economy 100%); U = U (Economy 100%); Q = Q (Economy 50%); S = S (Economy 50%); V = V (Economy 50%); W = W (Economy 50%); K = K (Economy 25%); L = L (Economy 25%); T = T (Economy 25%); A = A (earns nothing); F = F (earns nothing); I = I (earns nothing); O = O (earns nothing); R = R (earns nothing); X = X (earns nothing). The letter on your ticket. Business C, D, J, Z, P; Premium Economy E, G, N; the rest Economy. A, F, I, O, R and X earn nothing.M
ptsNoPoints you have this year (optional). Used only for the progress toward the next tier.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Miles & More status. MM = Member (no status); FT = Frequent Traveller; SE = Senator; HC = HON Circle. Used for the progress toward the next tier. The bonus of up to 50% more miles for status holders is not published as a rule, so it is not added.MM
creditToNoCredit the flights to a partner program instead of ITA Airways's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent, so the description is free to spend its words on real behavioral caveats and does: which classes earn nothing, which are Premium-Economy-only worldwide, the status bonus being deliberately not added because unpublished, the Miles & More price-vs-class ambiguity, the tc continent ambiguity, and that the source is unofficial (cwsi.net). This is exactly the beyond-annotation context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first clause, but the body is a single dense paragraph of semicolon-chained clauses mixing program history, earnings rules, geography exceptions and caveats. Some sentences (the segs structure, the A/F/I/O/R/X earn-nothing list) restate the schema, and the airline-history aside is lower value than the routing rules.

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 12-parameter tool with nested segs, an output schema and full schema coverage, the description covers the hard parts: segment shape, class outcomes, geography edge cases and the partner-program escape hatch. Gaps are minor, e.g. trip=rt behavior and status/points interplay are left entirely to the schema.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the North-Africa-counts-as-Europe rule for country classification, the fact that hp/qp/pts/status affect only tier progress, and that segs must be ordered one-way legs. It does not explain trip or the creditTo vs cls precedence in much depth, so it edges just above baseline rather than replacing the schema.

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?

States a specific resource (Miles & More miles, Points, Qualifying Points, HON Circle Points) for a specific airline (ITA Airways) and explains the program context (ITA joined Star Alliance, Volare ended) so it is unmistakable against the ~50 sibling airline calculators. Also names what is computed: fixed miles by class within Europe, distance x class factor worldwide.

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?

Gives concrete invocation guidance: segs must be one entry per one-way flight in order with great-circle miles, and it explicitly routes to calculate_flight_distance for those miles. It also frames the creditTo partner-program alternative and states the tool takes no price. It never explicitly says to use a different sibling for a different airline, but the airline-specific framing makes that implicit.

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

calculate_japan_airlines_milesJapan Airlines Miles and FLY ON Points CalculatorA
Read-onlyIdempotent
Inspect

Japan Airlines (JAL Mileage Bank): the flight miles, Mile-Up Bonus and FLY ON Points a JAL-operated itinerary earns. Flight miles = distance x class rate (30% to 150%; a Japan domestic sector on an international ticket uses its own table). FLY ON Points = flight miles x 2 within Japan, x 1.5 between Japan and Asia, Oceania or Vladivostok (cwsi.net's reading; JAL publishes no country list), x 1 otherwise, plus a 400-point flight bonus in most classes. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them), the ISO country codes of its two airports, and from/to IATA airport codes (needed to spot Vladivostok, VVO, which shares RU with the rest of Russia). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
clsNoBooking class. F = F (First 150%); A = A (First 150%); J = J (Business 125%); C = C (Business 125%); D = D (Business 125%); I = I (Business 125%); X = X (Business 70%); W = W (Premium Economy 100%); R = R (Premium Economy 100%); E = E (Premium Economy 70%); Y = Y (100%); B = B (100%); H = H (70%); K = K (70%); M = M (70%); L = L (50%); V = V (50%); S = S (50%); O = O (30%); Z = Z (30%); G = G (30%); Q = Q (30%); N = N (30%). The letter on your ticket. Japan domestic flights on the same ticket earn on JAL's domestic sector table, which uses other rates.Y
fopNoFLY ON Points you have this year (optional). Used only for the progress toward the next level.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour JAL level. NO = None; JG = JAL Global Club (+35%); CR = Crystal (+55%); SA = Sapphire (+105%); JP = JGC Premier (+105%); DI = Diamond (+130%). Sets the Mile-Up Bonus on flight miles. It does not add FLY ON Points.NO
creditToNoCredit the flights to a partner program instead of Japan Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description still adds real context: it declares itself 'Unofficial', flags that JAL publishes no country list and that the Asia/Oceania rate follows cwsi.net's reading, and notes 'Takes no price'. It does not describe output shape, but the output schema exists for that.

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?

Dense but front-loaded: the tool's scope leads, then the formulas, then input format. Sentences carry genuine domain information (rate bands, bonus structure, VVO edge case) rather than padding, though the description runs long enough that a little compression is possible.

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 9-parameter calculator with full schema coverage and an output schema, the description covers everything an agent needs: what it computes, the formula, the exact seg input contract, the Vladivostok caveat and the partner-credit switch. Nothing material 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?

Schema description coverage is 100% with 9 well-documented parameters, so the baseline is 3. The description restates the FLY ON formula and the VVO/Vladivostok rationale but adds little syntactic or semantic detail beyond what the schema already spells out for cls, status and creditTo.

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?

States a specific verb+resource: computing flight miles, Mile-Up Bonus and FLY ON Points for a JAL-operated itinerary. The JAL naming plus the JAL-specific FLY ON Points concept makes it trivially distinguishable from the ~50 sibling calculate_*_miles tools.

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?

Tells the agent exactly how to supply input (one seg per one-way flight, in order, with great-circle miles, ISO country codes and IATA codes) and routes to calculate_flight_distance for the distance values, plus 'leave creditTo out for the airline's own program'. No explicit when-not or sibling-alternative routing beyond creditTo, which keeps it below 5.

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

calculate_jetblue_pointsJetBlue TrueBlue CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a JetBlue ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with a JetBlue card. none = No; JB = JetBlue Card (+3 per $1); JP = Plus (+6 per $1); JBZ = Business (+6 per $1); JPR = Premier (+6 per $1).none
fareNoFare. base = Base (1 per $1); standard = Standard (3 per $1); flex = Flex (3 per $1). Every cabin is sold as Base, Standard or Flex.standard
cabinNoCabin. main = Main; evenmore = EvenMore; bluefirst = BlueFirst; mint = Mint.main
priceYesFare paid (before taxes and fees) in US dollars. Points and tiles are earned on the fare before taxes and fees.
directNoBooked on jetblue.com or the app. 1 = Yes; 0 = No (Travel agent or other site). Booking direct earns the same points again.1
statusNoYour TrueBlue status. General Member = General Member (No status); Mosaic 1 = Mosaic 1 (+3 per $1); Mosaic 2 = Mosaic 2 (+3 per $1); Mosaic 3 = Mosaic 3 (+4 per $1); Mosaic 4 = Mosaic 4 (+5 per $1).General Member

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive behavior, and a closed-world scope. The description adds meaningful context beyond those annotations by calling the result an estimate, citing cwsi.net and published airline rules, and labeling the tool 'Unofficial.'

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 with no redundant material. It efficiently covers the estimate, the earning dimensions, the source, and the unofficial caveat.

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 a fully documented schema, an output schema, and safety annotations, the description provides enough context to invoke the tool correctly. The only minor gap is that it does not explicitly frame usage relative to sibling fare/distance tools.

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 all six parameters are already documented with enums and meanings. The description adds no parameter-level detail beyond what the schema provides, which is sufficient for a baseline score of 3.

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 states a specific verb and resource: estimate what a JetBlue ticket earns in miles/points and status credit. The airline-specific name and the mention of JetBlue TrueBlue rules distinguish it from the many sibling calculators without needing to inspect the schema.

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 intended use is implied by 'Estimate what a JetBlue ticket earns,' but there is no explicit when-to-use guidance or comparison to alternatives such as calculate_flight_distance or compare_fare_classes. 'Unofficial' is a useful caveat, yet no exclusions or prerequisites are given.

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

calculate_korean_air_milesKorean Air SKYPASS Miles CalculatorA
Read-onlyIdempotent
Inspect

Korean Air SKYPASS miles (flight distance x booking class percentage, from Korean Air's current international fare table: Q and T 70%, V 110%, D, I, R and C 125%, J 135%, F 200%, other classes 100%) and flight points (1 per flight within Korea, 2 per international flight) for one or more Korean Air flights, with progress toward Morning Calm, Morning Calm Select, Morning Calm Premium and Million Miler. Flights within Korea earn flight points only here (the domestic mileage table is not covered). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
miNoMiles toward status so far (optional). Miles counted toward Morning Calm or Morning Calm Select in your current period. Used only for the progress. Only applies to some choices of the other fields; ignored otherwise.
clsNoBooking class. F = F (First Class, 200%); J = J (Prestige Flex, 135%); C = C (Prestige Plus, 125%); D = D (Prestige Standard, 125%); I = I (Prestige Standard, 125%); R = R (Prestige Standard, 125%); V = V (Premium Standard, Flex, 110%); W = W (Premium Standard, Flex, 100%); Y = Y (Economy Flex, 100%); B = B (Economy Flex, 100%); M = M (Economy Flex, 100%); S = S (Economy Standard, 100%); H = H (Economy Standard, 100%); E = E (Economy Standard, 100%); K = K (Economy Standard, 100%); L = L (Economy Saver, Standard, 100%); U = U (Economy Saver, Standard, 100%); Q = Q (Economy Saver, Standard, 70%); T = T (Economy Saver, Standard, 70%). The letter on your ticket. L, U, Q and T are sold as both Saver and Standard and earn the same either way.Y
ptsNoFlight points so far (optional). 1 point per Korean Air flight within Korea, 2 per international flight. Used only for the progress. Only applies to some choices of the other fields; ignored otherwise.
lifeNoLifetime Korean Air miles so far (optional). Miles flown on Korean Air and SkyTeam airlines since you joined. Used only for the progress toward Morning Calm Premium and Million Miler. Only applies to some choices of the other fields; ignored otherwise.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour SKYPASS tier. SK = SKYPASS Club; MC = Morning Calm; MS = Morning Calm Select; MP = Morning Calm Premium (Lifetime); MM = Million Miler (Lifetime).SK
creditToNoCredit the flights to a partner program instead of Korean Air's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.8/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, so the safety profile is carried structurally. The description adds genuinely useful behavior: the exact earning percentages per booking class, domestic-flight points treatment, the 'takes no price' boundary, and source provenance (cwsi.net, airline rules, unofficial). It stops short of explaining output shape or partner-program edge behavior, so 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single long sentence bundling the mileage table, points rules, and status tiers is dense and front-loads the core purpose well, but it is sprawling and mixes the earning formula, progress tracking, and sourcing caveats into one run-on. Functional but not tightly structured.

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 read-only calculator with a full 11-param schema and an output schema present, the description gives the essential context: the earning model, the flight-points distinction, status tiers, and the upstream distance dependency. It needn't explain return values since an output schema exists; the only minor gap is partner-credit behavior nuance, which the schema handles.

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 all 11 parameters in depth (cls enum, segs nested fields, creditTo statuses). The description adds only a little beyond that (restating the segs ordering requirement and the distance source), which matches the baseline-3 rule when the schema does the heavy lifting.

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?

States a specific verb+resource (Korean Air SKYPASS miles and flight points for one or more flights) and even enumerates the exact earning formula and table percentages. Among ~50 sibling calculate_*_miles tools, the airline-specific naming and the paired sibling calculate_flight_distance make its scope unambiguous.

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?

Effectively says when to use this over the distance tool by specifying 'one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them)', naming the upstream alternative and the required handoff. It also notes what it does not cover (domestic mileage table). No explicit 'do not use this for X' beyond that, so not a full 5.

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

calculate_lot_polish_airlines_milesLOT Polish Airlines Miles & More CalculatorA
Read-onlyIdempotent
Inspect

Miles & More miles, Points, Qualifying Points and HON Circle Points for flights operated and ticketed by LOT Polish Airlines (ticket number 080), by booking class. Within one European country and between European countries: fixed miles by class; international: distance x class factor (25% to 200%) with a minimum per class. I, J, N and X earn nothing. Points and Qualifying Points per flight by cabin, continental or intercontinental (Economy 20/60, Premium Economy 20/80, Business 40/200; HON Circle Points in Business only). Algeria, Egypt, Libya, Morocco and Tunisia count as Europe; set tc to EU or AS for Turkey, Cyprus, Georgia, Armenia, Azerbaijan, Kazakhstan and Russia. LOT flights booked through a Lufthansa Group channel earn by fare instead (calculate_lufthansa_miles). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
hpNoHON Circle Points you have this year (optional). Only applies to some choices of the other fields; ignored otherwise.
qpNoQualifying Points you have this year (optional).
tcNoTurkey, Cyprus, the Caucasus, Kazakhstan and Russia count as. EU = Europe; AS = Asia (outside Europe). These countries lie on two continents and Miles & More does not say which one it counts. Only applies to some choices of the other fields; ignored otherwise.EU
clsNoBooking class. C = C (Business 200%); D = D (Business 200%); F = F (Business 150%); Z = Z (Business 150%); P = P (Premium Economy 160%); A = A (Premium Economy 150%); R = R (Premium Economy 100%); Y = Y (Economy 150%); B = B (Economy 150%); M = M (Economy 100%); E = E (Economy 100%); H = H (Economy 100%); K = K (Economy 100%); Q = Q (Economy 100%); G = G (Economy 50%); S = S (Economy 50%); T = T (Economy 50%); V = V (Economy 50%); L = L (Economy 25%); O = O (Economy 25%); U = U (Economy 25%); W = W (Economy 25%); I = I (earns nothing); J = J (earns nothing); N = N (earns nothing); X = X (earns nothing). The letter on your ticket. Business C, D, F, Z; Premium Economy P, A, R; the rest Economy. I, J, N and X earn nothing.M
ptsNoPoints you have this year (optional). Used only for the progress toward the next tier.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Miles & More status. MM = Member (no status); FT = Frequent Traveller; SE = Senator; HC = HON Circle. Used for the progress toward the next tier. The bonus of up to 25% more miles for status holders is not published as a rule, so it is not added.MM
creditToNoCredit the flights to a partner program instead of LOT Polish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.5/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 is covered. The description adds genuinely useful context beyond that: it discloses the data source ('cwsi.net's calculator and the airline's published rules'), that it is 'Unofficial', and that it 'Takes no price', which matters for a 12-parameter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, which is good, but the body is a dense run-on that intermixes earning rules, currency exclusions, geography exceptions, parameter instructions and source disclaimers across many parenthetical clauses. Much of the class-by-class earning detail duplicates what is already in the cls enum, so the size is partly redundant rather than purely additive.

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?

An output schema exists, so return values need not be explained, and the description covers what remains: the earning model, the rerouting sibling, the segs input shape, the creditTo partner programs, and the source for great-circle miles. For a 12-parameter tool it is complete enough to invoke correctly.

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?

Schema description coverage is 100%, so the baseline is 3, and the schema itself already documents most parameters. The description still adds meaning the schema does not fully convey, notably the rationale for tc (Algeria/Egypt/Libya/Morocco/Tunisia count as Europe; set EU or AS for the two-continent countries) and the requirement that segs be one entry per one-way flight in order with great-circle miles.

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?

States a specific verb and resource: computing Miles & More miles, Points, Qualifying Points and HON Circle Points for flights operated and ticketed by LOT (ticket 080), by booking class. It also distinguishes itself from the sibling calculate_lufthansa_miles and even names the shared prerequisite calculate_flight_distance, so an agent can route without opening any schema.

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?

Explicit scope conditions ('operated and ticketed by LOT Polish Airlines (ticket number 080)'), an exclusion that reroutes the agent ('LOT flights booked through a Lufthansa Group channel earn by fare instead (calculate_lufthansa_miles)'), and a special-case note about tc for Turkey/Cyprus/etc. It also notes classes that earn nothing. Alternative paths are named, not implied.

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

calculate_lufthansa_milesLufthansa Group Miles & More CalculatorA
Read-onlyIdempotent
Inspect

Estimate the Miles & More award miles, Points, Qualifying Points and HON Circle Points for a Lufthansa, SWISS, Austrian or Brussels Airlines ticket. Award miles = fare in EUR x 4 (x 6 with Frequent Traveller, Senator or HON Circle status), at least 125 per flight. Points per flight by cabin: continental 20/20/40/40, intercontinental 60/80/200/400 (Economy/Premium Economy/Business/First). Give the one-way flights as segs, one entry per flight with the ISO country codes of its two airports (both on one continent = continental; Algeria, Egypt, Libya, Morocco and Tunisia count as Europe; for Turkey, Russia and other countries on two continents set kind to C or I), or give only the numbers of continental (cont) and intercontinental (icf) flights. Uses cwsi.net's calculator and the airline's published rules. Give the price in EUR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
hpNoHON Circle Points you have this year (optional). Only applies to some choices of the other fields; ignored otherwise.
opNoOperated by. LH = Lufthansa; LX = SWISS; OS = Austrian; SN = Brussels. All four earn the same with Miles & More.LH
qpNoQualifying Points you have this year (optional).
icfNoIntercontinental flights. One way. Airports on two different continents.
ptsNoPoints you have this year (optional). Used only for the progress toward the next tier.
contNoContinental flights. One way. Filled in from the airports above; you can also type it. Both airports on the same continent, including domestic flights.
segsNoThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip (same flights back). Round trip counts the same flights back. The fare above is for the whole ticket either way.ow
cabinNoCabin. Y = Economy; W = Premium Economy; C = Business; F = First.Y
priceNoFare in euros in EUR. In euros (EUR), for the whole ticket: the base fare plus the surcharges the airline adds, without government taxes and airport charges. Miles & More converts a fare in another currency to euros itself. This method is for tickets from a Lufthansa Group airline (numbers starting 220, 724, 257, 082 or 101, or Eurowings). Required unless creditTo is given.
statusNoYour Miles & More status. MM = Member (no status); FT = Frequent Traveller; SE = Senator; HC = HON Circle. Frequent Traveller, Senator and HON Circle earn 6 award miles per euro instead of 4.MM
creditToNoCredit the flights to a partner program instead of Lufthansa's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in op (LH: united, aeroplan; LX: united, aeroplan; OS: united, aeroplan; SN: united, aeroplan). Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses the calculation method: award miles are fare EUR x4 or x6 by status with a 125-mile minimum, and Points per flight vary by cabin and continental/intercontinental classification. It also notes the external source and that the tool is unofficial, which is valuable 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and calculation rules, and every sentence is relevant to a complex calculator. It is dense and repeats some schema content, but for a 15-parameter tool it remains appropriately sized.

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?

The description gives enough detail to call the tool correctly for the main Miles & More earning path, and the rich schema plus output schema fill in the rest. It does not mention the creditTo partner-program mode, but that alternate path is fully documented in the input schema.

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 all 15 parameters in detail. The description reinforces a few input rules, such as segs versus cont/icf and price in EUR, but mostly repeats information already present in the schema and adds little for optional fields like hp, qp, pts, or creditTo.

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 uses a specific verb, 'Estimate', and names the exact resource: Miles & More award miles, Points, Qualifying Points and HON Circle Points for a Lufthansa, SWISS, Austrian or Brussels Airlines ticket. This is clearly distinguishable from sibling airline calculators by airline group and loyalty program.

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 states the eligible airline ticket context, explains how to provide flights either via segs or via cont/icf counts, and warns to give the price in EUR rather than USD. It does not explicitly name when to use a different sibling calculator, but the airline-specific framing supplies clear usage context.

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

calculate_malaysia_airlines_enrich_pointsMalaysia Airlines Enrich Points and Elite Points CalculatorA
Read-onlyIdempotent
Inspect

Malaysia Airlines Enrich Points and Elite Points for a Malaysia Airlines ticket. Enrich Points = the fare in Malaysian Ringgit (MYR: base fare plus fuel surcharge and administration charge, no government taxes, whole ticket) x tier rate (Blue 1.5, Silver 1.8, Gold 2.2, Platinum 2.5), rounded down. Malaysia Airlines converts a fare in another currency itself and does not publish the rate, so give the MYR amount. Elite Points are fixed per flight by distance zone and cabin (Economy 1 to 10, Business Class 2 to 15, Business Suite 3 to 20), worked out only for a flight to or from Kuala Lumpur (KUL): Malaysia Airlines does not say how another flight is zoned, so it is shown as not worked out. Progress toward Silver (35), Gold (70) and Platinum (140) Elite Points in a calendar year; ep is the Elite Points so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them), the ISO country codes of its two airports, from and to IATA airport codes (needed for Elite Points) and optionally its own cabin (Y, C or S). Uses cwsi.net's calculator and the airline's published rules. Give the price in MYR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
epNoElite Points you have this calendar year (optional). Used only for the progress toward the next tier.
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (Y, C, S) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tierNoYour Enrich tier. BL = Blue (1.5 per MYR 1); SL = Silver (1.8 per MYR 1); GD = Gold (2.2 per MYR 1); PT = Platinum (2.5 per MYR 1). Sets the Enrich Points per MYR 1. Silver is oneworld Ruby, Gold is Sapphire and Platinum is Emerald.BL
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way for Elite Points. The fare above is for the whole ticket either way.ow
cabinNoCabin. Y = Economy; C = Business Class; S = Business Suite. Business Suite is the A350 suite product.Y
priceNoTicket fare in MYR (whole trip) in MYR. In Malaysian Ringgit: the base fare plus the fuel surcharge and administration charge, without government taxes and fees, for the whole ticket. Malaysia Airlines converts a fare paid in another currency itself and does not publish the rate. Required unless creditTo is given.
creditToNoCredit the flights to a partner program instead of Malaysia Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights. No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already establish a safe, idempotent, read-only calculation, and the description goes well beyond them: the exact formula (MYR fare x tier rate, rounded down), the KUL-only zoning rule and the fact that other flights are returned as 'not worked out', the calendar-year tier thresholds, and the 'Unofficial' provenance note. That is meaningful behavioral context an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the points formula, which is the right lead, and it contains little pure filler. However it is a single dense run-on block with no structure, and it repeats schema content (tier multipliers, the definition of price) that the parameter descriptions already carry.

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 10-parameter tool the description covers the calculation rules, the currency requirement, the geographic restriction on Elite Points, the per-segment input contract, and the tool it depends on; an output schema exists so return values need not be described. The only omission is the partner-credit path, which the creditTo schema description fully documents.

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?

Schema description coverage is 100%, so a 3 is the baseline, and the description does add value on top: it fixes the unit and composition of price (base fare + fuel surcharge + admin charge, no taxes, whole ticket), explains segs ordering and its optional per-flight cabin, and points to calculate_flight_distance for miles. It leaves the creditTo/creditClass/creditStatus partner-crediting mode entirely to the schema.

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?

States a specific verb and resource ('Malaysia Airlines Enrich Points and Elite Points for a Malaysia Airlines ticket') and immediately scopes it to one airline, which separates it from the ~50 sibling calculate_*_miles tools. It also names its dependency (calculate_flight_distance supplies the miles), so an agent knows exactly what this tool does and what it needs.

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?

Gives real usage constraints: give the fare in MYR not USD (the airline converts foreign-currency fares itself and does not publish the rate), Elite Points are only computed for flights to/from KUL, and segs must be one entry per one-way flight in order. It does not explicitly frame when to prefer this over a sibling or over the partner-credit path, so it stops short of an explicit when/when-not statement.

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

calculate_qantas_pointsQantas Points and Status Credits CalculatorA
Read-onlyIdempotent
Inspect

Qantas Points and Status Credits for flights marketed by Qantas (QF), from Qantas's earning tables: a fixed amount per flight by route table (or distance band) and earn category (cat; get_fare_classes for QF shows which booking classes fall in each category), plus the Status Bonus (points only) and the Minimum Points Guarantee. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them), the ISO country codes of its two airports, and from/to IATA airport codes: Qantas picks its route tables (Sydney to London, Perth to Singapore, Sydney to Dallas and so on) from the airports, so without from/to a flight such as Australia to Europe falls back to the distance band. For the USA and Canada, which Qantas splits into East and West Coast tables without listing cities, set table on that flight (for example EWC or EEC); table BND forces the distance band. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
scNoStatus Credits you have so far (optional). Used only for the progress toward the next tier.
catNoEarn category. DE = Discount Economy (E N O Q; dom. E G L M N O Q S V); EC = Economy (G K L M S V); FE = Flexible Economy (B H Y; dom. B H K Y); DPE = Discount Premium Economy (T; dom. T); PE = Premium Economy (R; dom. R); FPE = Flexible Premium Economy (W; dom. W); DB = Discount Business (I); BU = Business (D; dom. D I); FB = Flexible Business (C J; dom. C J); FI = First (A F). The fare type on your ticket. Under each: the international booking classes, then the classes on flights within Australia (dom.). On domestic flights there is no Discount Business; class I is Business.EC
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional table, the key of a route table for that flight (ENZ, EAS, EHI, EIN, EJB, ESC, EDF, EWC, EEC, WSE, WNE, WDX, WEU, WJB, NDF, NSC, NEC, DEC, DWC, CWC, XEU, UAS, THK, BND); optional from and to, the IATA codes of its two airports, which label the breakdown and pick the route tables named by airport.
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Qantas Frequent Flyer tier. BR = Bronze; SV = Silver (+50% points); GD = Gold (+75% points); PL = Platinum (+100% points); P1 = Platinum One (+100% points). The Status Bonus adds Qantas Points, never Status Credits.BR
creditToNoCredit the flights to a partner program instead of Qantas's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds meaningful context beyond that: it takes no price input, is sourced from cwsi.net's calculator plus the airline's published rules, and is explicitly 'Unofficial' — a provenance disclosure that matters for trust.

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?

Purpose is front-loaded and the dense parentheticals each carry information (sibling routing, table-selection rationale, examples of airport-named route tables). It is long, but the complexity of the segs structure and 24-value table enum largely justifies the length; only mild redundancy against the schema's own table enumeration.

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?

An output schema exists, so return values need not be explained. The description covers the Qantas-specific earning model, the segs ordering requirement, the partner-program override path (creditTo/creditClass/creditFlights), and the caveats an agent needs to call the tool correctly.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains why from/to matter (Qantas derives its route tables from airports, otherwise it falls back to the distance band) and when table must be set manually (the East/West Coast USA/Canada split), which is not obvious from the enum alone.

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?

States a specific verb and resource ('Qantas Points and Status Credits for flights marketed by Qantas') and names the earning mechanics (route table/distance band, earn category, Status Bonus, Minimum Points Guarantee). This distinguishes it cleanly from the many sibling airline calculators that share the same naming shape.

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?

Gives clear operational context: only for Qantas-marketed (QF) flights, routes the agent to get_fare_classes for booking-class-to-category mapping and calculate_flight_distance for miles, and explains when route tables vs distance band apply. It does not explicitly state when to prefer a different airline's calculator, so it stops short of full when/when-not coverage.

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

calculate_qatar_airways_aviosQatar Airways Privilege Club Avios CalculatorA
Read-onlyIdempotent
Inspect

Qatar Airways Privilege Club Avios for flights Qatar Airways sells and operates. Avios = distance x booking-class % (F, A 300; C, J 200; I, D 175; R 125; P 75; H, B, Y 100; S, V, L, M, K 75; O, T, Q, N, G 50; W 25), plus a tier bonus of 25% (Silver), 75% (Gold) or 100% (Platinum) of the distance, rounded per flight. Qpoints are not calculated (Qatar Airways publishes them only in its own calculator). Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
clsNoBooking class. FA = F, A (First Elite, 300%); CJ = C, J (Business Elite, 200%); ID = I, D (Business Comfort, 175%); R = R (Business Classic, 125%); P = P (Business Lite, 75%); HBY = H, B, Y (Economy Comfort, 100%); SVLMK = S, V, L, M, K (Economy Convenience, 75%); OTQN = O, T, Q, N (Economy Classic, 50%); G = G (Economy Group, 50%); W = W (Economy Lite, 25%). The letter on your ticket. The percentage is of the distance flown.HBY
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Privilege Club tier. BU = Burgundy; SI = Silver (+25% flown); GO = Gold (+75% flown); PL = Platinum (+100% flown). The tier bonus is paid on flights marketed and operated by Qatar Airways.BU
creditToNoCredit the flights to a partner program instead of Qatar Airways's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

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 and closed-world, so safety is covered. The description adds genuinely useful behavioral context beyond that: Qpoints are not calculated, no price is taken, it relies on cwsi.net's calculator and published rules, and it is explicitly 'Unofficial' – all caveats an agent would otherwise not know.

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?

Front-loads the earning rule and then the input instructions; the parenthetical class list mirrors the schema enum but is compact. Slightly dense, yet every sentence contributes and nothing is padded.

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 an output schema present, return values need not be explained, and the description covers the input contract, tier/class semantics, partner-credit path and the Qpoints limitation. For an 8-parameter tool it is nearly complete, missing only explicit sibling routing or edge-case handling (e.g. codeshares).

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 cls percentages, segs fields, status bonuses and creditTo partner names. The description largely restates the formula and parameter roles rather than adding syntax or defaults beyond what the schema provides, so the 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?

States a specific verb+resource (calculating Qatar Airways Privilege Club Avios) and discloses the exact earning formula, so the agent knows precisely what it computes. Distinguishable from the Avios siblings (British Airways, Iberia, Finnair) because the airline and its rules are named.

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?

Gives clear context: supply segs in flight order with great-circle miles from calculate_flight_distance, one entry per one-way leg, and creditTo/creditFlights for partner programs. It does not spell out when to prefer this tool over a sibling Avios calculator or when-not (e.g. codeshare flights), so it stops short of explicit exclusions.

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

calculate_royal_air_maroc_milesRoyal Air Maroc Safar Flyer CalculatorA
Read-onlyIdempotent
Inspect

Royal Air Maroc Safar Flyer Award Miles, Status Miles and Status Flights for Royal Air Maroc flights. Award Miles = distance x fare family % (fam: Eco Essential 50, Eco Classic 100, Family Classic 100, Eco Flex 150, Biz Classic 150, Biz Flex 200), rounded down per flight; Status Miles are the same. The Silver, Gold and Platinum bonus (50%, 75%, 100%) adds Award Miles only. Royal Air Maroc publishes no minimum for short flights, so none is applied, and no fare-family weighting for Status Flights, so each flight counts as one. Set noearn to Y for an award, Cash and Miles or E-class-without-luggage ticket (earns nothing). Progress toward Silver (20,000 Status Miles or 15 Status Flights), Gold (35,000 or 30) and Platinum (75,000 or 75) in a calendar year; qm and qf are the totals so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qfNoStatus Flights you have this calendar year (optional). Each flight flown counts as one.
qmNoStatus Miles you have this calendar year (optional). Used only for the progress toward the next Safar Flyer status.
famNoFare family. EE = Eco Essential (Economy, 50%); EC = Eco Classic (Economy, 100%); FC = Family Classic (Economy, 100%); EF = Eco Flex (Economy, 150%); BC = Biz Classic (Business, 150%); BF = Biz Flex (Business, 200%). The fare family on your Royal Air Maroc ticket. Eco Essential earns half the distance; Biz Flex earns double.EC
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
noearnNoIs it an award ticket, a Cash and Miles ticket or an E class booking without luggage?. N = No; Y = Yes (earns nothing). Royal Air Maroc says these earn no Miles. Choose No if you do not know.N
statusNoYour Safar Flyer status. BL = Blue or not yet a member; SI = Silver (+50%); GO = Gold (+75%); PL = Platinum (+100%). The Silver, Gold and Platinum bonus is paid on Award Miles for Royal Air Maroc flights; it does not count toward status.BL
creditToNoCredit the flights to a partner program instead of Royal Air Maroc's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare this as a read-only, idempotent, non-destructive calculator. The description goes well beyond that by disclosing the exact earning formula, per-flight rounding, that no minimum applies, that Status Flights are not fare-family weighted, that status bonuses apply only to Award Miles, the noearn exception cases, and that the tool is unofficial and uses cwsi.net and published rules.

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 description is front-loaded with purpose and core formula, then flows into rules and parameter guidance. It is dense and long, but the complexity of an 11-parameter airline earning calculator largely justifies the length. A few details repeat the schema's enum descriptions (e.g., fare-family percentages), which slightly reduces efficiency.

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?

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description supplies the remaining critical context: calculation rules, rounding, status thresholds, noearn exceptions, partner crediting behavior, ordering requirement for segs, and an unofficial-data caveat. An agent has enough to invoke the tool correctly.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond individual schema fields by explaining the cross-parameter formula (distance × fare family %, rounded per flight), how status bonuses interact with Award Miles only, and that qm and qf are year-to-date totals. Some enum details duplicate the schema, but the computational relationship adds valuable semantics.

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 states a specific verb (calculates Award Miles, Status Miles and Status Flights) and resource (Royal Air Maroc Safar Flyer) with clear scope (Royal Air Maroc flights). It distinguishes itself from sibling airline calculators by naming the airline and loyalty program, and it explicitly names calculate_flight_distance as a helper.

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?

The description explains when to set noearn to Y, when the status bonus applies, and how to use creditTo for partner programs versus leaving it out for Royal Air Maroc's own program. It does not explicitly name alternative sibling calculators or state 'do not use for other airlines,' but the first sentence and tool name make the intended use clear.

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

calculate_royal_jordanian_milesRoyal Jordanian Royal Club CalculatorA
Read-onlyIdempotent
Inspect

Royal Jordanian Royal Club Award Miles and segments for Royal Jordanian flights. Award Miles = distance x a % set by the fare family (fam: Economy Saver, Economy Plus, Economy Flexi, Business Saver, Business Plus, Business Flexi) and the tier (Bronze Sunbird 50% to 200%, up to Platinum Hawk 125% to 275%), rounded down, no minimum. Each flight counts 1 segment (0.5 between Amman and Aqaba or Tel Aviv, which needs from and to). Set noearn to Y for an award ticket or one at a 50% discount or more (earns nothing). Tier Miles are not calculated. Progress toward Silver Jay (14 segments), Gold Sparrow (30) and Platinum Hawk (46) in 12 months; qs is the segments so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qsNoSegments you have in the last 12 months (optional). Used only for the progress toward the next Royal Club tier. Amman-Aqaba and Amman-Tel Aviv count half.
famNoFare family. ES = Economy Saver (Economy, classes O, P, W); EP = Economy Plus (Economy, classes L, V, S, N, Q); EF = Economy Flexi (Economy, classes Y, B, H, K, M); BS = Business Saver (Business, classes I, Z); BP = Business Plus (Business, classes C, D); BF = Business Flexi (Business, classes J). The fare family on your Royal Jordanian ticket. The booking classes shown are as listed in Royal Jordanian's Tier Miles table; its Award Miles table names the families without letters, so the match is by family name (our reading).EP
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
noearnNoIs it an award ticket or a ticket at a 50% discount or more?. N = No; Y = Yes (earns nothing). Royal Jordanian says these tickets earn no Award Miles or Tier Miles. Choose No if you do not know.N
statusNoYour Royal Club tier. BR = Bronze Sunbird; SI = Silver Jay (+25 points); GO = Gold Sparrow (+50 points); PL = Platinum Hawk (+75 points). The tier is built into the percentage: each step up adds 25 points to the fare family's percentage.BR
creditToNoCredit the flights to a partner program instead of Royal Jordanian's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as read-only/idempotent/non-destructive, and the description adds valuable context beyond them: the source ('cwsi.net's calculator and the airline's published rules') and its unofficial status, the rounding-down-with-no-minimum rule, the 0.5-segment exception for Amman–Aqaba/Tel Aviv, and the fact that Tier Miles are not returned. It does not discuss confidence/precision caveats for the fare-family-to-booking-class mapping, which it admits is 'our reading.'

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 earning formula is front-loaded and each subsequent sentence carries a distinct rule (segments, noearn, tier progress, segs format). It is dense with minor redundancy — the segs entry rules and the Amman–Aqaba/Tel Aviv exception are stated in several places — but almost every sentence earns its place for a rule-heavy calculator.

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?

With an output schema present, the description need not explain return values, and it fully covers the input complexity: the fare-family/tier rate model, segment counting, the eligibility flag, tier-progress semantics, and the partner-crediting path. Nothing an agent needs to invoke this 10-parameter, rule-heavy tool correctly is missing.

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?

Schema description coverage is 100%, so the baseline is 3; the description earns an extra point by adding meaning the schema lacks, such as the percentage ranges per fare family and tier (50%–200% Bronze to 125%–275% Platinum Hawk), the half-segment rule, and that noearn Y means 'earns nothing.' It does not, however, explain how the creditTo/creditStatus/creditClass trio interacts beyond what the schema already states.

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+resource: 'Royal Jordanian Royal Club Award Miles and segments for Royal Jordanian flights,' which immediately distinguishes it from the ~50 sibling calculate_*_miles tools. It also names what it explicitly does not compute ('Tier Miles are not calculated') and defers segment-distance computation to calculate_flight_distance, further sharpening its scope.

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 clear operating conditions: use fare family + tier to derive the earn rate, set noearn=Y for award or ≥50% discount tickets, and use qs only for tier progress. It also routes to creditTo for partner programs versus leaving it out for Royal Jordanian's own program. It stops short of naming alternatives (e.g., compare_fare_classes) when a user is deciding which fare family to credit.

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

calculate_sas_pointsSAS EuroBonus Points CalculatorA
Read-onlyIdempotent
Inspect

SAS EuroBonus Level points and Bonus points for SAS flights: a fixed number per flight by route zone, ticket type (fare: Light, Standard, Flex, Premium, Premium Flex, Business, Business Flex) and booking class (cls), from SAS's tables. Zones: Domestic (both airports in one of Denmark, Norway, Sweden), Scandinavia, Europe, and three long-haul tables by city (Boston, New York, Toronto; Beijing, Atlanta, Chicago, Washington, Mumbai; Bangkok, Seoul, Tokyo, Miami, Los Angeles, San Francisco, Seattle); other long-haul routes are not priced. Silver, Gold and Diamond add 25%, 50% or 75% to Bonus points only. Progress toward Silver (20,000), Gold (45,000) and Diamond (90,000) Level points or 10 / 45 / 90 qualifying flights; lp and qf are the totals so far. Give segs: one entry per one-way flight, in order, with the ISO country codes of its two airports and from/to IATA airport codes (needed for the long-haul tables, which SAS names by city); no miles: distance does not matter on SAS. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
lpNoLevel points you have so far (optional). Used only for the progress toward Silver, Gold and Diamond.
qfNoQualifying flights you have so far (optional). Used only for the qualifying flights count.
clsNoBooking class. C = C; D = D; Z = Z; J = J; A = A; P = P; B = B; S = S; Y = Y; E = E; H = H; M = M; Q = Q; W = W; G = G; K = K; L = L; N = N; O = O; R = R; T = T; U = U; V = V. The letter on your ticket. The same letter is sold under several ticket types, so choose both.M
fareNoTicket type. L = Light; S = Standard; F = Flex; P = Premium; PF = Premium Flex; B = Business; BF = Business Flex. As shown on your booking. SAS's tables list Premium tickets on domestic flights, Business on flights within Scandinavia and Europe, and both on long-haul flights.S
segsNoThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour EuroBonus level. M = Member; S = Silver (+25% Bonus points); G = Gold (+50% Bonus points); D = Diamond (+75% Bonus points).M
creditToNoCredit the flights to a partner program instead of SAS's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). Give the flights as creditFlights (one entry per flight with its great-circle miles).
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/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 safety is covered. The description adds real behavioral context the annotations can't: it discloses the data source ('cwsi.net's calculator and the airline's published rules'), the unofficial status, that status tiers boost Bonus points only, and that creditTo switches to distance-based partner earning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the text is one dense run-on block and repeats enum values already enumerated in the schema (Light/Standard/Flex/Premium/Premium Flex/Business/Business Flex, and the cls letter list). Several clauses earn their place (zones, unpriced routes), but the redundancy and sprawl cost it.

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 values need no explanation, and the description still covers the zone definitions, the creditTo partner path, and edge cases like unpriced long-haul routes - enough for an agent to call an 11-parameter tool correctly. Minor gaps remain on the exact effect of trip=rt beyond 'counts the same flights back'.

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 is already documented in the schema, including cls, fare, status, and the segment fields. The description largely restates that same content (fare names, status percentages), adding only marginal interpretation such as 'distance does not matter on SAS'. Baseline 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?

States a specific verb and resource: computing SAS EuroBonus Level points and Bonus points for SAS flights, with the exact factors (route zone, fare, booking class). It reads distinctly from the ~50 sibling airline calculators because it names the airline program and its own earning rule (fixed per flight, not distance-based).

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?

Gives clear context and an explicit exclusion: 'other long-haul routes are not priced', the defined zone set, and 'no miles: distance does not matter on SAS', which routes the agent away from distance-based siblings. It never names a specific alternative tool to switch to for unpriced routes, which keeps it 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.

calculate_shenzhen_airlines_milesShenzhen Airlines PhoenixMiles CalculatorA
Read-onlyIdempotent
Inspect

Shenzhen Airlines PhoenixMiles mileage (in kilometres) and qualifying segments for Shenzhen Airlines flights. PhoenixMiles is the Air China group programme (calculate_air_china_miles covers Air China flights). Mileage = distance in km (the great-circle miles x 1.609344; PhoenixMiles uses the IATA distance) x booking-class % (25% to 300%), at least 800 km in Business (J, C, D, Z, R) and 500 in Premium Economy and Economy; where Shenzhen prints two rates (J, R, B, U), the first is a flight within Mainland China (both airports CN) and the second an international or regional flight. Classes I, X and N earn nothing. The 25/30/50% elite bonus is a note only, and the flight is not added to the progress (PhoenixMiles does not say whether qualifying kilometres equal the mileage earned). Cards need Silver 40,000, Gold 80,000 or Platinum 160,000 qualifying km, or 25 / 40 / 90 qualifying segments, in 12 months; qk and qs are the member's own totals so far, used only for the progress. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
qkNoQualifying kilometres you have in the last 12 months (optional). Used only for the progress toward the next card; the flight is not added.
qsNoQualifying segments you have in the last 12 months (optional). Segments can be fractions, for example 1.1 in Y. Used only for the progress toward the next card; the flight is not added.
clsNoBooking class. J = J (Business 300% / 250%); C = C (Business 200%); D = D (Business 150%); Z = Z (Business 125%); R = R (Business 110% / 125%); G = G (Premium Economy 110%); E = E (Premium Economy 90%); Y = Y (Economy 110%); B = B (Economy 100% / 110%); M = M (Economy 100%); U = U (Economy 100% / 75%); H = H (Economy 75%); Q = Q (Economy 75%); V = V (Economy 75%); W = W (Economy 50%); S = S (Economy 50%); T = T (Economy 50%); L = L (Economy 25%); K = K (Economy 25%); P = P (Economy 25%); A = A (Economy 25%); I = I (earns nothing); X = X (earns nothing); N = N (earns nothing). The letter on your Shenzhen Airlines ticket. A class with two percentages pays the first on flights within Mainland China and the second on international and regional flights.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour PhoenixMiles card. NO = Not an elite member; SI = Silver (+25%); GO = Gold (+30%); PL = Platinum (+50%). Elite members earn extra mileage on Air China group flights. It is shown as a note, not added, because PhoenixMiles does not say what it is a percentage of.NO
creditToNoCredit the flights to a partner program instead of Shenzhen Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

With annotations covering the safety profile (readOnly, idempotent, non-destructive, closed-world), the description adds substantial behavioral context: the earning formula, floor minimums (800 km Business, 500 PE/Economy), the domestic-vs-international dual-rate rule, classes that earn nothing, the elite bonus being note-only, card thresholds, and the 'Unofficial' sourcing caveat. This goes well beyond the annotations, though return-format behavior is left to the output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the body is a dense run-on paragraph that heavily duplicates information already in the schema (full class percentage tables, the segs field layout). Much of this does not earn its place given 100% schema coverage, weakening overall conciseness despite a solid opening.

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 10-parameter calculation tool with a rich schema and an output schema present, the description supplies the domain rules an agent needs (formula, minimums, elite bonus semantics, card thresholds) and an unofficial-source caveat. Completeness is high; the only gap is that return values are rightly delegated to the output schema.

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 baseline is 3 and the schema already documents every parameter including the class percentages and segs structure. The description largely restates schema content (class lists, percentage tables, seg fields) rather than adding new per-parameter meaning, so it does not rise above the baseline.

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?

States a specific verb and resource ('calculates Shenzhen Airlines PhoenixMiles mileage in kilometres and qualifying segments for Shenzhen Airlines flights') and explicitly differentiates from the sibling calculate_air_china_miles by naming it and its scope. An agent can distinguish these two Air China group tools without opening either schema.

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?

Provides clear context for when this applies (Shenzhen Airlines flights, PhoenixMiles programme) and routes to the Air China variant for Air China flights, plus describes the creditTo partner-programme alternative. It stops short of explicit when-not/exclusion language for edge cases, but the sibling routing and programme scoping are strong.

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

calculate_singapore_airlines_milesSingapore Airlines KrisFlyer Miles CalculatorA
Read-onlyIdempotent
Inspect

Estimate the KrisFlyer miles and Elite miles a Singapore Airlines flight earns. Miles = great-circle miles x booking class % (F/A 200; Z/C/J 150; U, D 125; S/T 125; L/P, R 100; Y/B/E 100; M/H/W 75; Q/N, V/K, G 50). Elite miles use the same %. Elite Silver and PPS Club add 25% of miles flown (not on Q, N, V, K, G); Elite Gold gets none here, as Singapore Airlines publishes no figure for it; tier bonuses are not Elite miles. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
emNoElite miles you have so far (optional). Used only for the progress toward Elite Silver and Elite Gold.
clsNoBooking class. FA = F, A (Suites / First, 200%); ZCJ = Z, C, J (Business Flexi, 150%); U = U (Business Standard, 125%); D = D (Business Lite, 125%); ST = S, T (Premium Economy Flexi, 125%); LP = L, P (Premium Economy Standard, 100%); R = R (Premium Economy Lite, 100%); YBE = Y, B, E (Economy Flexi, 100%); MHW = M, H, W (Economy Standard, 75%); QN = Q, N (Economy Value, 50%); VK = V, K (Economy Lite, 50%); G = G (Economy (group fares), 50%). The letter on your ticket. The percentage is of the miles flown.YBE
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour KrisFlyer tier. KF = KrisFlyer; ES = Elite Silver (+25% flown); EG = Elite Gold; PPS = PPS Club (+25% flown); SOL = Solitaire PPS (+25% flown).KF
creditToNoCredit the flights to a partner program instead of Singapore Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare a safe read-only, idempotent operation, so the bar is lower, yet the description adds real behavioral context: it runs on cwsi.net's calculator plus the airline's published rules, is explicitly Unofficial, Elite Silver/PPS bonuses do not apply on Q/N/V/K/G, Elite Gold has no published figure, and tier bonuses are not Elite miles. These caveats materially affect interpretation of the result.

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?

Front-loads purpose before the rate table and dependency note, which is the right shape for an agent. It is dense and the booking-class percentages largely duplicate the 100%-covered enum descriptions, so a small amount of the text is redundant, but nothing is misleading or filler.

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?

An output schema exists, so return values need not be explained. The description covers the earning model, the required input geometry, the upstream distance dependency, the partner-credit branch, and the unofficial-data caveat, leaving no material gap for correct invocation.

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?

Schema description coverage is 100%, so the baseline is 3, but the description reinforces the class-percentage model (F/A 200 down to G 50) and clarifies the cls/creditClass and segs/creditFlights defaults plus the 'no price' constraint, adding interpretive value beyond the raw field docs.

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?

States a specific verb and resource ('Estimate the KrisFlyer miles and Elite miles a Singapore Airlines flight earns') and scopes it to one carrier, which is exactly what distinguishes it from the ~50 sibling calculate_*_miles tools. An agent can route correctly from the name plus first sentence 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?

Tells the agent what inputs are required (segs with great-circle miles, ordered one-way flights) and explicitly points at calculate_flight_distance as the source of the distance values, plus notes 'Takes no price.' It does not state when to prefer a different carrier calculator or how partner crediting interacts with the sibling airline tools, so it stops short of full when/when-not guidance.

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

calculate_south_african_airways_milesSouth African Airways Voyager Miles CalculatorA
Read-onlyIdempotent
Inspect

South African Airways Voyager miles for a flight South African Airways operates, from the published base fare plus carrier-imposed fees in South African rand (ZAR, no taxes): 1 Voyager mile per R1.60, rounded down. Give the ZAR amount for the flight (Voyager pro-rates a ticket over its sectors). The class-of-service bonus and the Silver 25%, Gold 50% and Platinum 75% tier bonus are not calculated (not published as a rate on these miles); Silver, Gold and Platinum need 20,000, 45,000 and 95,000 tier miles in a calendar year. Uses cwsi.net's calculator and the airline's published rules. Give the price in ZAR, not US dollars. Unofficial.

NameRequiredDescriptionDefault
priceNoBase fare and carrier fees (ZAR) in ZAR. In rand: the published base fare plus carrier-imposed fees, without taxes. Type the amount, with R or ZAR before it if you like (R1,500). Required unless creditTo is given.
creditToNoCredit the flights to a partner program instead of South African Airways's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior5/5

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

Annotations already cover the read-only, idempotent, non-destructive, non-open-world profile, so the description correctly focuses on calculation behavior. It discloses the earning rate, rounding, excluded class-of-service and tier bonuses, tier-mile thresholds, data source (cwsi.net plus published airline rules), and its unofficial status. That is rich context beyond what the annotations provide.

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 description is front-loaded with the core calculation rule and stays reasonably compact. Some detail, such as the calendar-year tier-mile thresholds, is tangential to the actual calculation and could be trimmed, but the overall structure is efficient and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the primary SAA Voyager calculation, exclusions, and input currency. However, it entirely omits the partner-credit mode exposed by creditTo, creditClass, creditStatus, and creditFlights, which is a major second usage path in the schema. With an output schema present, return values need no explanation, but the dual-mode input behavior is a notable gap.

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 baseline is 3. The description adds modest meaning for price by saying it must be in ZAR and that Voyager pro-rates a ticket over sectors, but it adds nothing about the creditTo, creditClass, creditStatus, or creditFlights parameters, which the schema documents extensively. It also omits the conditional requirement that price is needed only without creditTo.

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 the specific airline program (South African Airways Voyager miles), the qualifying flight type (SAA-operated), and the exact earning basis (published base fare plus carrier-imposed fees in ZAR, 1 mile per R1.60 rounded down). This distinguishes it from the many sibling airline mileage calculators without needing to open the schema.

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?

It implies the tool is for SAA-operated flights and gives input instructions such as 'Give the ZAR amount' and 'Give the price in ZAR, not US dollars.' However, it never explicitly says when to use this tool versus other airline calculators or versus calculate_flight_distance, nor does it state when not to use it. No alternatives are named.

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

calculate_southwest_pointsSouthwest Rapid Rewards CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Southwest Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with a Southwest card. none = No; PL = Plus (+2 per $1); PR = Premier (+3 per $1); PY = Priority (+4 per $1).none
fareNoFare type. CE = Choice Extra (14 per $1); CP = Choice Preferred (10 per $1); CH = Choice (6 per $1); BA = Basic (2 per $1).CH
priceYesTicket price (base fare, without taxes and fees) in US dollars. Shown on your receipt as the base fare, before taxes and fees.
statusNoYour Rapid Rewards status. Base = Base (No status); A-List = A-List (+25%); A-List Preferred = A-List Preferred (+100%).Base
flightsNoFlights on this ticket. A-List also needs 20 flights (A-List Preferred 40), counted in place of points.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful caveat — 'Unofficial' — signaling the result is an estimate, not an official carrier figure. It stops short of saying whether output is deterministic or how results should be interpreted.

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?

Two short sentences with the purpose front-loaded and no filler; the one-word 'Unofficial.' fragment is terse and earns its place, though the parenthetical 'miles or points, and status credit where it applies' is slightly hedgy.

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 (return values need not be described), annotations carry the safety profile, and the schema fully documents inputs, so the description only needs to frame scope and reliability. It does so with the data-source note and unofficial disclaimer, leaving only when-to-use unspecified.

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%, with all five parameters, three enums, and per-value multipliers documented in the schema itself. The description adds no parameter-level meaning (it does not explain the base-fare vs. taxes distinction beyond what the schema says), so the 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?

States a specific verb (estimate) plus the exact resource (what a Southwest Airlines ticket earns in miles/points and status credit). The airline name alone cleanly separates it from the ~50 sibling calculate_*_miles/points tools.

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?

There is no guidance on when to call this versus compare_fare_classes, get_fare_classes, or calculate_flight_distance, and no exclusions or prerequisites. The only context offered is the data source ('cwsi.net's calculator and the airline's published rules'), which is not a usage condition.

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

calculate_srilankan_airlines_milesSriLankan Airlines FlySmiLes Miles CalculatorA
Read-onlyIdempotent
Inspect

SriLankan Airlines FlySmiLes miles for SriLankan Airlines flights. Miles = distance x booking-class % (J 225; C 200; D 175; I, Y, B, P, H 150; K, W, M, E 125; L, R, V, S 100; N, Q, O 60; G 50), rounded down, no minimum; T, U, X, Z, A and F are not listed. The 25% Platinum and 15% Gold bonus is a note only (SriLankan does not say what it is a share of), and tier miles are not calculated. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
clsNoBooking class. J = J (Business Flex 225%); C = C (Business Semi Flex 200%); D = D (Business Value 175%); I = I (Business Saver 150%); Y = Y (Economy Flex 150%); B = B (Economy Flex 150%); P = P (Economy Flex 150%); H = H (Economy Flex 150%); K = K (Economy Semi Flex 125%); W = W (Economy Semi Flex 125%); M = M (Economy Semi Flex 125%); E = E (Economy Semi Flex 125%); L = L (Economy Value 100%); R = R (Economy Value 100%); V = V (Economy Value 100%); S = S (Economy Value 100%); N = N (Economy Saver 60%); Q = Q (Economy Saver 60%); O = O (Economy Saver 60%); G = G (Economy (G class) 50%). The letter on your ticket. J, C, D and I are Business; the rest are Economy. Classes FlySmiLes does not list (T, U, X, Z, A, F) are not offered.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour FlySmiLes tier. BL = Blue; CL = Classic; GD = Gold; PL = Platinum. Gold and Platinum get a 15% and 25% tier bonus on flights SriLankan markets and operates; it is explained below the result, not added.BL
creditToNoCredit the flights to a partner program instead of SriLankan Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior5/5

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

It discloses traits beyond the annotations: the exact earning formula, rounding down with no minimum, classes not listed (T/U/X/Z/A/F), that tier bonuses are note-only and unexplained, that tier miles are not calculated, that it takes no price, and that it's unofficial/uses cwsi.net. This is unusually rich 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It's dense but front-loaded with the essential formula and purpose first, followed by scoping and caveats. The parenthetical class list is lengthy but necessary for accuracy; overall efficient with minimal waste.

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?

Given the complex partner-crediting parameters (creditTo, creditClass, creditFlights, status) and 100% schema coverage with an output schema, the description covers the earning rule, exclusions, bonuses, and source, leaving nothing critical missing for correct invocation.

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 all 8 parameters (segs, cls, trip, status, creditTo, etc.) thoroughly. The description adds the formula context but no parameter-level detail beyond the schema, so baseline 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 states a specific verb+resource (calculate FlySmiLes miles for SriLankan flights) and, importantly, differentiates from sibling tools by listing the exact earning formula and booking-class percentages. Among ~50 similar calculators, this makes the specific airline and rules unmistakable.

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 clearly specifies inputs ('Give segs: one entry per one-way flight, in order, with its great-circle miles ... and the ISO country codes'), which tells the agent when the tool is applicable. It doesn't explicitly name alternatives, but its airline specificity implicitly excludes sibling tools.

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

calculate_sun_country_pointsSun Country Rewards CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a Sun Country Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with the Sun Country Visa. none = No; SV = Yes (3 card points per $1).none
priceYesAmount paid (without taxes and fees) in US dollars. Qualifying Sun Country purchases on this booking. Taxes, fees, in-flight purchases and insurance do not earn.
statusNoYour status. Member = Member; Plus = Plus (+1 per $1).Member
channelNoWhere you booked. D = Sun Country (2 per $1); O = Third party (1 per $1).D

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add what they don't. It does: it discloses the data provenance (cwsi.net's calculator plus the airline's published rules) and adds an 'Unofficial' accuracy caveat, which is exactly the kind of trust/reliability context an agent cannot get from structured fields. It stops short of noting any precision or rate-limit limitations.

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 tightly packed sentence plus a one-word disclaimer. The core purpose (what a ticket earns) is front-loaded, and nothing is repeated or padded.

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 an output schema present, return values need not be explained, and all four parameters are fully documented. Provenance and the unofficial-status disclaimer round it out; the only real gap is the absence of guidance on when to pick this tool over nearby siblings.

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%, with enums documenting card, status, and channel, and price defining qualifying spend. The description adds no parameter-level detail beyond the schema, so the baseline 3 for schema-driven parameter documentation 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?

Specific verb (Estimate) plus the exact resource and scope (what a Sun Country Airlines ticket earns, including miles/points and status credit). Among ~50 airline-specific calculator siblings, the airline name plus the earn-type scope is enough to identify this tool without opening any schema.

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?

Usage is only implied: an agent can infer this is the calculator for Sun Country earnings. There is no explicit when-to-use/when-not, nor any routing to adjacent tools such as compare_fare_classes or calculate_flight_distance for pure distance needs.

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

calculate_tap_air_portugal_milesTAP Air Portugal Miles&Go CalculatorA
Read-onlyIdempotent
Inspect

TAP Air Portugal Miles&Go Bonus Miles for TAP flights. Bonus Miles = distance x fare % by zone, rounded down per flight, no minimum: Europe and North Africa (both airports in Europe, including Madeira, the Azores, the Canary Islands, Turkiye and Cyprus, or Morocco, Algeria, Tunisia, Libya and Egypt) Discount 20, Classic 70, Plus 100, Executive 175, Top Executive 200; Intercontinental Discount 20, Basic 50, Classic 100, Plus and Prime 150, Top Prime and Executive 175, Top Executive 200; a codeshare flown by TAP (CS) 40 or 50. The Silver and Gold status bonus is shown as a note, not added. Progress toward Silver, Gold and Navigator by TAP flights (25 / 50 / 70); fl and sm are the flights and Status Miles so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports (they pick the zone). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
flNoTAP flights you have flown in your annual period (optional). Silver, Gold and Navigator can be reached with 25, 50 or 70 TAP flights.
smNoStatus Miles you have in your annual period (optional). Shown beside the Status Mile thresholds; this flight's Status Miles are not added.
fareNoFare. DI = Discount (Economy, Europe 20%, intercontinental 20%); BA = Basic (Economy, intercontinental only 50%); CL = Classic (Economy, Europe 70%, intercontinental 100%); PL = Plus (Economy, Europe 100%, intercontinental 150%); PR = Prime (Economy Prime, intercontinental only 150%); TP = Top Prime (Economy Prime, intercontinental only 175%); EX = Executive (Business, Europe 175%, intercontinental 175%); TE = Top Executive (Business, Europe 200%, intercontinental 200%); CS = Codeshare flown by TAP (sold by a partner, flown by TAP: 40% in Europe, 50% intercontinental). The fare name on your booking. TAP earns by fare name, not booking class letter. Basic, Prime and Top Prime are sold only on intercontinental flights.CL
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour TAP Miles&Go status. BS = TAP Miles&Go; SI = Silver; GO = Gold; NA = Navigator. Silver earns 25% and Gold and Navigator 50% extra miles on TAP flights. That bonus is shown as a note, not added to the total.BS
creditToNoCredit the flights to a partner program instead of TAP Air Portugal's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

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/openWorld=false, so the bar is lower, yet the description adds real behavior: rounding is down per flight with no minimum, the status bonus is shown as a note and not added, and it discloses sourcing (cwsi.net, published rules, unofficial).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded correctly (what it computes first, usage second), but it is a very dense, semicolon-heavy wall of text that duplicates the fare-percentage and zone tables already present in the schema, diluting the unique content.

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?

An output schema exists, so return values need not be explained, and the description covers the complex fare/zone/status rules, the segs input shape, the no-price constraint, and the partner-program path. Complete enough for a 10-parameter tool.

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% and every parameter (fare, status, creditTo, segs, etc.) already carries a detailed schema description, so the baseline is 3. The description restates the same zone/fare percentages and status-note rule rather than adding syntax or format meaning the schema lacks.

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 opening sentence names a specific verb/resource pair (TAP Air Portugal Miles&Go Bonus Miles for TAP flights) and immediately specifies the computation rule (distance x fare % by zone, rounded down per flight). Against ~50 sibling airline calculators, the airline-specific scope makes it unambiguous which one to pick.

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 tells the agent how to assemble input (one seg per one-way flight, in order, with great-circle miles) and routes to the sibling tool calculate_flight_distance for those miles, plus notes it takes no price. No explicit when-not guidance, but the usage context is clear.

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

calculate_thai_airways_milesThai Airways Royal Orchid Plus Miles CalculatorA
Read-onlyIdempotent
Inspect

Thai Airways Royal Orchid Plus miles and Qualifying Miles for THAI flights. Miles = distance x booking-class % (F 250; P 200; C, D 150; J, Z 125; A, U, Y, B, M 110; H, Q, T 100; K, S, V 75; G 50; W 25), rounded down, at least 500 miles a flight; L, O, I, X, E, N and R earn nothing. Qualifying Miles are the same without the 500-mile minimum. The Silver, Gold and Platinum tier bonus is a note only. Progress toward Silver (10,000) and Gold (50,000) Qualifying Miles in 12 months; sm is the Qualifying Miles so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
smNoQualifying Miles you have in the last 12 months (optional). Used only for the progress toward Silver and Gold.
clsNoBooking class. F = F (Royal First 250%); P = P (Royal First 200%); C = C (Royal Silk 150%); D = D (Royal Silk 150%); J = J (Royal Silk 125%); Z = Z (Royal Silk 125%); A = A (Premium Economy 110%); U = U (Premium Economy 110%); Y = Y (Economy 110%); B = B (Economy 110%); M = M (Economy 110%); H = H (Economy 100%); Q = Q (Economy 100%); T = T (Economy 100%); K = K (Economy 75%); S = S (Economy 75%); V = V (Economy 75%); G = G (Economy 50%); W = W (Economy 25%); L = L (earns nothing); O = O (earns nothing); I = I (earns nothing); X = X (earns nothing); E = E (earns nothing); N = N (earns nothing); R = R (earns nothing). The letter on your ticket. Classes L, O, I, X, E, N and R earn no miles. Z is Royal Silk (and Premium Economy Plus); A is Premium Economy for flights on or after 1 July 2026.Y
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Royal Orchid Plus tier. RO = Member; SV = Silver; GD = Gold; PL = Platinum. Silver, Gold and Platinum get a 5%, 10% or 20% tier bonus on THAI international flights; it is explained below the result, not added. Your tier decides which tiers the progress bars show.RO
creditToNoCredit the flights to a partner program instead of Thai Airways's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark this as a read-only, idempotent, non-destructive calculation, and the description still adds substantial behavior: the per-flight 500-mile floor, the rounding-down rule, the earn-nothing classes, that Qualifying Miles skip the minimum, and that the tier bonus is surfaced as a note rather than applied. It also discloses provenance and the 'Unofficial' caveat, which an agent should surface to a user.

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?

Purpose leads, then formula, then input construction, then caveats — a sensible order with no filler sentences. It is dense and re-states the booking-class percentage table that the schema enum already carries, which is the main redundancy.

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?

With an output schema present, return values need not be described, and the description covers the remaining gaps: required segs shape, ordering, the 1-8 flight limit implied by maxItems, the qualification threshold context, and the unofficial-source disclaimer. An agent has everything needed to call this correctly.

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?

Schema coverage is 100%, so the baseline is 3; the description clears that by explaining sm's role ('the Qualifying Miles so far') and by naming calculate_flight_distance as the source of the miles field. The inline class-percentage table largely duplicates the cls enum documentation, which caps it below 5.

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 opening sentence states a precise verb+resource: Royal Orchid Plus miles and Qualifying Miles for THAI flights. It also pins the scope hard ('Takes no price', 'THAI flights'), which cleanly separates it from the ~50 sibling airline calculators that share its shape.

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 says what inputs to supply and where to get them ('calculate_flight_distance gives them'), and routes partner-program crediting to the creditTo path. What it lacks is an explicit when-not statement (e.g. 'do not use for non-THAI-operated segments'), so the routing guidance is clear but not exhaustive.

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

calculate_turkish_airlines_milesTurkish Airlines Miles and Status Miles CalculatorA
Read-onlyIdempotent
Inspect

Turkish Airlines Miles&Smiles Miles and Status Miles. International flights: Miles = distance x booking-class rate with a minimum per class (Economy 25% to 125%; Business 135% or 150% on the Classic card, 160% or 175% on Classic Plus, Elite and Elite Plus); flights within Turkiye (both airports TR) earn fixed Miles by class. Status Miles = the same flights at the Classic card rate. Progress toward Classic Plus (25,000), Elite (40,000) and Elite Plus (80,000) Status Miles in 12 months; sm is the Status Miles so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
smNoStatus Miles you have in the last 12 months (optional). Used only for the progress toward the next tier.
clsNoBooking class. C = C (Business 150% (175%)); D = D (Business 150% (175%)); K = K (Business 135% (160%)); J = J (Business 135% (160%)); Z = Z (Business 135% (160%)); Y = Y (Economy 125%); B = B (Economy 125%); M = M (Economy 100%); H = H (Economy 100%); S = S (Economy 100%); E = E (Economy 100%); Q = Q (Economy 100%); A = A (Economy 100%); O = O (Economy 100%); T = T (Economy 50%); L = L (Economy 50%); V = V (Economy 50%); G = G (Economy 50%); W = W (Economy 25%); P = P (Economy 25%); F = F (Economy 25%); U = U (Economy 25%). The letter on your ticket. Turkish Airlines has no First class: F is an Economy class here. Business shows the Classic rate, then the Classic Plus and higher rate.M
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Turkish Airlines tier. CL = Classic; CP = Classic Plus; EL = Elite; EP = Elite Plus. Classic Plus, Elite and Elite Plus earn more in Business. Economy earns the same on every card.CL
creditToNoCredit the flights to a partner program instead of Turkish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the safe/idempotent read profile, and the description adds real value beyond them: it discloses the data source ('cwsi.net's calculator and the airline's published rules') and flags the result as 'Unofficial.' It also exposes the earning model (status-tier multipliers, 12-month window). The sourcing claim sits slightly at odds with openWorldHint=false but is not a direct contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core formula is front-loaded, but the body is a dense run-on that packs tier thresholds, creditTo routing, segs rules, and sourcing into few sentences with heavy parentheticals, making it hard to parse. Most content earns its place, yet structure and readability suffer.

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 9-parameter tool with an output schema, the description covers the earning rules, the tier thresholds, the segs input contract, and the partner-credit path well. Return values need not be explained given the output schema. Minor gaps remain around defaults/ordering that the schema mostly covers.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning: it explains that 'sm' is Status Miles so far used only for tier progress, that status determines Business multipliers while Economy is unchanged, and that creditClass/creditStatus only matter with creditTo. These go beyond the enumerated schema text.

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?

Names the specific program and the two outputs it computes (Miles and Status Miles) and states the calculation basis (distance x booking-class rate, fixed Miles within Turkiye). This is unmistakably the Turkish Airlines calculator, distinct from the ~50 sibling airline calculators. No ambiguity about verb or resource.

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?

Tells the agent exactly what to supply ('Give segs: one entry per one-way flight, in order'), points to calculate_flight_distance as the sibling that produces the required distance, and notes it 'Takes no price.' It lacks explicit when-not guidance, but the precondition about segs and the distance handoff are clear.

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

calculate_united_milesUnited MileagePlus CalculatorA
Read-onlyIdempotent
Inspect

Estimate what a United Airlines ticket earns (miles or points, and status credit where it applies), using cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
cardNoPaying with a United card. none = No; CM = Cardmember (+3 per $1); EX = Explorer (+6 per $1); QU = Quest (+7 per $1); CL = Club (+8 per $1); GW = Gateway (+5 per $1); DB = Gateway Debit (+4 per $1). Cardmember is a United card that you are not paying with.none
fareNoFare type. ST = Standard (Economy and above); BE = Basic Economy.ST
priceNoTicket price (fare plus carrier-imposed charges, without government taxes) in US dollars. Shown on your receipt as the fare plus carrier-imposed charges. Required unless creditTo is given.
statusNoYour MileagePlus status. none = General (No status); PS = Silver; PG = Gold; PP = Platinum; 1K = 1K.none
flightsNoFlights on this ticket. Each flight (segment) earns 1 PQF. Basic Economy earns none.
creditToNoCredit the flights to a partner program instead of United Airlines's own: aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the read-only/idempotent safety profile, so the bar is lower; the description adds genuine context by disclosing the data source ('cwsi.net's calculator and the airline's published rules') and flagging it as 'Unofficial', a caveat structured fields cannot convey. It stops short of stating accuracy limits or the dual United-vs-partner crediting mode.

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?

Two tight sentences, no redundancy, with the core action front-loaded and the 'Unofficial' caveat closing it out. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/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 values needn't be explained, and the schema carries all nine parameters. However, for a tool with a meaningful partner-crediting mode (creditTo=Aeroplan) and a dependency on calculate_flight_distance, the description never surfaces either, leaving the agent to discover them from the schema alone.

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 all nine parameters (including the enums and the creditTo nested structure) are already documented in the schema. The description adds no format or semantics beyond what the schema provides; 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?

States a specific verb ('Estimate') and resource ('what a United Airlines ticket earns') and enumerates the outputs (miles/points, status credit). Among a family of ~50 parallel airline calculators, naming United makes the intended sibling unambiguous.

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 airpline name and 'ticket earns' framing imply when to pick this over the other calculate_* tools, but there is no explicit when/when-not guidance, no mention of the creditTo partner path, and no pointer to calculate_flight_distance for the distance inputs it needs. Usage is inferable but not stated.

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

calculate_vietnam_airlines_milesVietnam Airlines Lotusmiles CalculatorA
Read-onlyIdempotent
Inspect

Vietnam Airlines Lotusmiles award miles, tier miles and tier segments for Vietnam Airlines flights (rates from 26 August 2026). Award miles = distance x fare family rate (fam: Business Flex 200%, Business Classic 150, Premium Economy Flex 130, Premium Economy Classic 120, Economy Flex 110, Economy Classic 80 within Vietnam and 65 abroad, Economy Lite 60 and 25, Economy Super Lite 10), rounded down per flight; Vietnam Airlines prints the rates as decimals (2.00), read as multipliers of the miles flown. Tier miles are the award miles without the tier bonus (Economy Super Lite earns none); tier segments per flight by fare family and distance band. The Titanium 30%, Gold 50% and Platinum or Million Miler 100% bonus adds award miles only. Progress toward Titanium (15,000 tier miles or 20 segments), Gold (30,000 or 30) and Platinum (50,000 or 50) in 12 months; tm and ts are the totals so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports (both VN = domestic rate). Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
tmNoTier miles you have in your 12-month period (optional). Used only for the progress toward the next tier.
tsNoTier segments you have in your 12-month period (optional). Some fares count half a segment.
famNoFare family. BF = Business Flex (Business, J, C); BC = Business Classic (Business, D, I); PF = Premium Economy Flex (Premium Economy, W); PC = Premium Economy Classic (Premium Economy, Z, U); EF = Economy Flex (Economy, Y, M, B); EC = Economy Classic (Economy, S, H, K, L); EL = Economy Lite (Economy, Q, N, R, T, E); ES = Economy Super Lite (Economy, A, P, G). The fare family on your ticket, or its booking class in brackets. Booking class Q on routes between Vietnam and Europe, Australia, the United States or China counts as Economy Classic.EC
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Lotusmiles tier. NO = Registration; SI = Silver; TI = Titanium (+30%); GO = Gold (+50%); PL = Platinum (+100%); MM = Million Miler (+100%). The tier bonus is paid on award miles for Vietnam Airlines flights; it does not count toward tier miles or segments.NO
creditToNoCredit the flights to a partner program instead of Vietnam Airlines's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.4/5.0
Behavior5/5

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

Despite annotations already declaring a safe read-only/idempotent profile, the description adds substantial behavior: award miles are rounded down per flight, the tier bonus applies only to award miles and not to tier miles/segments, tier progress thresholds over 12 months, and an explicit 'Unofficial' disclaimer plus the data source. This is rich context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is dense and nearly every clause carries information, but it is delivered as one long run-on paragraph with no structure, making the rate table and the counter-intuitive 'tier bonus adds award miles only' rule hard to scan. For a 10-parameter tool some length is warranted, but the presentation is not front-loaded beyond the first sentence.

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 an output schema present, return values need not be described, and the description covers the calculation rules, tier-progress semantics, eligible creditTo programs with their status names, and the unofficial-data caveat. It does not spell out error behavior for mismatched creditClass/creditTo, but the coverage is otherwise solid for a tool of this complexity.

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?

Schema coverage is 100%, so baseline is 3, but the description genuinely adds meaning: the full fare-family rate table (200%/150/130/...) that the schema only abbreviates as BF/BC/etc., the rule that both-VN airports trigger the domestic rate, the note that rates are printed as decimals read as multipliers, and that tm/ts are totals so far. The segs/from-to explanation partly restates the schema, capping this at 4.

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 opening sentence names a specific verb+resource+scope: Lotusmiles award miles, tier miles and tier segments for Vietnam Airlines flights. It also fixes the effective rate date (26 August 2026), so an agent knows exactly what is being computed. Distinction from the ~50 sibling calculators is carried by the airline name, which is stated repeatedly.

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 clear context: feed segs with great-circle miles obtained from calculate_flight_distance, and leave creditTo out to use Vietnam Airlines's own program while supplying creditClass when crediting to a partner. There are no explicit when-not-to-use statements or sibling comparisons, but the usage conditions are clear.

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

calculate_virgin_atlantic_pointsVirgin Atlantic Flying Club Points CalculatorA
Read-onlyIdempotent
Inspect

Virgin Atlantic Flying Club Virgin Points and Tier Points for Virgin Atlantic flights. Virgin Points = distance x booking-class % (J, C, D 500; I, Z 300; W, S 250; H, K 175; V, Y, B, R 150; L, U, M 100; Q, X, N, O 50; T 25) x tier (Red 1, Silver 1.3, Gold 1.6), rounded per flight; Tier Points are fixed per flight by class (25 to 200). The reward-only classes G, P and A, and E (no published rate), are not offered. Progress toward Silver (400) and Gold (1,000) Tier Points; tp is the Tier Points so far. Give segs: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and the ISO country codes of its two airports. Takes no price. Uses cwsi.net's calculator and the airline's published rules. Unofficial.

NameRequiredDescriptionDefault
tpNoTier Points you have so far (optional). Used only for the progress toward Silver and Gold.
clsNoBooking class. JCD = J, C, D (Upper Class, 500%, 200 Tier Points); I = I (Upper Class, 300%, 200 Tier Points); Z = Z (Upper Class, 300%, 100 Tier Points); WS = W, S (Premium, 250%, 100 Tier Points); HK = H, K (Premium, 175%, 50 Tier Points); V = V (Economy Delight, 150%, 50 Tier Points); YBR = Y, B, R (Economy Classic, 150%, 50 Tier Points); LUM = L, U, M (Economy Classic, 100%, 50 Tier Points); QXNO = Q, X, N, O (Economy Classic, 50%, 25 Tier Points); T = T (Economy Light, 25%, 25 Tier Points). The letter on your ticket. The percentage is of the distance flown. Reward-only classes (G, P, A) and E are not listed.YBR
segsYesThe flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS).
tripNoTrip. ow = One way; rt = Round trip. Round trip counts the same flights back the other way.ow
statusNoYour Flying Club tier. R = Red; S = Silver (+30% Virgin Points); G = Gold (+60% Virgin Points).R
creditToNoCredit the flights to a partner program instead of Virgin Atlantic's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.
creditClassNoThe booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds useful context beyond that: it discloses the tool is 'Unofficial', that it relies on cwsi.net's calculator and published airline rules, and that reward-only classes (G, P, A, E) are not offered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the purpose and core formula, but the detailed class-percentage and tier-multiplier lists duplicate what the enum schema already documents, making it longer than needed for an agent that can read 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?

Given an output schema exists, return values needn't be explained. The description covers the calculation logic, segs requirement, excluded classes, and the partner-credit alternative, leaving little ambiguity for a complex 9-parameter tool.

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?

Schema coverage is 100%, so baseline is 3. The description goes further by pointing the agent to calculate_flight_distance for the miles value and clarifying the segs structure (one entry per one-way flight, in order, ISO country codes), adding cross-tool guidance beyond the schema.

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 the specific resource (Virgin Atlantic Flying Club Virgin Points and Tier Points) and verb (calculate), immediately distinguishing it from the ~50 sibling airline calculators by naming the program and the exact outputs (Virgin Points and Tier Points).

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 clearly states the scope ('for Virgin Atlantic flights'), what the tool takes ('Takes no price'), and how to supply inputs ('Give segs: one entry per one-way flight, in order...'). It doesn't contrast against a non-airline alternative, but for an airline-specific tool the context is clear.

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

calculate_xiamen_airlines_milesXiamen Airlines Egret Miles CalculatorA
Read-onlyIdempotent
Inspect

Xiamen Airlines Egret Miles for a Xiamen Airlines, Hebei Airlines or Jiangxi Airlines flight ticketed on Xiamen stock (ticket numbers starting 731, 836 or 989), from the base fare plus fuel surcharge for that flight in yuan (CNY; other charges left out). Egret Miles = fare x (category multiplier + tier multiplier), rounded up, no minimum. Category (cat): 1.0 for First or Business (FB), Economy Y or W (YW) and Economy H on a China domestic route (HD); 0.7 for Economy H on an international, Hong Kong, Macao or Taiwan route (HI) and other Economy classes (EO). Tier: Egret Silver 0.2, Gold 0.3, Platinum 0.4, Diamond 0.5, none 0. Qualifying points for the flight are not calculated (the guide does not say whether its +1 counts per ticket or per segment); the tiers need 20, 40, 70 and 120 qualifying points in a calendar year. Give the CNY amount (Xiamen converts other currencies at the IATA rate on the issue date), one flight at a time. Uses cwsi.net's calculator and the airline's published rules. Give the price in CNY, not US dollars. Unofficial.

NameRequiredDescriptionDefault
catNoCabin and booking class. FB = First or Business (category 1.0); YW = Economy Y or W (category 1.0); HD = Economy H, China domestic route (category 1.0); HI = Economy H, international, Hong Kong, Macao or Taiwan (category 0.7); EO = Other Economy classes (category 0.7). The category multiplier is 1.0 for First, Business and Economy Y, H, W and 0.7 for other Economy. H counts 1.0 on China domestic routes only.YW
tierNoYour Egret Miles tier when you fly. N = No tier (no bonus); SI = Egret Silver (+0.2); GO = Egret Gold (+0.3); PL = Egret Platinum (+0.4); DI = Egret Diamond (+0.5). The tier multiplier is added to the category multiplier.N
priceNoBase fare plus fuel surcharge (CNY, the flight) in CNY. In yuan: the base fare plus the fuel surcharge for the flight, without airport fees and other charges. For another currency, enter the equivalent in yuan. Required unless creditTo is given.
creditToNoCredit the flights to a partner program instead of Xiamen Airlines's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.
creditClassNoThe booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.
creditStatusNoYour status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.
creditFlightsNoThe flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.

Output Schema

NameRequiredDescription
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, etc., so the safety profile is covered. The description adds valuable context: the formula, rounding, no minimum, exclusions (qualifying points not calculated), currency conversion, and that it's unofficial. This goes well beyond annotations, though it doesn't discuss rate limits or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and dense, with multiple clauses packed into few sentences. It is front-loaded with the core purpose but contains tangential details (tier qualification thresholds, note about qualifying points) that may not be essential for invoking the tool. It could be more structured with clear separation of usage, parameters, and caveats.

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?

Given the complexity of the calculation, the description provides a complete picture: the formula, rounding rules, handling of different currencies, partner program alternatives, and even an unofficial disclaimer. With an output schema present, it doesn't need to explain return values, and annotations cover safety. It is fully sufficient for correct invocation.

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 all parameters thoroughly. The description summarizes key parameter meanings (cat, tier, price, creditTo, etc.) but adds little beyond what the schema provides, except perhaps clarifying the formula's use of multipliers. Baseline 3 is appropriate.

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 clearly states what the tool does: calculate Xiamen Airlines Egret Miles for flights ticketed on Xiamen stock, based on fare and category/tier multipliers. It specifies the exact earning formula, which distinguishes it from generic mile calculators, but it does not explicitly differentiate itself from sibling tools like calculate_shenzhen_airlines_miles beyond the airline name.

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 implies when to use it: for Xiamen Airlines, Hebei Airlines, or Jiangxi Airlines flights ticketed on Xiamen stock, and mentions alternative creditTo programs (Delta, Flying Club, Flying Blue). It does not explicitly state when not to use it or compare with sibling calculators, which prevents a 5.

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

compare_fare_classesCompare two fare classes across airlinesA
Read-onlyIdempotent
Inspect

Side-by-side comparison of two fare classes, e.g. Delta K vs United M, from cwsi.net's fare charts. Covers American, Alaska, Delta, Southwest and United.

NameRequiredDescriptionDefault
fare_aYesFare letter (or Southwest fare name) on the first airline.
fare_bYesFare letter (or Southwest fare name) on the second airline.
airline_aYesFirst airline: AA/American, AS/Alaska, DL/Delta, WN/Southwest or UA/United.
airline_bYesSecond airline: AA/American, AS/Alaska, DL/Delta, WN/Southwest or UA/United.

Output Schema

NameRequiredDescription
aYes
bYes
linkYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds the data provenance ('cwsi.net's fare charts') and a coverage boundary of five airlines, which is useful, but the airline list largely duplicates what airline_a/airline_b already state in the schema, and no failure behavior for unsupported carriers is described.

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 the purpose, an example, and the scope. No filler, no redundancy.

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 full schema coverage, an output schema, and safety annotations, the description supplies what an agent needs to call the tool correctly. It is slightly thin on the relationship to get_fare_classes and on behavior for unsupported airline/fare combinations.

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?

Schema description coverage is 100%, so the baseline is 3; the description earns a bump by showing the pairing pattern ('Delta K vs United M'), which clarifies that each side is an airline plus a fare letter. It still does not address Southwest's fare-name convention, which is only mentioned in the schema.

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?

States a specific verb and resource ('side-by-side comparison of two fare classes') and immediately grounds it with a concrete example ('Delta K vs United M'). The scope statement ('Covers American, Alaska, Delta, Southwest and United') makes it easy to separate from the bulk-mileage calculators and from the sibling get_fare_classes, which lists rather than compares.

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 example implies the intended use case, but there is no explicit when-to-use or when-not-to-use guidance and the obvious alternative, get_fare_classes, is never named. An agent must infer that this tool is for pairwise comparison rather than enumeration.

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

get_airport_loungesList airport loungesA
Read-onlyIdempotent
Inspect

Airport lounges at an airport, grouped by terminal, from cwsi.net's Lounge Finder: name, brand, concourse or gate, hours and access rules. Give a 3-letter IATA code such as ATL. Covers about 106 airports in the US, Canada, Mexico, Europe, the Middle East, Asia, Oceania and Latin America.

NameRequiredDescriptionDefault
airportYesA 3-letter IATA airport code such as ATL (case-insensitive).

Output Schema

NameRequiredDescription
cityYes
codeYes
linkYes
nameYes
stateNo
regionYes
countryYes
loungesYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, idempotent, open-world, non-destructive), so the description adds value by naming the upstream source (cwsi.net Lounge Finder) and disclosing the coverage limit of about 106 airports, which warns the agent about potential gaps. It does not say what happens for an unsupported code (empty vs. error), leaving a small gap.

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?

Three tight sentences: purpose and fields first, then the required input format, then coverage limits. No filler, and the most actionable constraint (IATA code) is front-loaded near the top.

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 an output schema present, the description doesn't need to explain return values, and it already summarizes them plus the data source and coverage. The only shortfall is not stating behavior for out-of-coverage or invalid airport codes, which matters given the open-world, limited-coverage data set.

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% and the single parameter is fully documented in the schema, including case-insensitivity and format. The description's IATA-code hint largely repeats the schema rather than adding new semantics, so the 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?

States a specific verb and resource ('Airport lounges at an airport, grouped by terminal') and enumerates the returned fields (name, brand, concourse/gate, hours, access rules). An agent can immediately distinguish it from the sibling tools, which are all mileage calculators and fare-class lookups.

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?

Gives clear invocation guidance: 'Give a 3-letter IATA code such as ATL,' plus the geographic scope (~106 airports across listed regions) that tells the agent when the tool will and won't have data. There is no explicit when-not/alternative routing, but no sibling covers lounges, so the omission is minor.

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

get_fare_classesLook up airline fare classesB
Read-onlyIdempotent
Inspect

What an airline fare class (booking code) means and what it earns, from cwsi.net's fare charts. Give a fare letter (e.g. Delta K) or a Southwest fare name, or leave fare_class out to list them all. Covers Aegean Airlines, Aerolineas Argentinas, Aeromexico, Air Canada, Air China, Air Europa, Air France, Air India, Air New Zealand, Alaska, Allegiant, American, ANA, Avianca, Breeze, British Airways, Cathay Pacific, China Airlines, China Eastern, Copa Airlines, Croatia Airlines, Delta, Ethiopian Airlines, Etihad Airways, EVA Air, Finnair, Frontier, Hawaiian, Iberia, ITA Airways, Japan Airlines, JetBlue, KLM, Korean Air, LOT Polish Airlines, Lufthansa, Malaysia Airlines, Qantas, Qatar Airways, Royal Air Maroc, Royal Jordanian, SAS, Shenzhen Airlines, Singapore Airlines, South African Airways, Southwest, SriLankan Airlines, Sun Country, TAP Air Portugal, Thai Airways, Turkish Airlines, United, Vietnam Airlines, Virgin Atlantic and Xiamen Airlines.

NameRequiredDescriptionDefault
airlineYesAirline code or name: A3/Aegean Airlines, AR/Aerolineas Argentinas, AM/Aeromexico, AC/Air Canada, CA/Air China, UX/Air Europa, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, OU/Croatia Airlines, DL/Delta, ET/Ethiopian Airlines, EY/Etihad Airways, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, AZ/ITA Airways, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, MH/Malaysia Airlines, QF/Qantas, QR/Qatar Airways, AT/Royal Air Maroc, RJ/Royal Jordanian, SK/SAS, ZH/Shenzhen Airlines, SQ/Singapore Airlines, SA/South African Airways, WN/Southwest, UL/SriLankan Airlines, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VN/Vietnam Airlines, VS/Virgin Atlantic, MF/Xiamen Airlines.
fare_classNoA fare letter such as "K", or a Southwest fare name such as "Choice". Leave out to list every fare class.

Output Schema

NameRequiredDescription
linkYes
faresYes
airlineYes
columnsYes
airline_nameYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds modest context: the data source (cwsi.net's fare charts) and that omitting fare_class lists everything. It does not discuss return format, freshness, or rate limits, so it adds some but not rich behavioral value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are well front-loaded, but roughly half the description is a 50+ airline enumeration that duplicates the airline parameter's enum in the schema verbatim. That bulk does not earn its place, and pushing the actual lookup guidance behind a redundant list hurts structure.

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 an output schema present, the description needn't explain return values, and full schema coverage means parameter docs are handled. It supplies scope (which airlines, what data source) adequately for a reference-lookup tool, though it could say more about how earning info is returned or how it relates to the calculate_* siblings.

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 both parameters are already fully documented with examples. The description reinforces the fare_class format with 'a fare letter (e.g. Delta K) or a Southwest fare name', which adds a small amount of format clarity (airline + letter), but this is essentially a restatement of the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 clear resource and outcome: it explains what an airline fare class (booking code) means and what it earns, sourced from cwsi.net's fare charts. This is distinguishable in intent from the calculate_* siblings (which compute miles) and compare_fare_classes (which compares), though it never explicitly names those alternatives. The purpose is unambiguous but sibling differentiation is left implicit.

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?

It explains invocation modes — pass a fare letter (e.g. Delta K), a Southwest fare name, or omit fare_class to list all — which is useful context. However, it gives no explicit when-to-use vs when-not guidance and never references the sibling compare_fare_classes or the calculate_* tools, so the routing decision is left to inference.

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. 3 tool updates
    • Changedcalculate_british_airways_avios4 fields changed
      • changedInput schema / properties / fcw / description
        Previous value: -"Club World fare type. BU = Business (+500 tier points); SF = Semi-Flex (+700 tier points); FX = Flex (+900 tier points); FF = Fully-Flex (+1,100 tier points). Only applies to some choices of the other fields; ignored otherwise."New value: +"Club World fare type. BU = Business (+500 tier points (200 from 1 April 2027)); SF = Semi-Flex (+700 tier points (400 from 1 April 2027)); FX = Flex (+900 tier points (600 from 1 April 2027)); FF = Fully-Flex (+1,100 tier points (800 from 1 April 2027)). Only applies to some choices of the other fields; ignored otherwise."
      • changedInput schema / properties / ffi / description
        Previous value: -"First fare type. FI = First (+650 tier points); SF = Semi-Flex (+850 tier points); FX = Flex (+1,050 tier points); FF = Fully-Flex (+1,250 tier points). Only applies to some choices of the other fields; ignored otherwise."New value: +"First fare type. FI = First (+650 tier points (300 from 1 April 2027)); SF = Semi-Flex (+850 tier points (500 from 1 April 2027)); FX = Flex (+1,050 tier points (700 from 1 April 2027)); FF = Fully-Flex (+1,250 tier points (900 from 1 April 2027)). Only applies to some choices of the other fields; ignored otherwise."
      • changedInput schema / properties / fwp / description
        Previous value: -"World Traveller Plus fare type. PE = Premium Economy (+275 tier points); SF = Semi-Flex (+375 tier points); FX = Flex (+475 tier points); FF = Fully-Flex (+575 tier points). Only applies to some choices of the other fields; ignored otherwise."New value: +"World Traveller Plus fare type. PE = Premium Economy (+275 tier points (175 from 1 April 2027)); SF = Semi-Flex (+375 tier points); FX = Flex (+475 tier points); FF = Fully-Flex (+575 tier points). Only applies to some choices of the other fields; ignored otherwise."
      • addedInput schema / properties / yr
        Added value: +{
        +  "default": "26",
        +  "description": "When you fly. 26 = Up to 31 March 2027; 27 = From 1 April 2027. From 1 April 2027 British Airways lowers the extra tier points on some long-haul fares (World Traveller Plus Premium Economy, Club World and First) and Silver needs 8,000 tier points, Gold 21,000.",
        +  "enum": [
        +    "26",
        +    "27"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_jetblue_points4 fields changed
      • changedInput schema / properties / cabin / description
        Previous value: -"Cabin. main = Main; evenmore = EvenMore; mint = Mint."New value: +"Cabin. main = Main; evenmore = EvenMore; bluefirst = BlueFirst; mint = Mint."
      • changedInput schema / properties / cabin / enum
        Previous value: -[
        -  "main",
        -  "evenmore",
        -  "mint"
        -]New value: +[
        +  "main",
        +  "evenmore",
        +  "bluefirst",
        +  "mint"
        +]
      • changedInput schema / properties / fare / description
        Previous value: -"Fare. base = Base (1 per $1); standard = Standard (3 per $1); flex = Flex (3 per $1). Only applies to some choices of the other fields; ignored otherwise."New value: +"Fare. base = Base (1 per $1); standard = Standard (3 per $1); flex = Flex (3 per $1). Every cabin is sold as Base, Standard or Flex."
      • removedInput schema / properties / mfare
        Removed value: -{
        -  "default": "standard",
        -  "description": "Fare. standard = Standard (3 per $1); flex = Flex (3 per $1). Mint is sold as Standard or Flex. No Base fare in Mint. Only applies to some choices of the other fields; ignored otherwise.",
        -  "enum": [
        -    "standard",
        -    "flex"
        -  ],
        -  "type": "string"
        -}
    • Changedcalculate_lufthansa_miles1 field changed
      • changedInput schema / properties / price / description
        Previous value: -"Fare in euros in EUR. In euros (EUR), for the whole ticket: the base fare plus the surcharges the airline adds, without government taxes and airport charges. Miles & More converts a fare in another currency to euros itself. Required unless creditTo is given."New value: +"Fare in euros in EUR. In euros (EUR), for the whole ticket: the base fare plus the surcharges the airline adds, without government taxes and airport charges. Miles & More converts a fare in another currency to euros itself. This method is for tickets from a Lufthansa Group airline (numbers starting 220, 724, 257, 082 or 101, or Eurowings). Required unless creditTo is given."
  2. 2 tool updates
    • Addedcalculate_etihad_guest_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: A3/Aegean Airlines, AR/Aerolineas Argentinas, AM/Aeromexico, AC/Air Canada, CA/Air China, UX/Air Europa, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, OU/Croatia Airlines, DL/Delta, ET/Ethiopian Airlines, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, AZ/ITA Airways, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, MH/Malaysia Airlines, QF/Qantas, QR/Qatar Airways, AT/Royal Air Maroc, RJ/Royal Jordanian, SK/SAS, ZH/Shenzhen Airlines, SQ/Singapore Airlines, SA/South African Airways, WN/Southwest, UL/SriLankan Airlines, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VN/Vietnam Airlines, VS/Virgin Atlantic, MF/Xiamen Airlines."New value: +"Airline code or name: A3/Aegean Airlines, AR/Aerolineas Argentinas, AM/Aeromexico, AC/Air Canada, CA/Air China, UX/Air Europa, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, OU/Croatia Airlines, DL/Delta, ET/Ethiopian Airlines, EY/Etihad Airways, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, AZ/ITA Airways, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, MH/Malaysia Airlines, QF/Qantas, QR/Qatar Airways, AT/Royal Air Maroc, RJ/Royal Jordanian, SK/SAS, ZH/Shenzhen Airlines, SQ/Singapore Airlines, SA/South African Airways, WN/Southwest, UL/SriLankan Airlines, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VN/Vietnam Airlines, VS/Virgin Atlantic, MF/Xiamen Airlines."
  3. 14 tool updates
    • Addedcalculate_aegean_airlines_miles
    • Addedcalculate_aerolineas_argentinas_miles
    • Addedcalculate_air_europa_miles
    • Addedcalculate_croatia_airlines_miles
    • Addedcalculate_ita_airways_miles
    • Addedcalculate_malaysia_airlines_enrich_points
    • Addedcalculate_royal_air_maroc_miles
    • Addedcalculate_royal_jordanian_miles
    • Addedcalculate_shenzhen_airlines_miles
    • Addedcalculate_south_african_airways_miles
    • Addedcalculate_srilankan_airlines_miles
    • Addedcalculate_vietnam_airlines_miles
    • Addedcalculate_xiamen_airlines_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AM/Aeromexico, AC/Air Canada, CA/Air China, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SK/SAS, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."New value: +"Airline code or name: A3/Aegean Airlines, AR/Aerolineas Argentinas, AM/Aeromexico, AC/Air Canada, CA/Air China, UX/Air Europa, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, OU/Croatia Airlines, DL/Delta, ET/Ethiopian Airlines, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, AZ/ITA Airways, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, MH/Malaysia Airlines, QF/Qantas, QR/Qatar Airways, AT/Royal Air Maroc, RJ/Royal Jordanian, SK/SAS, ZH/Shenzhen Airlines, SQ/Singapore Airlines, SA/South African Airways, WN/Southwest, UL/SriLankan Airlines, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VN/Vietnam Airlines, VS/Virgin Atlantic, MF/Xiamen Airlines."
  4. 32 tool updates
    • Changedcalculate_aeromexico_points6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Aeromexico's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "delta",
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Base fare in US dollars (whole ticket) in US dollars. The ticket total minus taxes and fees, for the whole ticket. If you paid in pesos, enter the equivalent in US dollars."New value: +"Base fare in US dollars (whole ticket) in US dollars. The ticket total minus taxes and fees, for the whole ticket. If you paid in pesos, enter the equivalent in US dollars. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_air_canada_points6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Air Canada's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "united"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare paid for the whole ticket (CAD) in CAD. Base fare plus carrier-imposed surcharges, in Canadian dollars, without government taxes and airport fees. If you paid in another currency, Air Canada converts it to CAD at an industry-standard rate."New value: +"Fare paid for the whole ticket (CAD) in CAD. Base fare plus carrier-imposed surcharges, in Canadian dollars, without government taxes and airport fees. If you paid in another currency, Air Canada converts it to CAD at an industry-standard rate. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_air_china_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Air China's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_air_india_points6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Air India's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in carrier (AI: united, aeroplan; IX: none). Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare paid (INR, whole ticket) in INR. In Indian rupees: the base fare plus the fuel surcharge (YQ) for Air India, or the base fare alone for Air India Express, without taxes and fees. Air India converts a fare paid in another currency itself."New value: +"Fare paid (INR, whole ticket) in INR. In Indian rupees: the base fare plus the fuel surcharge (YQ) for Air India, or the base fare alone for Air India Express, without taxes and fees. Air India converts a fare paid in another currency itself. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_air_new_zealand_airpoints5 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Air New Zealand's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). Give the flights as creditFlights (one entry per flight with its great-circle miles).",
        +  "enum": [
        +    "united",
        +    "aeroplan",
        +    "flying-club"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "segs"
        -]
    • Changedcalculate_alaska_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Alaska Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "american",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Price paid (before taxes and fees) in US dollars. Needed for your card, or for the price method from 2027."New value: +"Price paid (before taxes and fees) in US dollars. Needed for your card, or for the price method from 2027. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_american_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of American Airlines's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "alaska"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Ticket price in US dollars. Base fare plus carrier-imposed fees, without government taxes."New value: +"Ticket price in US dollars. Base fare plus carrier-imposed fees, without government taxes. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_ana_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of ANA's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan",
        +    "flying-club"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_avianca_lifemiles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Avianca's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare paid (USD, whole ticket) in US dollars. In US dollars: the fare for the whole ticket without taxes, fees and additional services (bags, seats and other extras)."New value: +"Fare paid (USD, whole ticket) in US dollars. In US dollars: the fare for the whole ticket without taxes, fees and additional services (bags, seats and other extras). Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_british_airways_avios6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of British Airways's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "alaska"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare paid (GBP, whole ticket) in GBP. In pounds: base fare plus carrier-imposed charges for the whole ticket, without government taxes and airport charges. British Airways converts other currencies at the IATA 5-day rate on the day you buy."New value: +"Fare paid (GBP, whole ticket) in GBP. In pounds: base fare plus carrier-imposed charges for the whole ticket, without government taxes and airport charges. British Airways converts other currencies at the IATA 5-day rate on the day you buy. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_cathay_pacific_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Cathay Pacific's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles).",
        +  "enum": [
        +    "american",
        +    "alaska",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_china_airlines_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of China Airlines's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "delta",
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_china_eastern_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of China Eastern's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "delta",
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare plus YQ (CNY, whole ticket) in CNY. In yuan: the ticket price including the YQ fuel surcharge, for the whole ticket. China Eastern does not say how a ticket in another currency is converted."New value: +"Fare plus YQ (CNY, whole ticket) in CNY. In yuan: the ticket price including the YQ fuel surcharge, for the whole ticket. China Eastern does not say how a ticket in another currency is converted. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_copa_airlines_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Copa Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_delta_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Delta Air Lines's own: flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Ticket price in US dollars. Base fare plus carrier charges, without government taxes and fees (shown on your receipt)."New value: +"Ticket price in US dollars. Base fare plus carrier charges, without government taxes and fees (shown on your receipt). Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_eva_air_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of EVA Air's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_finnair_avios6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Finnair's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "american",
        +    "alaska",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare paid (EUR, whole ticket) in EUR. In euros: the base fare plus any airline surcharge (\"Extra fee\" in the price breakdown) for the whole ticket, without taxes and airport charges. Finnair converts a fare paid in another currency to euros itself."New value: +"Fare paid (EUR, whole ticket) in EUR. In euros: the base fare plus any airline surcharge (\"Extra fee\" in the price breakdown) for the whole ticket, without taxes and airport charges. Finnair converts a fare paid in another currency to euros itself. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_flying_blue_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Air France's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in airline (AF: delta, flying-club; KL: delta, flying-club). Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights. No price is needed with creditTo.",
        +  "enum": [
        +    "delta",
        +    "flying-club"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Ticket fare in euros (whole trip) in EUR. The base fare plus the carrier-imposed surcharge, without government taxes and airport charges, for the whole ticket. Enter it in euros; Flying Blue converts other currencies itself."New value: +"Ticket fare in euros (whole trip) in EUR. The base fare plus the carrier-imposed surcharge, without government taxes and airport charges, for the whole ticket. Enter it in euros; Flying Blue converts other currencies itself. Required unless creditTo is given."
      • changedInput schema / required
        Previous value: -[
        -  "price",
        -  "segs"
        -]New value: +[
        +  "segs"
        +]
    • Changedcalculate_iberia_avios6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Iberia's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights. No price is needed with creditTo.",
        +  "enum": [
        +    "alaska"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Ticket fare in euros (whole trip) in EUR. The fare and carrier charges, without taxes and fees, for the whole ticket. Enter it in euros; Iberia converts a fare in another currency at the IATA rate on the day the ticket is issued."New value: +"Ticket fare in euros (whole trip) in EUR. The fare and carrier charges, without taxes and fees, for the whole ticket. Enter it in euros; Iberia converts a fare in another currency at the IATA rate on the day the ticket is issued. Required unless creditTo is given."
      • changedInput schema / required
        Previous value: -[
        -  "price",
        -  "segs"
        -]New value: +[
        +  "segs"
        +]
    • Changedcalculate_japan_airlines_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Japan Airlines's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "american",
        +    "alaska",
        +    "flying-blue",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_korean_air_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Korean Air's own: alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "alaska",
        +    "delta",
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_lot_polish_airlines_miles3 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedInput schema / properties / creditTo / description
        Previous value: -"Credit the flights to a partner program instead of LOT Polish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program."New value: +"Credit the flights to a partner program instead of LOT Polish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights."
    • Changedcalculate_lufthansa_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Lufthansa's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The programs follow the airline in op (LH: united, aeroplan; LX: united, aeroplan; OS: united, aeroplan; SN: united, aeroplan). Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Fare in euros in EUR. In euros (EUR), for the whole ticket: the base fare plus the surcharges the airline adds, without government taxes and airport charges. Miles & More converts a fare in another currency to euros itself."New value: +"Fare in euros in EUR. In euros (EUR), for the whole ticket: the base fare plus the surcharges the airline adds, without government taxes and airport charges. Miles & More converts a fare in another currency to euros itself. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_qantas_points4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Qantas's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "american",
        +    "alaska",
        +    "flying-blue",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_qatar_airways_avios4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Qatar Airways's own: american = American AAdvantage (creditStatus one of: AAdvantage member, AAdvantage Gold, AAdvantage Platinum, AAdvantage Platinum Pro, AAdvantage Executive Platinum); alaska = Atmos Rewards (creditStatus one of: Atmos Rewards member, Atmos Silver, Atmos Gold, Atmos Platinum, Atmos Titanium); ba-club = British Airways Club (creditStatus one of: Blue, Bronze, Silver, Gold). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "american",
        +    "alaska",
        +    "ba-club"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_sas_points5 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of SAS's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-club = Flying Club (creditStatus one of: Red, Silver, Gold); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). Give the flights as creditFlights (one entry per flight with its great-circle miles).",
        +  "enum": [
        +    "delta",
        +    "flying-club",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "segs"
        -]
    • Changedcalculate_singapore_airlines_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Singapore Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_tap_air_portugal_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of TAP Air Portugal's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_thai_airways_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Thai Airways's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_turkish_airlines_miles4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Turkish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Changedcalculate_united_miles6 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter on the ticket, for creditTo (required with creditTo). Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of United Airlines's own: aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. Give the booking class letter as creditClass. Give the flights as creditFlights (one entry per flight with its great-circle miles). No price is needed with creditTo.",
        +  "enum": [
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Ticket price (fare plus carrier-imposed charges, without government taxes) in US dollars. Shown on your receipt as the fare plus carrier-imposed charges."New value: +"Ticket price (fare plus carrier-imposed charges, without government taxes) in US dollars. Shown on your receipt as the fare plus carrier-imposed charges. Required unless creditTo is given."
      • removedInput schema / required
        Removed value: -[
        -  "price"
        -]
    • Changedcalculate_virgin_atlantic_points4 fields changed
      • addedInput schema / properties / creditClass
        Added value: +{
        +  "description": "The booking class letter for creditTo, when it differs from the class question. Ignored without creditTo.",
        +  "pattern": "^[A-Za-z]$",
        +  "type": "string"
        +}
      • addedInput schema / properties / creditFlights
        Added value: +{
        +  "description": "The flights for creditTo: one entry per one-way flight, in order, with its great-circle miles (calculate_flight_distance gives them) and optionally from/to airport codes. Defaults to segs when they carry miles.",
        +  "items": {
        +    "properties": {
        +      "from": {
        +        "description": "The departure airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      },
        +      "miles": {
        +        "description": "Great-circle distance of this flight in miles.",
        +        "maximum": 12500,
        +        "minimum": 1,
        +        "type": "integer"
        +      },
        +      "to": {
        +        "description": "The arrival airport's code; labels the breakdown.",
        +        "pattern": "^[A-Za-z0-9]{3,4}$",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "miles"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 8,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of Virgin Atlantic's own: delta = Delta SkyMiles (creditStatus one of: SkyMiles Member, Silver Medallion, Gold Medallion, Platinum Medallion, Diamond Medallion); flying-blue = Flying Blue (creditStatus one of: Explorer, Silver, Gold, Platinum, Ultimate). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program. The booking class is cls (or creditClass). The flights are segs (their miles), or creditFlights.",
        +  "enum": [
        +    "delta",
        +    "flying-blue"
        +  ],
        +  "type": "string"
        +}
  5. 8 tool updates
    • Addedcalculate_air_china_miles
    • Addedcalculate_air_india_points
    • Addedcalculate_air_new_zealand_airpoints
    • Addedcalculate_china_airlines_miles
    • Addedcalculate_china_eastern_miles
    • Changedcalculate_lot_polish_airlines_miles2 fields changed
      • addedInput schema / properties / creditStatus
        Added value: +{
        +  "description": "Your status in the creditTo program, by its name as listed under creditTo. Defaults to the base level. Ignored without creditTo.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedInput schema / properties / creditTo
        Added value: +{
        +  "description": "Credit the flights to a partner program instead of LOT Polish Airlines's own: united = United MileagePlus (creditStatus one of: General member, Premier Silver, Premier Gold, Premier Platinum, Premier 1K); aeroplan = Aeroplan (creditStatus one of: Aeroplan Member, 25K, 35K, 50K, 75K, Super Elite). Earns by each flight's distance and the booking class at the program's published partner rates; leave creditTo out for the airline's own program.",
        +  "enum": [
        +    "united",
        +    "aeroplan"
        +  ],
        +  "type": "string"
        +}
    • Addedcalculate_thai_airways_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AM/Aeromexico, AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CM/Copa Airlines, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SK/SAS, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TP/TAP Air Portugal, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."New value: +"Airline code or name: AM/Aeromexico, AC/Air Canada, CA/Air China, AF/Air France, AI/Air India, NZ/Air New Zealand, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CI/China Airlines, MU/China Eastern, CM/Copa Airlines, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SK/SAS, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TP/TAP Air Portugal, TG/Thai Airways, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."
  6. 19 tool updates
    • Addedcalculate_aeromexico_points
    • Changedcalculate_ana_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Addedcalculate_avianca_lifemiles
    • Addedcalculate_copa_airlines_miles
    • Changedcalculate_eva_air_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_flying_blue_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_iberia_avios3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (Y, W, C) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (Y, W, C) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_japan_airlines_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_korean_air_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Addedcalculate_lot_polish_airlines_miles
    • Changedcalculate_lufthansa_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_qantas_points2 fields changed
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_qatar_airways_avios3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Addedcalculate_sas_points
    • Changedcalculate_singapore_airlines_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Addedcalculate_tap_air_portugal_miles
    • Changedcalculate_turkish_airlines_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedcalculate_virgin_atlantic_points3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia; the long-haul tables named by city on SAS)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN), and SAS to pick its long-haul tables (named by city)."
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."New value: +"Airline code or name: AM/Aeromexico, AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, AV/Avianca, MX/Breeze, BA/British Airways, CX/Cathay Pacific, CM/Copa Airlines, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LO/LOT Polish Airlines, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SK/SAS, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TP/TAP Air Portugal, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."
  7. 14 tool updates
    • Changedcalculate_ana_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Addedcalculate_eva_air_miles
    • Addedcalculate_finnair_avios
    • Changedcalculate_flying_blue_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Addedcalculate_iberia_avios
    • Changedcalculate_japan_airlines_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Changedcalculate_korean_air_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Changedcalculate_lufthansa_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Changedcalculate_qantas_points2 fields changed
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Addedcalculate_qatar_airways_avios
    • Changedcalculate_singapore_airlines_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA; the Madrid-Barcelona Air Shuttle, MAD-BCN, on Iberia)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), Qantas to pick its route tables, and Iberia to spot the Madrid-Barcelona Air Shuttle (MAD, BCN)."
    • Addedcalculate_turkish_airlines_miles
    • Addedcalculate_virgin_atlantic_points
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LH/Lufthansa, QF/Qantas, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, UA/United."New value: +"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, BR/EVA Air, AY/Finnair, F9/Frontier, HA/Hawaiian, IB/Iberia, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LH/Lufthansa, QF/Qantas, QR/Qatar Airways, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, TK/Turkish Airlines, UA/United, VS/Virgin Atlantic."
  8. 8 tool updates
    • Addedcalculate_ana_miles
    • Changedcalculate_flying_blue_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to airport codes, used only to label the breakdown."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; miles, its great-circle distance in miles (1 to 12,500); optional cabin (E, P, B, F) for a flight in another cabin than the ticket's; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport code (labels the breakdown only)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport code (labels the breakdown only)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."
    • Addedcalculate_japan_airlines_miles
    • Addedcalculate_korean_air_miles
    • Changedcalculate_lufthansa_miles3 fields changed
      • changedInput schema / properties / segs / description
        Previous value: -"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to airport codes, used only to label the breakdown."New value: +"The flights, one way and in order, one entry per flight (1 to 8): fromCountry and toCountry, the ISO 3166 two-letter country codes of its two airports; optional kind, C (continental) or I (intercontinental), which overrides the country table; optional from and to, the IATA codes of its two airports, which label the breakdown; some airlines also use them (Vladivostok, VVO, on JAL and ANA)."
      • changedInput schema / properties / segs / items / properties / from / description
        Previous value: -"The departure airport code (labels the breakdown only)."New value: +"The departure airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."
      • changedInput schema / properties / segs / items / properties / to / description
        Previous value: -"The arrival airport code (labels the breakdown only)."New value: +"The arrival airport's IATA code, e.g. SYD. Labels the breakdown; JAL and ANA use it to spot Vladivostok (VVO), and Qantas to pick its route tables."
    • Addedcalculate_qantas_points
    • Addedcalculate_singapore_airlines_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, KL/KLM, LH/Lufthansa, WN/Southwest, SY/Sun Country, UA/United."New value: +"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, NH/ANA, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, JL/Japan Airlines, B6/JetBlue, KL/KLM, KE/Korean Air, LH/Lufthansa, QF/Qantas, SQ/Singapore Airlines, WN/Southwest, SY/Sun Country, UA/United."
  9. 5 tool updates
    • Addedcalculate_air_canada_points
    • Addedcalculate_british_airways_avios
    • Addedcalculate_flying_blue_miles
    • Addedcalculate_lufthansa_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, SY/Sun Country, UA/United."New value: +"Airline code or name: AC/Air Canada, AF/Air France, AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, BA/British Airways, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, KL/KLM, LH/Lufthansa, WN/Southwest, SY/Sun Country, UA/United."
  10. 4 tool updates
    • Addedcalculate_cathay_pacific_miles
    • Addedcalculate_flight_distance
    • Addedget_airport_lounges
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, SY/Sun Country, UA/United."New value: +"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, CX/Cathay Pacific, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, SY/Sun Country, UA/United."
  11. 1 tool update
    • Changedcalculate_frontier_miles1 field changed
      • changedInput schema / properties / card / description
        Previous value: -"Frontier Airlines World Mastercard cardmember. none = No; FC = Yes (Cardmember rate)."New value: +"Frontier Airlines Mastercard cardmember. none = No; FC = Yes (Cardmember rate)."
  12. 3 tool updates
    • Addedcalculate_breeze_points
    • Addedcalculate_sun_country_points
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, UA/United."New value: +"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, MX/Breeze, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, SY/Sun Country, UA/United."
  13. 3 tool updates
    • Addedcalculate_allegiant_points
    • Addedcalculate_frontier_miles
    • Changedget_fare_classes1 field changed
      • changedInput schema / properties / airline / description
        Previous value: -"Airline code or name: AS/Alaska, AA/American, DL/Delta, HA/Hawaiian, B6/JetBlue, WN/Southwest, UA/United."New value: +"Airline code or name: AS/Alaska, G4/Allegiant, AA/American, DL/Delta, F9/Frontier, HA/Hawaiian, B6/JetBlue, WN/Southwest, UA/United."
  14. 1 tool update
    • Changedcalculate_delta_miles1 field changed
      • changedInput schema / properties / fare / description
        Previous value: -"Fare type. CR = Classic (or Refundable); EX = Extra; PB = Basic (First, Premium Select, One); BA = Main Basic (Basic Economy). Delta Comfort, First, Premium Select and Delta One earn as Classic or Extra, whichever you bought."New value: +"Fare type. CR = Classic (or Refundable); EX = Extra; PB = Basic (Comfort, First, Premium Select, One); BA = Main Basic (Basic Economy). Delta Comfort, First, Premium Select and Delta One earn as Classic or Extra, whichever you bought. Their Basic fares earn as Basic."
  15. 8 tool updates
    • Changedcalculate_alaska_miles1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcalculate_american_miles1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcalculate_delta_miles1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcalculate_jetblue_points1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcalculate_southwest_points1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcalculate_united_miles1 field changed
      • addedInput schema / properties / price / maximum
        Added value: +1000000
    • Changedcompare_fare_classes4 fields changed
      • addedInput schema / properties / airline_a / maxLength
        Added value: +64
      • addedInput schema / properties / airline_b / maxLength
        Added value: +64
      • addedInput schema / properties / fare_a / maxLength
        Added value: +64
      • addedInput schema / properties / fare_b / maxLength
        Added value: +64
    • Changedget_fare_classes2 fields changed
      • addedInput schema / properties / airline / maxLength
        Added value: +64
      • addedInput schema / properties / fare_class / maxLength
        Added value: +64
  16. 8 tool updates
    • First observedcalculate_alaska_miles
    • First observedcalculate_american_miles
    • First observedcalculate_delta_miles
    • First observedcalculate_jetblue_points
    • First observedcalculate_southwest_points
    • First observedcalculate_united_miles
    • First observedcompare_fare_classes
    • First observedget_fare_classes

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables finding and comparing cash and award flights, with seat maps and trip planning, ranking options by user-defined per-mile valuations.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Official Industry Standard MCP for Travel Awards, Points, and more. Search award flight availability across multiple airline loyalty programs, find sweet spots, check transfer partners, and get market stats all via MCP.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables real-time flight fare searches across date ranges and multiple destinations, with historical price insights and booking links. Provides one-way and round-trip search tools through MCP.
    4
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources