eSIM-Global.VIP eSIM Catalog
What this MCP does
Searches prepaid travel eSIM plans, provides plan details and prices, and hands customers to a secure checkout.
Tools
Input schema
{'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.'}}}
Output schema
{'type': 'object', 'properties': {'apn': {'type': 'string', 'description': 'APN to set when the vendor requires one.'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Data Pack: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days (Data Pack, Daily Pack).'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Data Pack', 'Daily Pack', 'Unlimited Flex'], 'type': 'string', 'description': 'Plan type.'}, 'price': {'type': 'number', 'description': 'Price in currency, read WITH price_basis: the full price of the plan when "total", the price of ONE day when "per_day". Never a per-GB rate. 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': 'What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex / Daily Pack), or none.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'hotspot': {'type': 'string', 'description': 'Hotspot / tethering rule as the vendor states it, e.g. "Supported" or a device limit.'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'Fair-use policy text from the supplier, when stated.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names across the plan (deduplicated). Per-country detail is in coverage_countries.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'plan_note': {'type': 'string', 'description': 'One-sentence vendor fact to present verbatim when present; overrides the generic type description.'}, 'price_max': {'type': 'number', 'description': 'Only on price_basis "per_day": the price for the longest duration in days_range, discount applied — the figure to quote for a full period. Never infer it by multiplying.'}, 'speed_cap': {'type': 'string', 'description': 'Present only on plans with a PERMANENT speed cap, e.g. "10 Mbit/s". Never call such a plan high-speed.'}, '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."}, 'days_range': {'type': 'string', 'description': 'Unlimited Flex: choosable durations in days, e.g. "1-30".'}, 'expires_on': {'type': 'string', 'description': 'Stock expiry date (YYYY-MM-DD) when the product itself has one.'}, '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 (Data Pack). "per_day": data_gb is the daily full-speed allowance (Unlimited Flex, Daily Pack).'}, 'ip_breakout': {'type': 'string', 'description': 'Country whose internet connection the customer appears to use (IP breakout), ISO code(s) — matters for banking apps, streaming and mainland-China access. Vendor fact.'}, 'price_basis': {'enum': ['total', 'per_day'], 'type': 'string', 'description': 'What `price` means.'}, 'refund_rule': {'type': 'string', 'description': 'The refund class in words - present verbatim.'}, 'kyc_required': {'type': 'boolean', 'description': 'true when the vendor requires real-name registration (ID verification) on arrival before data works.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'refund_class': {'enum': ['until_install', 'non_refundable', 'no_cancel'], 'type': 'string', 'description': 'Vendor refund/cancellation class for this plan.'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'transparency': {'type': 'boolean', 'description': 'A per-order Transparency link shows remaining data in near real-time.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'always_on_rate': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: reduced speed after the daily allowance, e.g. "512 Kbit/s". Empty when the plan has a speed_cap or is unlimited.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, '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".'}, 'daily_high_speed': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: daily allowance at full speed, e.g. "2GB"; "unlimited" = unlimited data every day at full speed (fair-use policy).'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance resets, as the vendor states it (clock and time zone). Absent = resets 24 h after activation is NOT implied; simply unknown.'}, 'unused_valid_days': {'type': 'integer', 'description': 'Days the eSIM may remain unused after purchase before it expires (supplier value).'}, 'activation_trigger': {'enum': ['install', 'first_connection'], 'type': 'string', 'description': '"install": validity and billing start the moment the eSIM is installed — install only when ready to use. "first_connection": the eSIM can be installed before travel; validity starts on first connection to a network at the destination.'}, '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.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names in that country, as the supplier lists them.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in, with the network operators per country when known.'}, 'network_generation': {'type': 'string', 'description': 'Network technology, e.g. "4G/LTE/5G". Never an operator name.'}, 'start_date_required': {'type': 'boolean', 'description': 'true when a start date must be chosen at checkout.'}, 'install_before_travel': {'type': 'boolean', 'description': 'true when the eSIM can safely be installed before departure (activation_trigger first_connection).'}}, '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}
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', 'additionalProperties': True}
Input schema
{'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.'}}}
Output schema
{'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': {'apn': {'type': 'string', 'description': 'APN to set when the vendor requires one.'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Data Pack: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days (Data Pack, Daily Pack).'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Data Pack', 'Daily Pack', 'Unlimited Flex'], 'type': 'string', 'description': 'Plan type.'}, 'price': {'type': 'number', 'description': 'Price in currency, read WITH price_basis: the full price of the plan when "total", the price of ONE day when "per_day". Never a per-GB rate. 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': 'What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex / Daily Pack), or none.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'hotspot': {'type': 'string', 'description': 'Hotspot / tethering rule as the vendor states it, e.g. "Supported" or a device limit.'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'Fair-use policy text from the supplier, when stated.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names across the plan (deduplicated). Per-country detail is in coverage_countries.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'plan_note': {'type': 'string', 'description': 'One-sentence vendor fact to present verbatim when present; overrides the generic type description.'}, 'price_max': {'type': 'number', 'description': 'Only on price_basis "per_day": the price for the longest duration in days_range, discount applied — the figure to quote for a full period. Never infer it by multiplying.'}, 'speed_cap': {'type': 'string', 'description': 'Present only on plans with a PERMANENT speed cap, e.g. "10 Mbit/s". Never call such a plan high-speed.'}, '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."}, 'days_range': {'type': 'string', 'description': 'Unlimited Flex: choosable durations in days, e.g. "1-30".'}, 'expires_on': {'type': 'string', 'description': 'Stock expiry date (YYYY-MM-DD) when the product itself has one.'}, '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 (Data Pack). "per_day": data_gb is the daily full-speed allowance (Unlimited Flex, Daily Pack).'}, 'ip_breakout': {'type': 'string', 'description': 'Country whose internet connection the customer appears to use (IP breakout), ISO code(s) — matters for banking apps, streaming and mainland-China access. Vendor fact.'}, 'price_basis': {'enum': ['total', 'per_day'], 'type': 'string', 'description': 'What `price` means.'}, 'refund_rule': {'type': 'string', 'description': 'The refund class in words - present verbatim.'}, 'kyc_required': {'type': 'boolean', 'description': 'true when the vendor requires real-name registration (ID verification) on arrival before data works.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'refund_class': {'enum': ['until_install', 'non_refundable', 'no_cancel'], 'type': 'string', 'description': 'Vendor refund/cancellation class for this plan.'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'transparency': {'type': 'boolean', 'description': 'A per-order Transparency link shows remaining data in near real-time.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'always_on_rate': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: reduced speed after the daily allowance, e.g. "512 Kbit/s". Empty when the plan has a speed_cap or is unlimited.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, '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".'}, 'daily_high_speed': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: daily allowance at full speed, e.g. "2GB"; "unlimited" = unlimited data every day at full speed (fair-use policy).'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance resets, as the vendor states it (clock and time zone). Absent = resets 24 h after activation is NOT implied; simply unknown.'}, 'unused_valid_days': {'type': 'integer', 'description': 'Days the eSIM may remain unused after purchase before it expires (supplier value).'}, 'activation_trigger': {'enum': ['install', 'first_connection'], 'type': 'string', 'description': '"install": validity and billing start the moment the eSIM is installed — install only when ready to use. "first_connection": the eSIM can be installed before travel; validity starts on first connection to a network at the destination.'}, '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.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names in that country, as the supplier lists them.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in, with the network operators per country when known.'}, 'network_generation': {'type': 'string', 'description': 'Network technology, e.g. "4G/LTE/5G". Never an operator name.'}, 'start_date_required': {'type': 'boolean', 'description': 'true when a start date must be chosen at checkout.'}, 'install_before_travel': {'type': 'boolean', 'description': 'true when the eSIM can safely be installed before departure (activation_trigger first_connection).'}}, '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 Data Packs 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}
Input schema
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['value', 'price', 'data'], 'type': 'string', 'description': 'value = best price per GB / cheapest Flex first (default); price = cheapest first; data = most data first.'}, 'type': {'enum': ['data_pack', 'daily_pack', 'unlimited_flex', '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 (Unlimited Flex counts when days_range allows it).'}, '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.'}}}
Output schema
{'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': {'apn': {'type': 'string', 'description': 'APN to set when the vendor requires one.'}, 'sku': {'type': 'string', 'description': 'Catalogue SKU.'}, 'url': {'type': 'string', 'description': 'Product page in pricing_bucket. Use verbatim.'}, 'data': {'type': 'string', 'description': 'Data Pack: total data label, e.g. "5GB".'}, 'days': {'type': 'integer', 'description': 'Validity in days (Data Pack, Daily Pack).'}, 'name': {'type': 'string', 'description': 'Short plan name: destination · data · validity · type.'}, 'type': {'enum': ['Data Pack', 'Daily Pack', 'Unlimited Flex'], 'type': 'string', 'description': 'Plan type.'}, 'price': {'type': 'number', 'description': 'Price in currency, read WITH price_basis: the full price of the plan when "total", the price of ONE day when "per_day". Never a per-GB rate. 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': 'What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex / Daily Pack), or none.'}}, 'description': 'Top-up possibility for this plan.', 'additionalProperties': True}, 'rating': {'type': 'number', 'description': 'Average customer rating (1-5). Present only when reviews exist.'}, 'data_gb': {'type': 'number', 'description': 'Data amount in GB. Meaning given by data_period.'}, 'hotspot': {'type': 'string', 'description': 'Hotspot / tethering rule as the vendor states it, e.g. "Supported" or a device limit.'}, 'summary': {'type': 'string', 'description': 'Short description in the requested language, from the product page.'}, 'currency': {'type': 'string', 'description': 'ISO 4217 currency of every price in this object.'}, 'fair_use': {'type': 'string', 'description': 'Fair-use policy text from the supplier, when stated.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names across the plan (deduplicated). Per-country detail is in coverage_countries.'}, 'validity': {'type': 'string', 'description': 'Validity label, e.g. "30 days".'}, 'plan_note': {'type': 'string', 'description': 'One-sentence vendor fact to present verbatim when present; overrides the generic type description.'}, 'price_max': {'type': 'number', 'description': 'Only on price_basis "per_day": the price for the longest duration in days_range, discount applied — the figure to quote for a full period. Never infer it by multiplying.'}, 'speed_cap': {'type': 'string', 'description': 'Present only on plans with a PERMANENT speed cap, e.g. "10 Mbit/s". Never call such a plan high-speed.'}, '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."}, 'days_range': {'type': 'string', 'description': 'Unlimited Flex: choosable durations in days, e.g. "1-30".'}, 'expires_on': {'type': 'string', 'description': 'Stock expiry date (YYYY-MM-DD) when the product itself has one.'}, '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 (Data Pack). "per_day": data_gb is the daily full-speed allowance (Unlimited Flex, Daily Pack).'}, 'ip_breakout': {'type': 'string', 'description': 'Country whose internet connection the customer appears to use (IP breakout), ISO code(s) — matters for banking apps, streaming and mainland-China access. Vendor fact.'}, 'price_basis': {'enum': ['total', 'per_day'], 'type': 'string', 'description': 'What `price` means.'}, 'refund_rule': {'type': 'string', 'description': 'The refund class in words - present verbatim.'}, 'kyc_required': {'type': 'boolean', 'description': 'true when the vendor requires real-name registration (ID verification) on arrival before data works.'}, 'last_updated': {'type': 'string', 'description': 'Date the plan was last updated in the catalogue (YYYY-MM-DD).'}, 'refund_class': {'enum': ['until_install', 'non_refundable', 'no_cancel'], 'type': 'string', 'description': 'Vendor refund/cancellation class for this plan.'}, 'review_count': {'type': 'integer', 'description': 'Number of reviews. Present only when > 0.'}, 'transparency': {'type': 'boolean', 'description': 'A per-order Transparency link shows remaining data in near real-time.'}, 'coverage_note': {'type': 'string', 'description': 'Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong.'}, 'always_on_rate': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: reduced speed after the daily allowance, e.g. "512 Kbit/s". Empty when the plan has a speed_cap or is unlimited.'}, 'coverage_count': {'type': 'integer', 'description': 'Number of countries in coverage_countries.'}, '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".'}, 'daily_high_speed': {'type': 'string', 'description': 'Unlimited Flex / Daily Pack: daily allowance at full speed, e.g. "2GB"; "unlimited" = unlimited data every day at full speed (fair-use policy).'}, 'daily_reset_time': {'type': 'string', 'description': 'When the daily allowance resets, as the vendor states it (clock and time zone). Absent = resets 24 h after activation is NOT implied; simply unknown.'}, 'unused_valid_days': {'type': 'integer', 'description': 'Days the eSIM may remain unused after purchase before it expires (supplier value).'}, 'activation_trigger': {'enum': ['install', 'first_connection'], 'type': 'string', 'description': '"install": validity and billing start the moment the eSIM is installed — install only when ready to use. "first_connection": the eSIM can be installed before travel; validity starts on first connection to a network at the destination.'}, '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.'}, 'networks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Operator names in that country, as the supplier lists them.'}}, 'additionalProperties': True}, 'description': 'Every country the plan works in, with the network operators per country when known.'}, 'network_generation': {'type': 'string', 'description': 'Network technology, e.g. "4G/LTE/5G". Never an operator name.'}, 'start_date_required': {'type': 'boolean', 'description': 'true when a start date must be chosen at checkout.'}, 'install_before_travel': {'type': 'boolean', 'description': 'true when the eSIM can safely be installed before departure (activation_trigger first_connection).'}}, '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}
Input schema
{'type': 'object', 'required': ['product_id'], 'properties': {'days': {'type': 'integer', 'minimum': 1, 'description': 'Unlimited Flex only: the duration the customer wants; the returned total_for_days is the checkout total for it.'}, '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.'}}}
Output schema
{'type': 'object', 'properties': {'days': {'type': 'integer'}, 'price': {'type': 'number', 'description': 'Read WITH price_basis.'}, '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'}, 'price_max': {'type': 'number'}, 'days_range': {'type': 'string'}, 'product_id': {'type': 'integer'}, 'price_basis': {'enum': ['total', 'per_day'], 'type': 'string'}, 'presentation': {'type': 'string'}, 'price_is_final': {'type': 'boolean'}, 'pricing_bucket': {'type': 'string'}, 'total_for_days': {'type': 'number', 'description': 'Unlimited Flex: checkout total for the requested days, discount applied.'}}, 'additionalProperties': True}
Recent tool changes
Similar MCP servers
Itaim Bibi
Provides an Itaim Bibi neighborhood directory with local place search, menus, events, offers, services, bookings, reservations, t…
Tatuapé
Provides a Tatuapé neighborhood directory with local place search, menus, events, offers, services, bookings, reservations, ticke…
Agenda SP
Provides São Paulo cultural agenda and local directory features, including events, venues, restaurants, offers, bookings, reserva…
Vila Buarque
Provides a neighborhood directory for local places, restaurants, menus, events, offers, services, reservations, bookings, and pur…
Centro
Provides a Centro neighborhood directory with local place search, menus, events, offers, services, bookings, reservations, ticket…
Bela Vista
Provides a Bela Vista neighborhood directory with local place search, menus, events, offers, services, bookings, reservations, ti…
Jardins
Provides a Jardins neighborhood directory with local place search, menus, events, offers, services, bookings, reservations, ticke…
Aclimação
Provides a neighborhood directory for Aclimação with local places, restaurant menus, events, offers, services, bookings, reservat…