IbiPoint eSIM Catalog MCP
This official MCP server allows AI agents to search for prepaid travel eSIM data plans across 200+ countries, retrieve detailed plan specifications including coverage, pricing, and validity, and access live pricing data without requiring user authentication or account creation.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://ibipoint.com/esimshop/wp-json/ibipoint/mcpWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to ibipoint.com ·
- Passed Endpoint is on the registry namespace domain ·
- Warning Advertises resources/templates/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for eSIM plans by destination country or region
- Retrieve detailed specifications for a specific eSIM product
- Compare plan values and prices across multiple destinations
- Access real-time pricing and availability data for travel eSIMs
Source and maintenance
Protocol and capabilities
- Server
- IbiPoint 2.0.5
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 5 advertised
- Resources
- 3 advertised
- Resource templates
- Not advertised
- Prompts
- 2 advertised
{
"tools": {},
"prompts": {},
"resources": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
search_esim_plans — Find eSIM plans
Find IbiPoint 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.
{
"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",
"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."
}
}
}{
"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": {
"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)."
},
"name": {
"type": "string",
"description": "Short plan name: destination · data · validity · type."
},
"type": {
"enum": [
"Data 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), 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."
},
"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 (365 days), discount applied. Never infer it by multiplying."
},
"tethering": {
"type": "boolean",
"description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
},
"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, \"1-365\"."
},
"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)."
},
"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."
},
"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."
},
"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."
},
"price_30_days": {
"type": "number",
"description": "Only on price_basis \"per_day\": the price for 30 days with the duration discount applied — the reference figure to quote for a stay of about a month. Never infer it by multiplying."
},
"always_on_rate": {
"type": "string",
"description": "Unlimited Flex: reduced speed after the daily allowance, e.g. \"512 Kbit/s\". Empty when the plan 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 allowance at full speed, e.g. \"2GB\"; \"unlimited\" = unlimited data every day at full speed (fair-use policy)."
},
"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."
},
"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
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_plan_details — Get plan details
Full facts for one IbiPoint plan by product id: coverage with networks per country, data and speed rules, activation and validity rules, top-up, tethering, price with basis (per-day plans: price_30_days and price_max), reviews and link — quoted in the customer's bucket or currency when given.
{
"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."
}
}
}{
"type": "object",
"properties": {
"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)."
},
"name": {
"type": "string",
"description": "Short plan name: destination · data · validity · type."
},
"type": {
"enum": [
"Data 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), 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."
},
"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 (365 days), discount applied. Never infer it by multiplying."
},
"tethering": {
"type": "boolean",
"description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
},
"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, \"1-365\"."
},
"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)."
},
"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."
},
"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."
},
"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."
},
"price_30_days": {
"type": "number",
"description": "Only on price_basis \"per_day\": the price for 30 days with the duration discount applied — the reference figure to quote for a stay of about a month. Never infer it by multiplying."
},
"always_on_rate": {
"type": "string",
"description": "Unlimited Flex: reduced speed after the daily allowance, e.g. \"512 Kbit/s\". Empty when the plan 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 allowance at full speed, e.g. \"2GB\"; \"unlimited\" = unlimited data every day at full speed (fair-use policy)."
},
"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."
},
"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
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}start_checkout — Start secure checkout
Hand the customer to the IbiPoint 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, Amazon Pay, Klarna or a local method such as iDEAL | Wero, Bancontact, BLIK or Pix, with an optional discount code) 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.
{
"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."
}
}
}{
"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"
},
"app_links": {
"type": "object",
"description": "Optional store links of the free IbiPoint app (android, ios) - the eSIM works without it.",
"additionalProperties": true
},
"price_max": {
"type": "number"
},
"days_range": {
"type": "string"
},
"product_id": {
"type": "integer"
},
"price_basis": {
"enum": [
"total",
"per_day"
],
"type": "string"
},
"presentation": {
"type": "string"
},
"price_30_days": {
"type": "number",
"description": "Unlimited Flex: price for 30 days, discount applied."
},
"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
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}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.
{
"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."
}
}
}{
"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": {
"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)."
},
"name": {
"type": "string",
"description": "Short plan name: destination · data · validity · type."
},
"type": {
"enum": [
"Data 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), 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."
},
"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 (365 days), discount applied. Never infer it by multiplying."
},
"tethering": {
"type": "boolean",
"description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
},
"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, \"1-365\"."
},
"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)."
},
"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."
},
"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."
},
"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."
},
"price_30_days": {
"type": "number",
"description": "Only on price_basis \"per_day\": the price for 30 days with the duration discount applied — the reference figure to quote for a stay of about a month. Never infer it by multiplying."
},
"always_on_rate": {
"type": "string",
"description": "Unlimited Flex: reduced speed after the daily allowance, e.g. \"512 Kbit/s\". Empty when the plan 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 allowance at full speed, e.g. \"2GB\"; \"unlimited\" = unlimited data every day at full speed (fair-use policy)."
},
"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."
},
"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
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_shop_facts — Shop facts
How IbiPoint works, in the shop's own words: delivery and installation, device requirements, payment methods, money-back guarantee, top-up, hotspot, support and company details. Use for any "how / when / what if" question that is not about one specific plan.
{
"type": "object",
"properties": {}
}{
"type": "object",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
2 advertised
find_plan_for_trip — Find a plan for my trip
Recommend an IbiPoint plan for a trip: countries, days and data needs.
- countries
- Countries of the trip, comma-separated, any language (required)
- days
- Trip length in days (required)
- usage
- light, normal or heavy
compare_plans — Compare plans
Compare two or three IbiPoint plans side by side using their full facts.
- product_ids
- Comma-separated product ids (required)
Resources
3 advertised
shop-facts — IbiPoint shop facts
Delivery, devices, payment, guarantee, support, company — the same data get_shop_facts returns.
ibipoint://shop-factsllms.txt — IbiPoint llms.txt
The shop's guide for AI assistants: products, policies, locales, links.
ibipoint://llms.txtsetup-guide — eSIM installation guide
How a customer installs and activates an IbiPoint eSIM on iPhone and Android.
ibipoint://setup-guide90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 2 of 2 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 3020 ms
- 95th percentile latency
- 3020 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 3020 ms · metadata changed · 5 tool(s), 3 resource(s), 2 prompt(s); warnings: Advertises resources/templates/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http ibipoint-esim-catalog-mcp https://ibipoint.com/esimshop/wp-json/ibipoint/mcpCodex
codex mcp add ibipoint-esim-catalog-mcp --url https://ibipoint.com/esimshop/wp-json/ibipoint/mcpCursor
{
"mcpServers": {
"ibipoint-esim-catalog-mcp": {
"url": "https://ibipoint.com/esimshop/wp-json/ibipoint/mcp"
}
}
}Cline
{
"mcpServers": {
"ibipoint-esim-catalog-mcp": {
"type": "streamableHttp",
"url": "https://ibipoint.com/esimshop/wp-json/ibipoint/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"ibipoint-esim-catalog-mcp": {
"type": "http",
"url": "https://ibipoint.com/esimshop/wp-json/ibipoint/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http ibipoint-esim-catalog-mcp https://ibipoint.com/esimshop/wp-json/ibipoint/mcpClaude Desktop
https://ibipoint.com/esimshop/wp-json/ibipoint/mcpWindsurf
{
"mcpServers": {
"ibipoint-esim-catalog-mcp": {
"serverUrl": "https://ibipoint.com/esimshop/wp-json/ibipoint/mcp"
}
}
}Let your agent find its tools
Find servers like IbiPoint eSIM Catalog MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run IbiPoint eSIM Catalog MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.