MCP-Server

e-eSIM Catalog

com.e-esim/esim-catalog
Commerce & Retail Reisen & Hospitality Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Searches worldwide travel eSIM plans, returns pricing and coverage details, and provides purchase links.

get_plan_details
Get plan details
Full facts for one e-eSIM plan by product id: coverage list, data and speed rules (daily allowance, reduced speed, fair use), validity clock, expiry date, notice, carrier, price, reviews and link — quoted in the customer's bucket or currency when given.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['product_id'], 'properties': {'bucket': {'type': 'string', 'description': 'Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.'}, 'currency': {'type': 'string', 'description': 'Optional ISO 4217 code. Every price in the result is quoted in it.'}, 'language': {'type': 'string', 'description': 'ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.'}, 'product_id': {'type': 'integer', 'description': 'Product id from search_esim_plans or recommend_plan.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'fup': {'type': 'string', 'description': 'Same as fair_use (1.0.x name).'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Trip Surf: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days.'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Daily Surf', 'Trip Surf', 'All You Can Surf'], 'type': 'string', 'description': 'Plan type. Brand names — keep in English.'}, 'grade': {'type': 'string', 'description': 'All You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed.'}, 'price': {'type': 'number', 'description': 'FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid.'}, 'title': {'type': 'string', 'description': 'Full product title in the requested language.'}, 'topup': {'type': 'object', 'properties': {'how': {'type': 'string', 'description': 'How the customer tops up.'}, 'kind': {'enum': ['data', 'days', 'none'], 'type': 'string', 'description': 'Always "none" on e-eSIM: no top-ups or recharges exist; each plan is a self-contained eSIM.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'notice': {'type': 'string', 'description': 'Same as plan_note (1.0.x name).'}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'carrier': {'type': 'string', 'description': 'Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'network': {'type': 'string', 'description': 'Same as network_generation (1.0.x name).'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'coverage': {'type': 'string', 'description': 'Same as coverage_label (1.0.x name).'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator name(s) for the plan, as the shop states them.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'family_id': {'type': 'string', 'description': 'Plans sharing a family_id are day-length variants of the same package.'}, 'plan_note': {'type': 'string', 'description': 'Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.'}, 'voice_sms': {'type': 'string', 'description': 'Always "none": data only, no telephone number, no SMS.'}, 'covers_via': {'type': 'string', 'description': "Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name."}, 'data_reset': {'type': 'string', 'description': 'Same as daily_reset_time (1.0.x name).'}, 'expires_on': {'type': 'string', 'description': 'Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present.'}, 'product_id': {'type': 'integer', 'description': 'Product id. Use it for get_plan_details and start_checkout.'}, 'data_period': {'enum': ['total', 'per_day'], 'type': 'string', 'description': '"total": data_gb is the whole plan (Trip Surf). "per_day": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf).'}, 'price_basis': {'enum': ['total'], 'type': 'string', 'description': 'Always "total" on e-eSIM.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'throttle_kbps': {'type': 'integer', 'description': 'The same reduced speed in kbps. 0 = no throttle stated for this plan.'}, 'always_on_rate': {'type': 'string', 'description': 'Reduced speed after the allowance, e.g. "5 Mbps" / "128 kbps" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, 'coverage_label': {'type': 'string', 'description': 'Human-readable coverage label as the shop shows it (localized).'}, 'price_is_final': {'type': 'boolean', 'description': 'Always true: no tax or fee is added at checkout.'}, 'pricing_bucket': {'type': 'string', 'description': 'language-region bucket the prices and links are quoted in, e.g. "en-us".'}, 'validity_clock': {'type': 'string', 'description': 'What the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. "ends 23:59 (UTC+8)"). State it; a 1-day calendar plan activated in the evening lasts only hours.'}, 'daily_high_speed': {'type': 'string', 'description': 'Daily Surf / All You Can Surf: daily allowance at full speed, e.g. "2GB".'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance refreshes (per_day plans only), e.g. "00:00 (UTC+8)" or "every 24 h after activation".'}, 'coverage_countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'iso': {'type': 'string', 'description': 'ISO 3166-1 alpha-2, lowercase.'}, 'name': {'type': 'string', 'description': 'Country name in the requested language.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in.'}, 'network_generation': {'type': 'string', 'description': 'Network generation, e.g. "5G/4G". Never an operator name.'}}, 'description': 'One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never "no".', 'additionalProperties': True}
get_shop_facts
Shop facts
How e-eSIM works, in the shop's own words: delivery and installation, device requirements, payment methods, refund policy, no top-ups, hotspot, Usage Dashboard and apps, support and company details. Use for any "how / when / what if" question that is not about one specific plan.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'type': 'object', 'additionalProperties': True}
recommend_plan
Recommend a plan for a trip
Turn a trip into up to three plan recommendations: countries (1-5, any language), number of days and how much data the traveller uses. Each fit carries the full plan facts, the total price for the whole trip and a one-sentence reason built only from catalogue facts. Use this first whenever the user describes a trip rather than asks for a list.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['countries', 'days'], 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Trip length in days.'}, 'usage': {'enum': ['light', 'normal', 'heavy'], 'type': 'string', 'description': 'light ≈ 0.5 GB/day (maps, messaging), normal ≈ 1.5 GB/day (social, some video), heavy ≈ 4 GB/day (video, hotspot). Default normal.'}, 'bucket': {'type': 'string', 'description': 'Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.'}, 'budget': {'type': 'number', 'minimum': 0, 'description': 'Optional maximum total for the trip, in the result currency.'}, 'currency': {'type': 'string', 'description': 'Optional ISO 4217 code. Every price in the result is quoted in it.'}, 'language': {'type': 'string', 'description': 'ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.'}, 'countries': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Countries or regions of the trip, any language.'}, 'gb_per_day': {'type': 'number', 'minimum': 0.1, 'description': 'Overrides usage with an explicit daily need in GB.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'trip': {'type': 'object', 'properties': {'days': {'type': 'integer'}, 'gb_total': {'type': 'number'}, 'countries': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'gb_per_day': {'type': 'number'}}, 'additionalProperties': True}, 'message': {'type': 'string'}, 'currency': {'type': 'string'}, 'all_plans_url': {'type': 'string'}, 'pricing_bucket': {'type': 'string'}, 'recommendations': {'type': 'array', 'items': {'type': 'object', 'properties': {'why': {'type': 'string', 'description': 'One sentence built from catalogue facts only.'}, 'plan': {'type': 'object', 'properties': {'fup': {'type': 'string', 'description': 'Same as fair_use (1.0.x name).'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Trip Surf: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days.'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Daily Surf', 'Trip Surf', 'All You Can Surf'], 'type': 'string', 'description': 'Plan type. Brand names — keep in English.'}, 'grade': {'type': 'string', 'description': 'All You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed.'}, 'price': {'type': 'number', 'description': 'FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid.'}, 'title': {'type': 'string', 'description': 'Full product title in the requested language.'}, 'topup': {'type': 'object', 'properties': {'how': {'type': 'string', 'description': 'How the customer tops up.'}, 'kind': {'enum': ['data', 'days', 'none'], 'type': 'string', 'description': 'Always "none" on e-eSIM: no top-ups or recharges exist; each plan is a self-contained eSIM.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'notice': {'type': 'string', 'description': 'Same as plan_note (1.0.x name).'}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'carrier': {'type': 'string', 'description': 'Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'network': {'type': 'string', 'description': 'Same as network_generation (1.0.x name).'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'coverage': {'type': 'string', 'description': 'Same as coverage_label (1.0.x name).'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator name(s) for the plan, as the shop states them.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'family_id': {'type': 'string', 'description': 'Plans sharing a family_id are day-length variants of the same package.'}, 'plan_note': {'type': 'string', 'description': 'Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.'}, 'voice_sms': {'type': 'string', 'description': 'Always "none": data only, no telephone number, no SMS.'}, 'covers_via': {'type': 'string', 'description': "Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name."}, 'data_reset': {'type': 'string', 'description': 'Same as daily_reset_time (1.0.x name).'}, 'expires_on': {'type': 'string', 'description': 'Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present.'}, 'product_id': {'type': 'integer', 'description': 'Product id. Use it for get_plan_details and start_checkout.'}, 'data_period': {'enum': ['total', 'per_day'], 'type': 'string', 'description': '"total": data_gb is the whole plan (Trip Surf). "per_day": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf).'}, 'price_basis': {'enum': ['total'], 'type': 'string', 'description': 'Always "total" on e-eSIM.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'throttle_kbps': {'type': 'integer', 'description': 'The same reduced speed in kbps. 0 = no throttle stated for this plan.'}, 'always_on_rate': {'type': 'string', 'description': 'Reduced speed after the allowance, e.g. "5 Mbps" / "128 kbps" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, 'coverage_label': {'type': 'string', 'description': 'Human-readable coverage label as the shop shows it (localized).'}, 'price_is_final': {'type': 'boolean', 'description': 'Always true: no tax or fee is added at checkout.'}, 'pricing_bucket': {'type': 'string', 'description': 'language-region bucket the prices and links are quoted in, e.g. "en-us".'}, 'validity_clock': {'type': 'string', 'description': 'What the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. "ends 23:59 (UTC+8)"). State it; a 1-day calendar plan activated in the evening lasts only hours.'}, 'daily_high_speed': {'type': 'string', 'description': 'Daily Surf / All You Can Surf: daily allowance at full speed, e.g. "2GB".'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance refreshes (per_day plans only), e.g. "00:00 (UTC+8)" or "every 24 h after activation".'}, 'coverage_countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'iso': {'type': 'string', 'description': 'ISO 3166-1 alpha-2, lowercase.'}, 'name': {'type': 'string', 'description': 'Country name in the requested language.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in.'}, 'network_generation': {'type': 'string', 'description': 'Network generation, e.g. "5G/4G". Never an operator name.'}}, 'description': 'One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never "no".', 'additionalProperties': True}, 'rank': {'type': 'integer'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'plans_needed': {'type': 'integer', 'description': '1, or the number of consecutive plans needed to cover the trip length.'}, 'total_for_trip': {'type': 'number', 'description': 'Checkout total for the trip in currency (Flex: days x per-day price with the discount ladder; packs: the plan price, times the number of plans needed when one does not cover the trip).'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
search_esim_plans
Find eSIM plans
Find e-eSIM eSIM plans for one destination or several (countries or regions, any language). Returns the best-value plans first with full facts, coverage lists and a direct link; multi-country plans that include the destination are returned too and marked covers_via. Use when a user wants mobile data abroad; use recommend_plan when they describe a whole trip.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['value', 'price', 'data'], 'type': 'string', 'description': 'value = best price per GB delivered / cheapest All You Can Surf per day first (default); price = cheapest first; data = most data first.'}, 'type': {'enum': ['daily_surf', 'trip_surf', 'all_you_can_surf', 'any'], 'type': 'string', 'description': 'Plan type. Default any.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Plans to return. Default 10; all_plans_url lists everything.'}, 'bucket': {'type': 'string', 'description': 'Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.'}, 'currency': {'type': 'string', 'description': 'Optional ISO 4217 code. Every price in the result is quoted in it.'}, 'language': {'type': 'string', 'description': 'ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.'}, 'min_days': {'type': 'integer', 'minimum': 1, 'description': 'Only plans valid for at least this many days.'}, 'destination': {'type': 'string', 'description': 'Country or region in any language, e.g. "Thailand", "Japon", "Europa", or a 2-letter ISO code. For a city, pass its country.'}, 'destinations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 5, 'description': 'Several countries for one trip; only plans covering ALL of them are returned. Overrides destination.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'iso': {'type': 'string', 'description': 'Resolved ISO code or region slug of the (first) destination.'}, 'note': {'type': 'string', 'description': 'Present when part of the request could not be honoured (e.g. more than 5 destinations).'}, 'plans': {'type': 'array', 'items': {'type': 'object', 'properties': {'fup': {'type': 'string', 'description': 'Same as fair_use (1.0.x name).'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Trip Surf: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days.'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Daily Surf', 'Trip Surf', 'All You Can Surf'], 'type': 'string', 'description': 'Plan type. Brand names — keep in English.'}, 'grade': {'type': 'string', 'description': 'All You Can Surf tier (standard, premium, titanium). Present only the returned value; every grade has a daily full-speed allowance then a reduced speed.'}, 'price': {'type': 'number', 'description': 'FULL fixed price of the plan in currency; not per day, not per GB. The price shown is the price paid.'}, 'title': {'type': 'string', 'description': 'Full product title in the requested language.'}, 'topup': {'type': 'object', 'properties': {'how': {'type': 'string', 'description': 'How the customer tops up.'}, 'kind': {'enum': ['data', 'days', 'none'], 'type': 'string', 'description': 'Always "none" on e-eSIM: no top-ups or recharges exist; each plan is a self-contained eSIM.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'notice': {'type': 'string', 'description': 'Same as plan_note (1.0.x name).'}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'carrier': {'type': 'string', 'description': 'Local network operator when specified (1.0.x name; also in networks). NEVER invent one when absent.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'network': {'type': 'string', 'description': 'Same as network_generation (1.0.x name).'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'coverage': {'type': 'string', 'description': 'Same as coverage_label (1.0.x name).'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'All You Can Surf fair-use policy in plain words (daily full-speed allowance, then the still-unlimited reduced speed). Present it as returned.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator name(s) for the plan, as the shop states them.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'family_id': {'type': 'string', 'description': 'Plans sharing a family_id are day-length variants of the same package.'}, 'plan_note': {'type': 'string', 'description': 'Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever present.'}, 'voice_sms': {'type': 'string', 'description': 'Always "none": data only, no telephone number, no SMS.'}, 'covers_via': {'type': 'string', 'description': "Present when the plan was returned for a country it covers as part of a multi-country plan: the plan's own region name."}, 'data_reset': {'type': 'string', 'description': 'Same as daily_reset_time (1.0.x name).'}, 'expires_on': {'type': 'string', 'description': 'Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present.'}, 'product_id': {'type': 'integer', 'description': 'Product id. Use it for get_plan_details and start_checkout.'}, 'data_period': {'enum': ['total', 'per_day'], 'type': 'string', 'description': '"total": data_gb is the whole plan (Trip Surf). "per_day": data_gb is the daily full-speed allowance (Daily Surf, All You Can Surf).'}, 'price_basis': {'enum': ['total'], 'type': 'string', 'description': 'Always "total" on e-eSIM.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'throttle_kbps': {'type': 'integer', 'description': 'The same reduced speed in kbps. 0 = no throttle stated for this plan.'}, 'always_on_rate': {'type': 'string', 'description': 'Reduced speed after the allowance, e.g. "5 Mbps" / "128 kbps" (for the rest of that day on per_day plans; for the rest of the trip on Trip Surf). All You Can Surf stays unlimited in volume at this speed.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, 'coverage_label': {'type': 'string', 'description': 'Human-readable coverage label as the shop shows it (localized).'}, 'price_is_final': {'type': 'boolean', 'description': 'Always true: no tax or fee is added at checkout.'}, 'pricing_bucket': {'type': 'string', 'description': 'language-region bucket the prices and links are quoted in, e.g. "en-us".'}, 'validity_clock': {'type': 'string', 'description': 'What the days count means for THIS plan: 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. "ends 23:59 (UTC+8)"). State it; a 1-day calendar plan activated in the evening lasts only hours.'}, 'daily_high_speed': {'type': 'string', 'description': 'Daily Surf / All You Can Surf: daily allowance at full speed, e.g. "2GB".'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance refreshes (per_day plans only), e.g. "00:00 (UTC+8)" or "every 24 h after activation".'}, 'coverage_countries': {'type': 'array', 'items': {'type': 'object', 'properties': {'iso': {'type': 'string', 'description': 'ISO 3166-1 alpha-2, lowercase.'}, 'name': {'type': 'string', 'description': 'Country name in the requested language.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in.'}, 'network_generation': {'type': 'string', 'description': 'Network generation, e.g. "5G/4G". Never an operator name.'}}, 'description': 'One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never "no".', 'additionalProperties': True}}, 'covered': {'type': 'boolean'}, 'message': {'type': 'string', 'description': 'Present when nothing matched: says why and what to try.'}, 'currency': {'type': 'string'}, 'returned': {'type': 'integer'}, 'from_price': {'type': 'string', 'description': 'Lowest price in this result set, shop-formatted (per-day plans count with their day price).'}, 'destination': {'type': 'string'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'properties': {'iso': {'type': 'string'}, 'name': {'type': 'string'}, 'query': {'type': 'string'}}, 'additionalProperties': True}, 'description': 'How each requested destination was understood.'}, 'all_plans_url': {'type': 'string'}, 'pricing_bucket': {'type': 'string'}, 'total_available': {'type': 'integer', 'description': 'Plans matched before limit; the rest are on all_plans_url.'}}, 'additionalProperties': True}
start_checkout
Start secure checkout
Hand the customer to the e-eSIM shop to buy one plan. Returns buy_url (the product page where they tap Buy now and pay securely — card, Apple Pay, Google Pay, PayPal; there is no discount-code field) plus the plan name and price in the customer's bucket or currency. No account needed; the eSIM is emailed right after payment. There is no in-chat order tracking.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['product_id'], 'properties': {'bucket': {'type': 'string', 'description': 'Optional language-region bucket the customer shops in, e.g. "en-gb", "de-de". Wins over language; prices and links are quoted in it.'}, 'currency': {'type': 'string', 'description': 'Optional ISO 4217 code. Every price in the result is quoted in it.'}, 'language': {'type': 'string', 'description': 'ISO language of the conversation, e.g. en, de, ja. Plan names and country names come back in it when available. Bare "en" is quoted in en-us / USD.'}, 'product_id': {'type': 'integer', 'description': 'Product id to buy.'}}}
Ausgabeschema
{'type': 'object', 'properties': {'price': {'type': 'number', 'description': 'FULL fixed price of the plan.'}, 'buy_url': {'type': 'string', 'description': 'The exact product page to send the customer to. Use verbatim.'}, 'message': {'type': 'string'}, 'product': {'type': 'string'}, 'currency': {'type': 'string'}, 'app_links': {'type': 'object', 'description': 'Optional store links of the free e-eSIM app (android, ios) - the eSIM works without it.', 'additionalProperties': True}, 'product_id': {'type': 'integer'}, 'price_basis': {'enum': ['total'], 'type': 'string'}, 'presentation': {'type': 'string'}, 'price_is_final': {'type': 'boolean'}, 'pricing_bucket': {'type': 'string'}}, 'additionalProperties': True}
Hinzugefügt
get_shop_facts
1. October 2026 02:53
Hinzugefügt
recommend_plan
1. October 2026 02:53
Geändert
start_checkout
1. October 2026 02:53
Geändert
get_plan_details
1. October 2026 02:53
Geändert
search_esim_plans
1. October 2026 02:53
Geändert
get_plan_details
23. September 2026 02:53
Geändert
search_esim_plans
23. September 2026 02:53
Hinzugefügt
start_checkout
17. September 2026 12:34
Hinzugefügt
get_plan_details
17. September 2026 12:34
Hinzugefügt
search_esim_plans
17. September 2026 12:34