Skip to main content
Glama

Server Details

Compare prepaid travel eSIM plans by destination, data and trip length; plan multi-country trips.

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 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
MyBestSim
Claude
–

TDQS

A4.3/5.0

Scored across 4 tools

Disambiguation4/5

The four tools target genuinely different granularities: aggregate destination stats, a plan shortlist, a single plan's detail, and multi-country trip planning. get_destination_overview vs search_esim_plans overlap somewhat (both keyed on a country/region), but the descriptions explicitly scope overview as pre-comparison aggregate pricing and search as the plan shortlist, and plan_trip_esim is clearly gated on multi-stage trips.

Naming Consistency4/5

All names are snake_case and mostly follow verb_noun (get_destination_overview, get_esim_plan, search_esim_plans), with the domain noun consistently present. plan_trip_esim breaks the pattern slightly (verb_noun_domain) and mixes get_/search_/plan_ verbs, but the set remains predictable.

Tool Count4/5

Four tools is lean for an eSIM comparator but each has a distinct role covering overview, search, detail and itinerary planning. Slightly thin rather than bloated, and no tool feels redundant.

Completeness4/5

The core lifecycle for a read-only comparator is covered: aggregate discovery, plan search, plan detail, and complex multi-country planning with buy links. The main gap is no way to enumerate supported destinations or regions, so an agent must already know a country/region name before calling, which is a minor workaround.

Available Tools

4 tools
get_destination_overviewTravel eSIM prices for a destinationA
Read-onlyIdempotent
Inspect

Use this when someone asks how much a travel eSIM costs in a country or region, what the average or typical price is, or how much choice there is, before comparing individual plans. Returns the number of plans and providers listed on the MyBestSim comparison page, typical prices computed over all of them (median price of standard packages: 1 GB/7 days, 5, 10 and 20 GB/30 days, unlimited 7 and 30 days; median price per GB), the cheapest plan, the best price per GB, the cheapest unlimited plan if any, the available validities, and the link to the comparison page. Pass currency when you know the traveller's.

NameRequiredDescriptionDefault
currencyNoCurrency to show prices in (ISO 4217, e.g. "EUR", "GBP", "USD"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
destinationYesWhere the traveller is going, as they named it: a country in English or another common language ("Japan", "Japon"), an ISO 3166-1 alpha-2 code ("JP"), a well-known city ("Tokyo"), or one of the regions Europe, Asia, Africa, North America, South America, World, Balkans. Never the traveller's home country.

Output Schema

NameRequiredDescription
cheapestYes
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
planCountYes
destinationYes
comparisonUrlYes
durationsDaysYes
providerCountYes
typicalPricesYes
bestPricePerGbYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.
cheapestUnlimitedYes

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 and openWorldHint=false, so the safety bar is low. The description earns credit beyond that by disclosing the data source (the MyBestSim comparison page, consistent with openWorldHint false) and the exact aggregation method (medians over 1 GB/7 d, 5/10/20 GB/30 d, unlimited 7/30 d, price per GB), which tells the agent what 'typical price' actually means.

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?

Single front-loaded paragraph that opens with the routing condition and closes with the currency hint; nothing is padding. However, the long enumeration of every returned statistic is largely redundant with the existing output schema and makes the sentence unwieldy.

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 read-only aggregation tool with an output schema, full parameter documentation, and complete annotations, the description covers trigger, scope, data source, and aggregation semantics. Nothing an agent needs in order to select or call it correctly 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% and both enums are fully documented in the schema, so baseline 3 applies. The description's only parameter guidance ('Pass currency when you know the traveller's') restates what the schema's currency description already says, adding no new syntax, defaults, or edge cases.

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+resource (aggregate price overview for a destination) and explicitly scopes it as the pre-comparison step, which separates it from get_esim_plan and search_esim_plans. An agent can tell instantly that this answers 'how expensive / how much choice' rather than 'which plan do I buy'.

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?

Clearly states the trigger phrases ('how much a travel eSIM costs', 'average or typical price', 'how much choice there is') and the sequencing rule 'before comparing individual plans', plus when to pass currency. It stops short of naming the sibling tools to call instead, so routing is implied rather than explicit.

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

get_esim_planTravel eSIM plan detailA
Read-onlyIdempotent
Inspect

Use this when someone wants the detail of one plan returned by search_esim_plans or get_destination_overview: coverage (number of countries, region), features, validity and price. Needs the planId and the destination it was found under.

NameRequiredDescriptionDefault
planIdYesplanId returned by search_esim_plans.
currencyNoCurrency to show prices in (ISO 4217, e.g. "EUR", "GBP", "USD"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
destinationYesWhere the traveller is going, as they named it: a country in English or another common language ("Japan", "Japon"), an ISO 3166-1 alpha-2 code ("JP"), a well-known city ("Tokyo"), or one of the regions Europe, Asia, Africa, North America, South America, World, Balkans. Never the traveller's home country.

Output Schema

NameRequiredDescription
planYes
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
destinationYes
comparisonUrlYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. Beyond that, the description adds the coupling constraint that the planId must be paired with the destination it was found under, which is non-obvious behavioral context. It does not cover error behavior for a stale/invalid planId, keeping it short of 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.

Conciseness5/5

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

Two sentences, zero waste. The usage trigger is front-loaded and the payload (coverage, features, validity, price) plus required inputs follow compactly.

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 annotations covering the safety profile, a full output schema explaining the return shape, and 100% schema coverage of all four parameters, the description supplies everything else an agent needs: when to call it, what it yields, and the planId/destination dependency.

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 planId, destination, currency and language in detail. The description only restates that planId and destination are needed, adding the nuance that the destination must be the one the plan was found under. 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 (return the detail of one plan) and enumerates what the detail contains: coverage, features, validity, price. It ties the tool to its origin tools (search_esim_plans, get_destination_overview), so an agent can distinguish it from the sibling search/list tools immediately.

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?

"Use this when someone wants the detail of one plan returned by search_esim_plans or get_destination_overview" gives a clear trigger condition and implies the prerequisite that the plan must already have been surfaced by a search. No explicit when-not-to-use case (e.g. browsing many plans), but the routing is clear.

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

plan_trip_esimPlan eSIMs for a multi-country tripA
Read-onlyIdempotent
Inspect

Use this when one trip visits SEVERAL countries or regions, e.g. "Japan then China", "two weeks in France, Italy and Spain", "Thailand, Vietnam and Cambodia in March". Pass EVERY stage in travel order, with the days spent in each when known (or totalDurationDays), and the data need. Compares, at the real total price, every way to cover the trip: (a) one eSIM for every stage (regional or worldwide plan; coverage is checked country by country against the MyBestSim catalogue, never guessed from a plan name), (b) one plan per stage, and combinations (a regional plan for some stages, other plans for the rest; several regional plans). A plan is only proposed for stages it covers, for their whole duration and data need. Recommends the cheapest total; prefers fewer eSIMs unless installing more saves at least $2 per extra eSIM, and says so. Gives the reason, the number of eSIMs, total price, data and validity, and links to the MyBestSim pages where the traveller buys. List the countries themselves as stages: a region stage (Europe, Asia…) only matches plans listed on that region page. Ask how long they stay and how much data they use when they have not said: without it a 7-day trip with standard use is assumed and reported in "assumptions". Prepaid travel eSIMs only.

NameRequiredDescriptionDefault
dataGbNoData for the WHOLE trip in GB, when the traveller gives a figure (spread over the stages by days). Unlimited plans always qualify.
currencyNoCurrency to show prices in (ISO 4217, e.g. "EUR", "GBP", "USD"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.
dataNeedNoData appetite when no figure is given: light ≈ 0.3 GB/day, standard ≈ 0.7 GB/day, heavy ≈ 1.5 GB/day. Default standard. Ignored when dataGb is set.
featuresNoFeatures every proposed plan must include.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
itineraryYesThe stages of the trip in travel order (1 to 8). A stage is a country, a well-known city or one of the regions (Europe, Asia…).
unlimitedNotrue = unlimited plans only; false = fixed-data plans only; omit for both.
totalDurationDaysNoWhole trip length in days, when the stages are not dated one by one (a single plan must last this long).

Output Schema

NameRequiredDescription
kindYes
dataGbYesData needed for the whole trip; null for unlimited-only.
stagesYes
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
perStageYes
totalDaysYes
singlePlanYes
assumptionsYesWhat was assumed because the traveller did not say it (null = given). Ask for the real value to refine.
combinationYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.
recommendationYes
optionsByEsimCountYesCheapest real total for each possible number of eSIMs (every split of the stages compared), to show what one more or one fewer eSIM costs.
plansCoveringAllStagesYesPlans proven to cover every stage (listed on the page of each stage, or with a catalogue line in each country of the trip), before the length/data/feature criteria.
singlePlanAlternativesYesOther single plans covering every stage (up to 2).

TDQS

A4.6/5.0
Behavior5/5

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

Despite annotations already covering the safety profile (readOnly/idempotent/non-destructive), the description discloses substantive behavior: coverage is verified country-by-country against the catalogue rather than inferred from plan names, a tie-break rule (prefer fewer eSIMs unless saving ≥$2 per extra eSIM), fallback assumptions (7-day standard-use trip reported in 'assumptions'), and what the answer contains (reason, eSIM count, total price, data, validity, buy links).

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 trigger and is information-dense with little filler, but it is delivered as one long paragraph mixing trigger, algorithm, tie-break rule, and data-collection instructions. Bullets or sentence breaks would make the same content easier to scan without losing anything.

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 8-parameter comparison tool with a nested itinerary and an output schema, the description covers the remaining burden well: defaults for unspecified data/duration, the assumptions mechanism, the selection algorithm, and the tie-break policy. Nothing an agent needs to invoke 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 adds real meaning beyond it: stages must be passed in travel order, each stage should be the country itself rather than a region label (a region stage only matches plans on that region page), and days-or-totalDurationDays may substitute for per-stage durations. This is genuine guidance the schema alone does not convey.

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 precise verb+resource+scope: planning eSIM coverage for a trip that visits SEVERAL countries/regions, with concrete examples ('Japan then China'). The multi-stage comparison framing cleanly separates it from single-plan siblings like search_esim_plans and get_esim_plan, 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 Guidelines4/5

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

Gives an explicit trigger condition ('Use this when one trip visits SEVERAL countries or regions') plus illustrative itineraries, and adds procedural guidance (ask for duration/data when unspecified; list countries as stages). It never names an alternative tool or states an explicit when-not case, so it falls 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.

search_esim_plansCompare travel eSIM plansA
Read-onlyIdempotent
Inspect

Use this when someone is choosing a travel eSIM or needs mobile data abroad for a given country or region, e.g. "cheapest eSIM for Japan", "10 GB for two weeks in Europe", "unlimited data in the USA". Returns a shortlist (up to 10, at most 2 per provider) from the MyBestSim comparator: data allowance, validity, price in the traveller's currency (pass currency; also USD and EUR), 5G/hotspot/calls/SMS, and the link to the full comparison page on mybestsim.com where the traveller buys from the provider. Pass durationDays and dataGb (or dataNeed) whenever the traveller mentions trip length or usage, and ask for them when unknown: without them a 7-day trip with standard use (0.7 GB/day) is assumed and reported in "assumptions"; with dataGb but no durationDays, plans valid for fewer than 7 days are excluded. For a trip through several countries or regions, call plan_trip_esim with every stage instead of searching each country. Prepaid travel eSIMs only: not home mobile contracts, physical SIM cards or a carrier's roaming pass.

NameRequiredDescriptionDefault
sortNovalue (default) = the cheapest plan that covers the data need (given, or assumed standard use) for the trip length; with unlimited=true and no figure, the lowest price per GB of fair use; cheapest = lowest total price; data = most data; days = longest validity. The need and trip length filter every sort.
limitNoNumber of plans to return (default 5).
dataGbNoMinimum data in GB, when the traveller gives a figure. Unlimited plans always qualify.
currencyNoCurrency to show prices in (ISO 4217, e.g. "EUR", "GBP", "USD"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.
dataNeedNoData appetite when no figure is given: light ≈ 0.3 GB/day (maps, messaging), standard ≈ 0.7 GB/day (social, some video), heavy ≈ 1.5 GB/day (streaming, hotspot). Multiplied by durationDays; without it a 7-day trip is assumed, and plans valid for fewer than 7 days are excluded. Ignored when dataGb is set.
featuresNoFeatures every returned plan must include.
languageNoLanguage of the conversation (ISO 639-1). Links open our comparison page in that language when it exists, otherwise in English. Default "en".
unlimitedNotrue = unlimited plans only; false = fixed-data plans only; omit for both.
destinationYesWhere the traveller is going, as they named it: a country in English or another common language ("Japan", "Japon"), an ISO 3166-1 alpha-2 code ("JP"), a well-known city ("Tokyo"), or one of the regions Europe, Asia, Africa, North America, South America, World, Balkans. Never the traveller's home country.
maxPriceUsdNoMaximum total price in USD.
durationDaysNoTrip length in days: plans valid for fewer days are excluded. Default 7 (reported in assumptions).

Output Schema

NameRequiredDescription
sortYes
plansYes
matchedYesPlans matching the criteria, before the shortlist.
currencyYesCurrency of price, pricePerGb and totals (ISO 4217).
languageYes
minDataGbYes
totalPlansYesPlans listed on the comparison page of the destination.
assumptionsYesWhat was assumed because the traveller did not say it (null = given). Ask for the real value to refine.
destinationYes
comparisonUrlYes
currencySymbolYesSymbol the MyBestSim page uses for that currency.
minDurationDaysYesMinimum validity applied (given, or assumed); null when none.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses return-shape behavior (shortlist up to 10, max 2 per provider, which attributes are returned) and, more importantly, undocumented default behavior: a 7-day trip at 0.7 GB/day is assumed and reported in "assumptions", and with dataGb but no durationDays plans valid for under 7 days are dropped. These filtering and fallback semantics go well past what 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?

It is front-loaded with the usage context and every sentence largely earns its place, but it is dense and a few clauses (currency default behavior, dataNeed rate detail) restate what the schema descriptions already carry. Slightly leaner would be ideal.

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 re-explained, yet the description still covers defaults, filtering rules, and the sibling routing needed to call this correctly. Nothing an agent needs to invoke it 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 already 100%, so the baseline is 3, but the description adds genuine cross-parameter guidance: when to pass durationDays/dataGb vs dataNeed, and the interaction where dataGb without durationDays excludes short-validity plans. It also explains currency is shown in the traveller's currency plus USD/EUR, value beyond the enum list.

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 (search/compare travel eSIM plans) and frames the exact user situation (choosing a travel eSIM for a country or region). It explicitly separates itself from the sibling plan_trip_esim for multi-country trips, so an agent can route correctly without opening schemas.

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 concrete triggering examples ("cheapest eSIM for Japan", "10 GB for two weeks in Europe"), names the condition that selects the alternative tool ("For a trip through several countries or regions, call plan_trip_esim"), and states exclusions (prepaid travel eSIMs only; not home contracts, physical SIMs, or roaming passes).

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. 4 tool updates
    • Changedget_destination_overview8 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
        +  "enum": [
        +    "USD",
        +    "EUR",
        +    "GBP",
        +    "CAD",
        +    "AUD",
        +    "JPY",
        +    "CNY",
        +    "KRW",
        +    "INR",
        +    "THB",
        +    "IDR",
        +    "MYR",
        +    "SGD",
        +    "PHP",
        +    "VND",
        +    "PKR",
        +    "BDT",
        +    "LKR",
        +    "AED",
        +    "SAR",
        +    "ILS",
        +    "TRY",
        +    "ZAR",
        +    "KES",
        +    "NGN",
        +    "EGP",
        +    "MAD",
        +    "BRL",
        +    "MXN",
        +    "COP",
        +    "CLP",
        +    "PEN",
        +    "NZD",
        +    "CHF",
        +    "SEK",
        +    "NOK",
        +    "DKK",
        +    "PLN",
        +    "CZK",
        +    "HUF",
        +    "RON",
        +    "BGN",
        +    "RUB"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / bestPricePerGb / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page that lists this plan.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "price": {
        +        "description": "Price in the response currency, as the MyBestSim page shows it.",
        +        "type": "number"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGb": {
        +        "description": "Price per GB in the response currency; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "price",
        +      "pricePerGb",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / cheapest / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page that lists this plan.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "price": {
        +        "description": "Price in the response currency, as the MyBestSim page shows it.",
        +        "type": "number"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGb": {
        +        "description": "Price per GB in the response currency; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "price",
        +      "pricePerGb",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / cheapestUnlimited / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page that lists this plan.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "price": {
        +        "description": "Price in the response currency, as the MyBestSim page shows it.",
        +        "type": "number"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGb": {
        +        "description": "Price per GB in the response currency; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "price",
        +      "pricePerGb",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / currency
        Added value: +{
        +  "description": "Currency of price, pricePerGb and totals (ISO 4217).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / currencySymbol
        Added value: +{
        +  "description": "Symbol the MyBestSim page uses for that currency.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / typicalPrices
        Added value: +{
        +  "anyOf": [
        +    {
        +      "description": "Typical prices on the comparison page, computed over ALL its plans (never a sample), in the response currency. For each standard package: median, lowest and highest price of the plans with exactly that data and validity (unlimited: any unlimited plan of that validity); planCount 0 = no such plan, prices null. medianPricePerGb: median of price ÷ GB over every fixed-data plan. Use these for \"average\" or \"typical\" price questions; a median is the middle plan, not the mean.",
        +      "properties": {
        +        "fixedDataPlanCount": {
        +          "type": "integer"
        +        },
        +        "medianPricePerGb": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "packages": {
        +          "items": {
        +            "properties": {
        +              "dataGb": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "durationDays": {
        +                "type": "integer"
        +              },
        +              "high": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "low": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "median": {
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "planCount": {
        +                "type": "integer"
        +              },
        +              "unlimited": {
        +                "type": "boolean"
        +              }
        +            },
        +            "required": [
        +              "dataGb",
        +              "unlimited",
        +              "durationDays",
        +              "planCount",
        +              "median",
        +              "low",
        +              "high"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "packages",
        +        "medianPricePerGb",
        +        "fixedDataPlanCount"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "destination",
        -  "language",
        -  "comparisonUrl",
        -  "planCount",
        -  "providerCount",
        -  "cheapest",
        -  "bestPricePerGb",
        -  "cheapestUnlimited",
        -  "durationsDays"
        -]New value: +[
        +  "destination",
        +  "language",
        +  "comparisonUrl",
        +  "currency",
        +  "currencySymbol",
        +  "planCount",
        +  "providerCount",
        +  "typicalPrices",
        +  "cheapest",
        +  "bestPricePerGb",
        +  "cheapestUnlimited",
        +  "durationsDays"
        +]
    • Changedget_esim_plan7 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
        +  "enum": [
        +    "USD",
        +    "EUR",
        +    "GBP",
        +    "CAD",
        +    "AUD",
        +    "JPY",
        +    "CNY",
        +    "KRW",
        +    "INR",
        +    "THB",
        +    "IDR",
        +    "MYR",
        +    "SGD",
        +    "PHP",
        +    "VND",
        +    "PKR",
        +    "BDT",
        +    "LKR",
        +    "AED",
        +    "SAR",
        +    "ILS",
        +    "TRY",
        +    "ZAR",
        +    "KES",
        +    "NGN",
        +    "EGP",
        +    "MAD",
        +    "BRL",
        +    "MXN",
        +    "COP",
        +    "CLP",
        +    "PEN",
        +    "NZD",
        +    "CHF",
        +    "SEK",
        +    "NOK",
        +    "DKK",
        +    "PLN",
        +    "CZK",
        +    "HUF",
        +    "RON",
        +    "BGN",
        +    "RUB"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / currency
        Added value: +{
        +  "description": "Currency of price, pricePerGb and totals (ISO 4217).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / currencySymbol
        Added value: +{
        +  "description": "Symbol the MyBestSim page uses for that currency.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plan / properties / price
        Added value: +{
        +  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / plan / properties / pricePerGb
        Added value: +{
        +  "description": "Price per GB in the response currency; null when unlimited.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / plan / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "price",
        +  "pricePerGb",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "destination",
        -  "language",
        -  "comparisonUrl",
        -  "plan"
        -]New value: +[
        +  "destination",
        +  "language",
        +  "comparisonUrl",
        +  "currency",
        +  "currencySymbol",
        +  "plan"
        +]
    • Changedplan_trip_esim13 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
        +  "enum": [
        +    "USD",
        +    "EUR",
        +    "GBP",
        +    "CAD",
        +    "AUD",
        +    "JPY",
        +    "CNY",
        +    "KRW",
        +    "INR",
        +    "THB",
        +    "IDR",
        +    "MYR",
        +    "SGD",
        +    "PHP",
        +    "VND",
        +    "PKR",
        +    "BDT",
        +    "LKR",
        +    "AED",
        +    "SAR",
        +    "ILS",
        +    "TRY",
        +    "ZAR",
        +    "KES",
        +    "NGN",
        +    "EGP",
        +    "MAD",
        +    "BRL",
        +    "MXN",
        +    "COP",
        +    "CLP",
        +    "PEN",
        +    "NZD",
        +    "CHF",
        +    "SEK",
        +    "NOK",
        +    "DKK",
        +    "PLN",
        +    "CZK",
        +    "HUF",
        +    "RON",
        +    "BGN",
        +    "RUB"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / combination / anyOf
        Previous value: -[
        -  {
        -    "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page that lists this plan.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "price": {
        +                  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +                  "type": "number"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGb": {
        +                  "description": "Price per GB in the response currency; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "price",
        +                "pricePerGb",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "total": {
        +        "description": "Sum of the plan prices in the response currency.",
        +        "type": "number"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "total",
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / currency / description
        Added value: +"Currency of price, pricePerGb and totals (ISO 4217)."
      • addedOutput schema / properties / currencySymbol
        Added value: +{
        +  "description": "Symbol the MyBestSim page uses for that currency.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / optionsByEsimCount / items / properties / total
        Added value: +{
        +  "description": "In the response currency.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / optionsByEsimCount / items / required
        Previous value: -[
        -  "esimCount",
        -  "totalUsd",
        -  "stageGroups"
        -]New value: +[
        +  "esimCount",
        +  "total",
        +  "totalUsd",
        +  "stageGroups"
        +]
      • changedOutput schema / properties / perStage / anyOf
        Previous value: -[
        -  {
        -    "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page that lists this plan.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "price": {
        +                  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +                  "type": "number"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGb": {
        +                  "description": "Price per GB in the response currency; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "price",
        +                "pricePerGb",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "total": {
        +        "description": "Sum of the plan prices in the response currency.",
        +        "type": "number"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "total",
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / recommendation / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "links": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "reason": {
        -        "type": "string"
        -      },
        -      "strategy": {
        -        "enum": [
        -          "single",
        -          "perStage",
        -          "combination"
        -        ],
        -        "type": "string"
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "strategy",
        -      "reason",
        -      "totalUsd",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "links": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "reason": {
        +        "type": "string"
        +      },
        +      "strategy": {
        +        "enum": [
        +          "single",
        +          "perStage",
        +          "combination"
        +        ],
        +        "type": "string"
        +      },
        +      "total": {
        +        "type": "number"
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "strategy",
        +      "reason",
        +      "total",
        +      "totalUsd",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / singlePlan / anyOf
        Previous value: -[
        -  {
        -    "description": "(a) One eSIM covering every stage; null when none qualifies.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page that lists this plan.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "(a) One eSIM covering every stage; null when none qualifies.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "price": {
        +                  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +                  "type": "number"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGb": {
        +                  "description": "Price per GB in the response currency; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "price",
        +                "pricePerGb",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "total": {
        +        "description": "Sum of the plan prices in the response currency.",
        +        "type": "number"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "total",
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / singlePlanAlternatives / items / properties / price
        Added value: +{
        +  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / singlePlanAlternatives / items / properties / pricePerGb
        Added value: +{
        +  "description": "Price per GB in the response currency; null when unlimited.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / singlePlanAlternatives / items / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "price",
        +  "pricePerGb",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "kind",
        -  "language",
        -  "currency",
        -  "totalDays",
        -  "dataGb",
        -  "assumptions",
        -  "stages",
        -  "singlePlan",
        -  "singlePlanAlternatives",
        -  "plansCoveringAllStages",
        -  "perStage",
        -  "optionsByEsimCount",
        -  "combination",
        -  "recommendation"
        -]New value: +[
        +  "kind",
        +  "language",
        +  "currency",
        +  "currencySymbol",
        +  "totalDays",
        +  "dataGb",
        +  "assumptions",
        +  "stages",
        +  "singlePlan",
        +  "singlePlanAlternatives",
        +  "plansCoveringAllStages",
        +  "perStage",
        +  "optionsByEsimCount",
        +  "combination",
        +  "recommendation"
        +]
    • Changedsearch_esim_plans7 fields changed
      • addedInput schema / properties / currency
        Added value: +{
        +  "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
        +  "enum": [
        +    "USD",
        +    "EUR",
        +    "GBP",
        +    "CAD",
        +    "AUD",
        +    "JPY",
        +    "CNY",
        +    "KRW",
        +    "INR",
        +    "THB",
        +    "IDR",
        +    "MYR",
        +    "SGD",
        +    "PHP",
        +    "VND",
        +    "PKR",
        +    "BDT",
        +    "LKR",
        +    "AED",
        +    "SAR",
        +    "ILS",
        +    "TRY",
        +    "ZAR",
        +    "KES",
        +    "NGN",
        +    "EGP",
        +    "MAD",
        +    "BRL",
        +    "MXN",
        +    "COP",
        +    "CLP",
        +    "PEN",
        +    "NZD",
        +    "CHF",
        +    "SEK",
        +    "NOK",
        +    "DKK",
        +    "PLN",
        +    "CZK",
        +    "HUF",
        +    "RON",
        +    "BGN",
        +    "RUB"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / currency / description
        Added value: +"Currency of price, pricePerGb and totals (ISO 4217)."
      • addedOutput schema / properties / currencySymbol
        Added value: +{
        +  "description": "Symbol the MyBestSim page uses for that currency.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / plans / items / properties / price
        Added value: +{
        +  "description": "Price in the response currency, as the MyBestSim page shows it.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / plans / items / properties / pricePerGb
        Added value: +{
        +  "description": "Price per GB in the response currency; null when unlimited.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / plans / items / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "price",
        +  "pricePerGb",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "destination",
        -  "language",
        -  "comparisonUrl",
        -  "currency",
        -  "sort",
        -  "minDataGb",
        -  "minDurationDays",
        -  "assumptions",
        -  "matched",
        -  "totalPlans",
        -  "plans"
        -]New value: +[
        +  "destination",
        +  "language",
        +  "comparisonUrl",
        +  "currency",
        +  "currencySymbol",
        +  "sort",
        +  "minDataGb",
        +  "minDurationDays",
        +  "assumptions",
        +  "matched",
        +  "totalPlans",
        +  "plans"
        +]
  2. 4 tool updates
    • Changedget_destination_overview3 fields changed
      • changedOutput schema / properties / bestPricePerGb / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "listedOnPage": {
        -        "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page for the destination.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url",
        -      "listedOnPage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / cheapest / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "listedOnPage": {
        -        "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page for the destination.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url",
        -      "listedOnPage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / cheapestUnlimited / anyOf
        Previous value: -[
        -  {
        -    "properties": {
        -      "calls": {
        -        "type": "boolean"
        -      },
        -      "countryCount": {
        -        "type": "integer"
        -      },
        -      "coverage": {
        -        "enum": [
        -          "country",
        -          "regional",
        -          "global"
        -        ],
        -        "type": "string"
        -      },
        -      "dataGb": {
        -        "description": "Total data in GB; null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "dataLabel": {
        -        "type": "string"
        -      },
        -      "durationDays": {
        -        "type": "integer"
        -      },
        -      "fiveG": {
        -        "type": "boolean"
        -      },
        -      "hotspot": {
        -        "type": "boolean"
        -      },
        -      "listedOnPage": {
        -        "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -        "type": "boolean"
        -      },
        -      "planId": {
        -        "description": "Identifier to pass to get_esim_plan.",
        -        "type": "string"
        -      },
        -      "priceEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "pricePerGbUsd": {
        -        "description": "Null when unlimited.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "priceUsd": {
        -        "type": "number"
        -      },
        -      "provider": {
        -        "type": "string"
        -      },
        -      "providerSlug": {
        -        "type": "string"
        -      },
        -      "regionName": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sms": {
        -        "type": "boolean"
        -      },
        -      "unlimited": {
        -        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -        "type": "boolean"
        -      },
        -      "url": {
        -        "description": "MyBestSim comparison page for the destination.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "planId",
        -      "provider",
        -      "providerSlug",
        -      "unlimited",
        -      "dataGb",
        -      "dataLabel",
        -      "durationDays",
        -      "priceUsd",
        -      "priceEur",
        -      "pricePerGbUsd",
        -      "coverage",
        -      "regionName",
        -      "countryCount",
        -      "fiveG",
        -      "hotspot",
        -      "calls",
        -      "sms",
        -      "url",
        -      "listedOnPage"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "calls": {
        +        "type": "boolean"
        +      },
        +      "countryCount": {
        +        "type": "integer"
        +      },
        +      "coverage": {
        +        "enum": [
        +          "country",
        +          "regional",
        +          "global"
        +        ],
        +        "type": "string"
        +      },
        +      "dataGb": {
        +        "description": "Total data in GB; null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "dataLabel": {
        +        "type": "string"
        +      },
        +      "durationDays": {
        +        "type": "integer"
        +      },
        +      "fiveG": {
        +        "type": "boolean"
        +      },
        +      "hotspot": {
        +        "type": "boolean"
        +      },
        +      "planId": {
        +        "description": "Identifier to pass to get_esim_plan.",
        +        "type": "string"
        +      },
        +      "priceEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "pricePerGbUsd": {
        +        "description": "Null when unlimited.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "priceUsd": {
        +        "type": "number"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "providerSlug": {
        +        "type": "string"
        +      },
        +      "regionName": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sms": {
        +        "type": "boolean"
        +      },
        +      "unlimited": {
        +        "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +        "type": "boolean"
        +      },
        +      "url": {
        +        "description": "MyBestSim comparison page that lists this plan.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "planId",
        +      "provider",
        +      "providerSlug",
        +      "unlimited",
        +      "dataGb",
        +      "dataLabel",
        +      "durationDays",
        +      "priceUsd",
        +      "priceEur",
        +      "pricePerGbUsd",
        +      "coverage",
        +      "regionName",
        +      "countryCount",
        +      "fiveG",
        +      "hotspot",
        +      "calls",
        +      "sms",
        +      "url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedget_esim_plan3 fields changed
      • removedOutput schema / properties / plan / properties / listedOnPage
        Removed value: -{
        -  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -  "type": "boolean"
        -}
      • changedOutput schema / properties / plan / properties / url / description
        Previous value: -"MyBestSim comparison page for the destination."New value: +"MyBestSim comparison page that lists this plan."
      • changedOutput schema / properties / plan / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url",
        -  "listedOnPage"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
    • Changedplan_trip_esim6 fields changed
      • changedOutput schema / properties / combination / anyOf
        Previous value: -[
        -  {
        -    "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open: the region page if one plan covers everything, else one page per country.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "listedOnPage": {
        -              "description": "True when plan.url opens a page that lists this exact plan. False for a multi-country plan that the comparison pages of these stages replace with a similar offer: the plan exists and covers the stages, but the traveller will not see it listed there.",
        -              "type": "boolean"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy: the region page when the plan covers several stages and one exists, else the page of a stage.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "listedOnPage": {
        -                  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page for the destination.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url",
        -                "listedOnPage"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl",
        -            "listedOnPage"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / perStage / anyOf
        Previous value: -[
        -  {
        -    "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open: the region page if one plan covers everything, else one page per country.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "listedOnPage": {
        -              "description": "True when plan.url opens a page that lists this exact plan. False for a multi-country plan that the comparison pages of these stages replace with a similar offer: the plan exists and covers the stages, but the traveller will not see it listed there.",
        -              "type": "boolean"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy: the region page when the plan covers several stages and one exists, else the page of a stage.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "listedOnPage": {
        -                  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page for the destination.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url",
        -                "listedOnPage"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl",
        -            "listedOnPage"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / singlePlan / anyOf
        Previous value: -[
        -  {
        -    "description": "(a) One eSIM covering every stage; null when none qualifies.",
        -    "properties": {
        -      "esimCount": {
        -        "type": "integer"
        -      },
        -      "links": {
        -        "description": "MyBestSim pages to open: the region page if one plan covers everything, else one page per country.",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "segments": {
        -        "items": {
        -          "description": "One eSIM and the stages it covers.",
        -          "properties": {
        -            "dataGb": {
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "days": {
        -              "description": "Validity needed.",
        -              "type": "integer"
        -            },
        -            "listedOnPage": {
        -              "description": "True when plan.url opens a page that lists this exact plan. False for a multi-country plan that the comparison pages of these stages replace with a similar offer: the plan exists and covers the stages, but the traveller will not see it listed there.",
        -              "type": "boolean"
        -            },
        -            "pageUrl": {
        -              "description": "MyBestSim page to compare and buy: the region page when the plan covers several stages and one exists, else the page of a stage.",
        -              "type": "string"
        -            },
        -            "plan": {
        -              "properties": {
        -                "calls": {
        -                  "type": "boolean"
        -                },
        -                "countryCount": {
        -                  "type": "integer"
        -                },
        -                "coverage": {
        -                  "enum": [
        -                    "country",
        -                    "regional",
        -                    "global"
        -                  ],
        -                  "type": "string"
        -                },
        -                "dataGb": {
        -                  "description": "Total data in GB; null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "dataLabel": {
        -                  "type": "string"
        -                },
        -                "durationDays": {
        -                  "type": "integer"
        -                },
        -                "fiveG": {
        -                  "type": "boolean"
        -                },
        -                "hotspot": {
        -                  "type": "boolean"
        -                },
        -                "listedOnPage": {
        -                  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -                  "type": "boolean"
        -                },
        -                "planId": {
        -                  "description": "Identifier to pass to get_esim_plan.",
        -                  "type": "string"
        -                },
        -                "priceEur": {
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "pricePerGbUsd": {
        -                  "description": "Null when unlimited.",
        -                  "type": [
        -                    "number",
        -                    "null"
        -                  ]
        -                },
        -                "priceUsd": {
        -                  "type": "number"
        -                },
        -                "provider": {
        -                  "type": "string"
        -                },
        -                "providerSlug": {
        -                  "type": "string"
        -                },
        -                "regionName": {
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "sms": {
        -                  "type": "boolean"
        -                },
        -                "unlimited": {
        -                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        -                  "type": "boolean"
        -                },
        -                "url": {
        -                  "description": "MyBestSim comparison page for the destination.",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "planId",
        -                "provider",
        -                "providerSlug",
        -                "unlimited",
        -                "dataGb",
        -                "dataLabel",
        -                "durationDays",
        -                "priceUsd",
        -                "priceEur",
        -                "pricePerGbUsd",
        -                "coverage",
        -                "regionName",
        -                "countryCount",
        -                "fiveG",
        -                "hotspot",
        -                "calls",
        -                "sms",
        -                "url",
        -                "listedOnPage"
        -              ],
        -              "type": "object"
        -            },
        -            "stages": {
        -              "description": "Indexes (0-based) of the stages covered, in travel order.",
        -              "items": {
        -                "type": "integer"
        -              },
        -              "type": "array"
        -            }
        -          },
        -          "required": [
        -            "stages",
        -            "days",
        -            "dataGb",
        -            "plan",
        -            "pageUrl",
        -            "listedOnPage"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      },
        -      "totalEur": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "totalUsd": {
        -        "type": "number"
        -      }
        -    },
        -    "required": [
        -      "totalUsd",
        -      "totalEur",
        -      "esimCount",
        -      "segments",
        -      "links"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "(a) One eSIM covering every stage; null when none qualifies.",
        +    "properties": {
        +      "esimCount": {
        +        "type": "integer"
        +      },
        +      "links": {
        +        "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "segments": {
        +        "items": {
        +          "description": "One eSIM and the stages it covers.",
        +          "properties": {
        +            "dataGb": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "days": {
        +              "description": "Validity needed.",
        +              "type": "integer"
        +            },
        +            "pageUrl": {
        +              "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
        +              "type": "string"
        +            },
        +            "plan": {
        +              "properties": {
        +                "calls": {
        +                  "type": "boolean"
        +                },
        +                "countryCount": {
        +                  "type": "integer"
        +                },
        +                "coverage": {
        +                  "enum": [
        +                    "country",
        +                    "regional",
        +                    "global"
        +                  ],
        +                  "type": "string"
        +                },
        +                "dataGb": {
        +                  "description": "Total data in GB; null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "dataLabel": {
        +                  "type": "string"
        +                },
        +                "durationDays": {
        +                  "type": "integer"
        +                },
        +                "fiveG": {
        +                  "type": "boolean"
        +                },
        +                "hotspot": {
        +                  "type": "boolean"
        +                },
        +                "planId": {
        +                  "description": "Identifier to pass to get_esim_plan.",
        +                  "type": "string"
        +                },
        +                "priceEur": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "pricePerGbUsd": {
        +                  "description": "Null when unlimited.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "priceUsd": {
        +                  "type": "number"
        +                },
        +                "provider": {
        +                  "type": "string"
        +                },
        +                "providerSlug": {
        +                  "type": "string"
        +                },
        +                "regionName": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sms": {
        +                  "type": "boolean"
        +                },
        +                "unlimited": {
        +                  "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
        +                  "type": "boolean"
        +                },
        +                "url": {
        +                  "description": "MyBestSim comparison page that lists this plan.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "planId",
        +                "provider",
        +                "providerSlug",
        +                "unlimited",
        +                "dataGb",
        +                "dataLabel",
        +                "durationDays",
        +                "priceUsd",
        +                "priceEur",
        +                "pricePerGbUsd",
        +                "coverage",
        +                "regionName",
        +                "countryCount",
        +                "fiveG",
        +                "hotspot",
        +                "calls",
        +                "sms",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "stages": {
        +              "description": "Indexes (0-based) of the stages covered, in travel order.",
        +              "items": {
        +                "type": "integer"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "stages",
        +            "days",
        +            "dataGb",
        +            "plan",
        +            "pageUrl"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "totalEur": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "totalUsd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "totalUsd",
        +      "totalEur",
        +      "esimCount",
        +      "segments",
        +      "links"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / singlePlanAlternatives / items / properties / listedOnPage
        Removed value: -{
        -  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -  "type": "boolean"
        -}
      • changedOutput schema / properties / singlePlanAlternatives / items / properties / url / description
        Previous value: -"MyBestSim comparison page for the destination."New value: +"MyBestSim comparison page that lists this plan."
      • changedOutput schema / properties / singlePlanAlternatives / items / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url",
        -  "listedOnPage"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
    • Changedsearch_esim_plans4 fields changed
      • removedOutput schema / properties / plans / items / properties / listedOnPage
        Removed value: -{
        -  "description": "True when url opens a MyBestSim page that lists this exact plan. False when that page shows a similar offer instead: the plan exists at the provider and is compared here, but the traveller will not see it listed on the page. Say so when recommending it.",
        -  "type": "boolean"
        -}
      • changedOutput schema / properties / plans / items / properties / url / description
        Previous value: -"MyBestSim comparison page for the destination."New value: +"MyBestSim comparison page that lists this plan."
      • changedOutput schema / properties / plans / items / required
        Previous value: -[
        -  "planId",
        -  "provider",
        -  "providerSlug",
        -  "unlimited",
        -  "dataGb",
        -  "dataLabel",
        -  "durationDays",
        -  "priceUsd",
        -  "priceEur",
        -  "pricePerGbUsd",
        -  "coverage",
        -  "regionName",
        -  "countryCount",
        -  "fiveG",
        -  "hotspot",
        -  "calls",
        -  "sms",
        -  "url",
        -  "listedOnPage"
        -]New value: +[
        +  "planId",
        +  "provider",
        +  "providerSlug",
        +  "unlimited",
        +  "dataGb",
        +  "dataLabel",
        +  "durationDays",
        +  "priceUsd",
        +  "priceEur",
        +  "pricePerGbUsd",
        +  "coverage",
        +  "regionName",
        +  "countryCount",
        +  "fiveG",
        +  "hotspot",
        +  "calls",
        +  "sms",
        +  "url"
        +]
      • changedOutput schema / properties / totalPlans / description
        Previous value: -"Plans compared for the destination (all of them, whatever their commercial terms)."New value: +"Plans listed on the comparison page of the destination."
  3. 4 tool updates
    • First observedget_destination_overview
    • First observedget_esim_plan
    • First observedplan_trip_esim
    • First observedsearch_esim_plans

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to search and compare travel eSIM data plans by destination, trip length, data amount, unlimited/daily type, local phone number, local or roaming network, multi-country coverage, budget, hotspot and 5G, returning plan details plus a link to buy. Read-only with no sign-in or API key required.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching, retrieving, comparing, and listing travel eSIM plans by destination, trip length, data needs, and price from a live catalog, returning plan details and purchase-page links.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Search and buy travel eSIMs for 200+ countries, with specialized China plans that deliver uncensored internet without a VPN. Exposes five read-only tools to search plans, check device eSIM compatibility, get plan details, get help, and generate a secure on-site checkout link.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources