Skip to main content
Glama

cwsi.net Fare Classes & Mileage Calculators

SAS EuroBonus Points Calculator

calculate_sas_points
Read-onlyIdempotent

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.

Input Schema

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

NameRequiredDescriptionDefault
linkYes
notesYes
inputsYes
airlineYes
headlineYes
progressNo
breakdownYes
calculatorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 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 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"
      -]
  2. Added

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources