Skip to main content
Glama

cwsi.net Fare Classes & Mileage Calculators

Japan Airlines Miles and FLY ON Points Calculator

calculate_japan_airlines_miles
Read-onlyIdempotent

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.

Input Schema

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

NameRequiredDescriptionDefault
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema 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"
      +}
  2. Changed3 schema 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)."
  3. Changed3 schema 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)."
  4. Added

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources