IbiPoint eSIM Catalog

Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
84%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_shop_facts' description lacks action verbin get_shop_facts

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,409Tokens (tool definitions)
~15.3 KBTypical response size
Significant attention impact (5.01% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "esim-catalog": {
      "url": "https://ibipoint.com/esimshop/wp-json/ibipoint/mcp"
    }
  }
}

Remote endpoints

https://ibipoint.com/esimshop/wp-json/ibipoint/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขsearch_esim_plans(destination, destinations, type, min_days, limit, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "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": {
      "type": "string",
      "enum": [
        "data_pack",
        "unlimited_flex",
        "any"
      ],
      "description": "Plan type. Default any."
    },
    "min_days": {
      "type": "integer",
      "minimum": 1,
      "description": "Only plans valid for at least this many days (Unlimited Flex counts when days_range allows it)."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Plans to return. Default 10; all_plans_url lists everything."
    },
    "sort": {
      "type": "string",
      "enum": [
        "value",
        "price",
        "data"
      ],
      "description": "value = best price per GB / cheapest Flex first (default); price = cheapest first; data = most data first."
    },
    "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."
    },
    "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."
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string"
    },
    "destinations": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "query": {
            "type": "string"
          },
          "iso": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "description": "How each requested destination was understood."
    },
    "iso": {
      "type": "string",
      "description": "Resolved ISO code or region slug of the (first) destination."
    },
    "covered": {
      "type": "boolean"
    },
    "from_price": {
      "type": "string",
      "description": "Lowest price in this result set, shop-formatted (per-day plans count with their day price)."
    },
    "currency": {
      "type": "string"
    },
    "pricing_bucket": {
      "type": "string"
    },
    "returned": {
      "type": "integer"
    },
    "note": {
      "type": "string",
      "description": "Present when part of the request could not be honoured (e.g. more than 5 destinations)."
    },
    "total_available": {
      "type": "integer",
      "description": "Plans matched before limit; the rest are on all_plans_url."
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "description": "One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\".",
        "properties": {
          "product_id": {
            "type": "integer",
            "description": "Product id. Use it for get_plan_details and start_checkout."
          },
          "sku": {
            "type": "string",
            "description": "Catalogue SKU."
          },
          "name": {
            "type": "string",
            "description": "Short plan name: destination ยท data ยท validity ยท type."
          },
          "title": {
            "type": "string",
            "description": "Full product title in the requested language."
          },
          "type": {
            "type": "string",
            "enum": [
              "Data Pack",
              "Unlimited Flex"
            ],
            "description": "Plan type."
          },
          "summary": {
            "type": "string",
            "description": "Short description in the requested language, from the product page."
          },
          "coverage_countries": {
            "type": "array",
            "description": "Every country the plan works in, with the network operators per country when known.",
            "items": {
              "type": "object",
              "additionalProperties": true,
              "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."
                }
              }
            }
          },
          "coverage_count": {
            "type": "integer",
            "description": "Number of countries in coverage_countries."
          },
          "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."
          },
          "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."
          },
          "coverage_note": {
            "type": "string",
            "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong."
          },
          "data_gb": {
            "type": "number",
            "description": "Data amount in GB. Meaning given by data_period."
          },
          "data_period": {
            "type": "string",
            "enum": [
              "total",
              "per_day"
            ],
            "description": "\"total\": data_gb is the whole plan (Data Pack). \"per_day\": data_gb is the daily full-speed allowance (Unlimited Flex)."
          },
          "data": {
            "type": "string",
            "description": "Data Pack: total data label, e.g. \"5GB\"."
          },
          "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)."
          },
          "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."
          },
          "fair_use": {
            "type": "string",
            "description": "Fair-use policy text from the supplier, when stated."
          },
          "network_generation": {
            "type": "string",
            "description": "Network technology, e.g. \"4G/LTE/5G\". Never an operator name."
          },
          "networks": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Operator names across the plan (deduplicated). Per-country detail is in coverage_countries."
          },
          "days": {
            "type": "integer",
            "description": "Validity in days (Data Pack)."
          },
          "validity": {
            "type": "string",
            "description": "Validity label, e.g. \"30 days\"."
          },
          "days_range": {
            "type": "string",
            "description": "Unlimited Flex: choosable durations in days, \"1-365\"."
          },
          "activation_trigger": {
            "type": "string",
            "enum": [
              "install",
              "first_connection"
            ],
            "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."
          },
          "install_before_travel": {
            "type": "boolean",
            "description": "true when the eSIM can safely be installed before departure (activation_trigger first_connection)."
          },
          "unused_valid_days": {
            "type": "integer",
            "description": "Days the eSIM may remain unused after purchase before it expires (supplier value)."
          },
          "expires_on": {
            "type": "string",
            "description": "Stock expiry date (YYYY-MM-DD) when the product itself has one."
          },
          "voice_sms": {
            "type": "string",
            "description": "Always \"none\": data only, no telephone number, no SMS."
          },
          "tethering": {
            "type": "boolean",
            "description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
          },
          "topup": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "data",
                  "days",
                  "none"
                ],
                "description": "What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex), or none."
              },
              "how": {
                "type": "string",
                "description": "How the customer tops up."
              }
            },
            "description": "Top-up possibility for this plan."
          },
          "plan_note": {
            "type": "string",
            "description": "One-sentence vendor fact to present verbatim when present; overrides the generic type description."
          },
          "transparency": {
            "type": "boolean",
            "description": "A per-order Transparency link shows remaining data in near real-time."
          },
          "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."
          },
          "price_basis": {
            "type": "string",
            "enum": [
              "total",
              "per_day"
            ],
            "description": "What `price` means."
          },
          "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."
          },
          "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."
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency of every price in this object."
          },
          "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\"."
          },
          "rating": {
            "type": "number",
            "description": "Average customer rating (1-5). Present only when reviews exist."
          },
          "review_count": {
            "type": "integer",
            "description": "Number of reviews. Present only when > 0."
          },
          "last_updated": {
            "type": "string",
            "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD)."
          },
          "url": {
            "type": "string",
            "description": "Product page in pricing_bucket. Use verbatim."
          }
        }
      }
    },
    "all_plans_url": {
      "type": "string"
    },
    "message": {
      "type": "string",
      "description": "Present when nothing matched: says why and what to try."
    }
  },
  "additionalProperties": true
}
๐ŸŸขget_plan_details(product_id, language, bucket, currency)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "Product id from search_esim_plans or recommend_plan."
    },
    "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."
    },
    "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."
    }
  },
  "required": [
    "product_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "Product id. Use it for get_plan_details and start_checkout."
    },
    "sku": {
      "type": "string",
      "description": "Catalogue SKU."
    },
    "name": {
      "type": "string",
      "description": "Short plan name: destination ยท data ยท validity ยท type."
    },
    "title": {
      "type": "string",
      "description": "Full product title in the requested language."
    },
    "type": {
      "type": "string",
      "enum": [
        "Data Pack",
        "Unlimited Flex"
      ],
      "description": "Plan type."
    },
    "summary": {
      "type": "string",
      "description": "Short description in the requested language, from the product page."
    },
    "coverage_countries": {
      "type": "array",
      "description": "Every country the plan works in, with the network operators per country when known.",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "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."
          }
        }
      }
    },
    "coverage_count": {
      "type": "integer",
      "description": "Number of countries in coverage_countries."
    },
    "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."
    },
    "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."
    },
    "coverage_note": {
      "type": "string",
      "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong."
    },
    "data_gb": {
      "type": "number",
      "description": "Data amount in GB. Meaning given by data_period."
    },
    "data_period": {
      "type": "string",
      "enum": [
        "total",
        "per_day"
      ],
      "description": "\"total\": data_gb is the whole plan (Data Pack). \"per_day\": data_gb is the daily full-speed allowance (Unlimited Flex)."
    },
    "data": {
      "type": "string",
      "description": "Data Pack: total data label, e.g. \"5GB\"."
    },
    "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)."
    },
    "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."
    },
    "fair_use": {
      "type": "string",
      "description": "Fair-use policy text from the supplier, when stated."
    },
    "network_generation": {
      "type": "string",
      "description": "Network technology, e.g. \"4G/LTE/5G\". Never an operator name."
    },
    "networks": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Operator names across the plan (deduplicated). Per-country detail is in coverage_countries."
    },
    "days": {
      "type": "integer",
      "description": "Validity in days (Data Pack)."
    },
    "validity": {
      "type": "string",
      "description": "Validity label, e.g. \"30 days\"."
    },
    "days_range": {
      "type": "string",
      "description": "Unlimited Flex: choosable durations in days, \"1-365\"."
    },
    "activation_trigger": {
      "type": "string",
      "enum": [
        "install",
        "first_connection"
      ],
      "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."
    },
    "install_before_travel": {
      "type": "boolean",
      "description": "true when the eSIM can safely be installed before departure (activation_trigger first_connection)."
    },
    "unused_valid_days": {
      "type": "integer",
      "description": "Days the eSIM may remain unused after purchase before it expires (supplier value)."
    },
    "expires_on": {
      "type": "string",
      "description": "Stock expiry date (YYYY-MM-DD) when the product itself has one."
    },
    "voice_sms": {
      "type": "string",
      "description": "Always \"none\": data only, no telephone number, no SMS."
    },
    "tethering": {
      "type": "boolean",
      "description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
    },
    "topup": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "data",
            "days",
            "none"
          ],
          "description": "What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex), or none."
        },
        "how": {
          "type": "string",
          "description": "How the customer tops up."
        }
      },
      "description": "Top-up possibility for this plan."
    },
    "plan_note": {
      "type": "string",
      "description": "One-sentence vendor fact to present verbatim when present; overrides the generic type description."
    },
    "transparency": {
      "type": "boolean",
      "description": "A per-order Transparency link shows remaining data in near real-time."
    },
    "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."
    },
    "price_basis": {
      "type": "string",
      "enum": [
        "total",
        "per_day"
      ],
      "description": "What `price` means."
    },
    "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."
    },
    "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."
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency of every price in this object."
    },
    "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\"."
    },
    "rating": {
      "type": "number",
      "description": "Average customer rating (1-5). Present only when reviews exist."
    },
    "review_count": {
      "type": "integer",
      "description": "Number of reviews. Present only when > 0."
    },
    "last_updated": {
      "type": "string",
      "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD)."
    },
    "url": {
      "type": "string",
      "description": "Product page in pricing_bucket. Use verbatim."
    }
  },
  "additionalProperties": true,
  "description": "One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\"."
}
๐ŸŸขstart_checkout(product_id, days, language, bucket, currency)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "Product id to buy."
    },
    "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."
    },
    "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."
    },
    "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."
    }
  },
  "required": [
    "product_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string"
    },
    "product_id": {
      "type": "integer"
    },
    "price": {
      "type": "number",
      "description": "Read WITH price_basis."
    },
    "price_basis": {
      "type": "string",
      "enum": [
        "total",
        "per_day"
      ]
    },
    "days_range": {
      "type": "string"
    },
    "price_30_days": {
      "type": "number",
      "description": "Unlimited Flex: price for 30 days, discount applied."
    },
    "price_max": {
      "type": "number"
    },
    "app_links": {
      "type": "object",
      "additionalProperties": true,
      "description": "Optional store links of the free IbiPoint app (android, ios) - the eSIM works without it."
    },
    "total_for_days": {
      "type": "number",
      "description": "Unlimited Flex: checkout total for the requested days, discount applied."
    },
    "days": {
      "type": "integer"
    },
    "currency": {
      "type": "string"
    },
    "price_is_final": {
      "type": "boolean"
    },
    "pricing_bucket": {
      "type": "string"
    },
    "buy_url": {
      "type": "string",
      "description": "The exact product page to send the customer to. Use verbatim."
    },
    "message": {
      "type": "string"
    },
    "presentation": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
๐ŸŸขrecommend_plan(countries, days, usage, gb_per_day, budget, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "countries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 5,
      "description": "Countries or regions of the trip, any language."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 365,
      "description": "Trip length in days."
    },
    "usage": {
      "type": "string",
      "enum": [
        "light",
        "normal",
        "heavy"
      ],
      "description": "light โ‰ˆ 0.5 GB/day (maps, messaging), normal โ‰ˆ 1.5 GB/day (social, some video), heavy โ‰ˆ 4 GB/day (video, hotspot). Default normal."
    },
    "gb_per_day": {
      "type": "number",
      "minimum": 0.1,
      "description": "Overrides usage with an explicit daily need in GB."
    },
    "budget": {
      "type": "number",
      "minimum": 0,
      "description": "Optional maximum total for the trip, in the result currency."
    },
    "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."
    },
    "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."
    }
  },
  "required": [
    "countries",
    "days"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "trip": {
      "type": "object",
      "additionalProperties": true,
      "properties": {
        "countries": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "days": {
          "type": "integer"
        },
        "gb_per_day": {
          "type": "number"
        },
        "gb_total": {
          "type": "number"
        }
      }
    },
    "currency": {
      "type": "string"
    },
    "pricing_bucket": {
      "type": "string"
    },
    "recommendations": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "rank": {
            "type": "integer"
          },
          "why": {
            "type": "string",
            "description": "One sentence built from catalogue facts only."
          },
          "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)."
          },
          "plans_needed": {
            "type": "integer",
            "description": "1, or the number of consecutive Data Packs needed to cover the trip length."
          },
          "caveats": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "plan": {
            "type": "object",
            "additionalProperties": true,
            "description": "One eSIM plan. Every field is present only when the catalogue holds a value for it; an absent field is unknown, never \"no\".",
            "properties": {
              "product_id": {
                "type": "integer",
                "description": "Product id. Use it for get_plan_details and start_checkout."
              },
              "sku": {
                "type": "string",
                "description": "Catalogue SKU."
              },
              "name": {
                "type": "string",
                "description": "Short plan name: destination ยท data ยท validity ยท type."
              },
              "title": {
                "type": "string",
                "description": "Full product title in the requested language."
              },
              "type": {
                "type": "string",
                "enum": [
                  "Data Pack",
                  "Unlimited Flex"
                ],
                "description": "Plan type."
              },
              "summary": {
                "type": "string",
                "description": "Short description in the requested language, from the product page."
              },
              "coverage_countries": {
                "type": "array",
                "description": "Every country the plan works in, with the network operators per country when known.",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "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."
                    }
                  }
                }
              },
              "coverage_count": {
                "type": "integer",
                "description": "Number of countries in coverage_countries."
              },
              "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."
              },
              "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."
              },
              "coverage_note": {
                "type": "string",
                "description": "Coverage caveat to present verbatim, e.g. traffic routed via Hong Kong."
              },
              "data_gb": {
                "type": "number",
                "description": "Data amount in GB. Meaning given by data_period."
              },
              "data_period": {
                "type": "string",
                "enum": [
                  "total",
                  "per_day"
                ],
                "description": "\"total\": data_gb is the whole plan (Data Pack). \"per_day\": data_gb is the daily full-speed allowance (Unlimited Flex)."
              },
              "data": {
                "type": "string",
                "description": "Data Pack: total data label, e.g. \"5GB\"."
              },
              "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)."
              },
              "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."
              },
              "fair_use": {
                "type": "string",
                "description": "Fair-use policy text from the supplier, when stated."
              },
              "network_generation": {
                "type": "string",
                "description": "Network technology, e.g. \"4G/LTE/5G\". Never an operator name."
              },
              "networks": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Operator names across the plan (deduplicated). Per-country detail is in coverage_countries."
              },
              "days": {
                "type": "integer",
                "description": "Validity in days (Data Pack)."
              },
              "validity": {
                "type": "string",
                "description": "Validity label, e.g. \"30 days\"."
              },
              "days_range": {
                "type": "string",
                "description": "Unlimited Flex: choosable durations in days, \"1-365\"."
              },
              "activation_trigger": {
                "type": "string",
                "enum": [
                  "install",
                  "first_connection"
                ],
                "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."
              },
              "install_before_travel": {
                "type": "boolean",
                "description": "true when the eSIM can safely be installed before departure (activation_trigger first_connection)."
              },
              "unused_valid_days": {
                "type": "integer",
                "description": "Days the eSIM may remain unused after purchase before it expires (supplier value)."
              },
              "expires_on": {
                "type": "string",
                "description": "Stock expiry date (YYYY-MM-DD) when the product itself has one."
              },
              "voice_sms": {
                "type": "string",
                "description": "Always \"none\": data only, no telephone number, no SMS."
              },
              "tethering": {
                "type": "boolean",
                "description": "Hotspot / tethering is supported where the network and device allow it (shop rule)."
              },
              "topup": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "data",
                      "days",
                      "none"
                    ],
                    "description": "What TopUp can add without a new eSIM: data (Data Pack), days (Unlimited Flex), or none."
                  },
                  "how": {
                    "type": "string",
                    "description": "How the customer tops up."
                  }
                },
                "description": "Top-up possibility for this plan."
              },
              "plan_note": {
                "type": "string",
                "description": "One-sentence vendor fact to present verbatim when present; overrides the generic type description."
              },
              "transparency": {
                "type": "boolean",
                "description": "A per-order Transparency link shows remaining data in near real-time."
              },
              "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."
              },
              "price_basis": {
                "type": "string",
                "enum": [
                  "total",
                  "per_day"
                ],
                "description": "What `price` means."
              },
              "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."
              },
              "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."
              },
              "currency": {
                "type": "string",
                "description": "ISO 4217 currency of every price in this object."
              },
              "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\"."
              },
              "rating": {
                "type": "number",
                "description": "Average customer rating (1-5). Present only when reviews exist."
              },
              "review_count": {
                "type": "integer",
                "description": "Number of reviews. Present only when > 0."
              },
              "last_updated": {
                "type": "string",
                "description": "Date the plan was last updated in the catalogue (YYYY-MM-DD)."
              },
              "url": {
                "type": "string",
                "description": "Product page in pricing_bucket. Use verbatim."
              }
            }
          }
        }
      }
    },
    "message": {
      "type": "string"
    },
    "all_plans_url": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
๐ŸŸขget_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.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools