e-eSIM Catalog

Search travel eSIM data plans worldwide with live prices, plan details and a buy link.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,140Tokens (tool definitions)
~8.4 KBTypical response size
Moderate attention impact (1.67% 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://e-esim.com/wp-json/e-esim/mcp"
    }
  }
}

Remote endpoints

https://e-esim.com/wp-json/e-esim/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_esim_plans(destination, type, currency, language)

Find e-eSIM travel eSIM plans for a destination (country or region). Returns the best-value plans with full specifications, prices and a direct link. Use when a user wants mobile data abroad.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Country or region in ANY language, e.g. \"Thailand\", \"Japon\", \"Europa\". City names are mapped to their country by you first."
    },
    "type": {
      "type": "string",
      "enum": [
        "daily_surf",
        "trip_surf",
        "all_you_can_surf",
        "any"
      ],
      "description": "Plan type filter. daily_surf = fresh allowance each day; trip_surf = one pool for the trip; all_you_can_surf = unlimited-style. Default any."
    },
    "currency": {
      "type": "string",
      "description": "Optional ISO 4217 override for quoted prices. Normally derived from language."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation, e.g. en, de, ja, th. Localizes names/labels and sets the landing-page language and currency."
    }
  },
  "required": [
    "destination"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Resolved destination label (localized)."
    },
    "slug": {
      "type": "string"
    },
    "covered": {
      "type": "boolean"
    },
    "from_price": {
      "type": "number",
      "description": "Lowest full plan price in currency."
    },
    "currency": {
      "type": "string"
    },
    "plans": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "product_id": {
            "type": "integer"
          },
          "name": {
            "type": "string",
            "description": "Plan name, localized to the requested language where a translation exists."
          },
          "type": {
            "type": "string",
            "description": "Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."
          },
          "grade": {
            "type": "string",
            "description": "All You Can Surf tier qualifier (empty for standard). Present only the returned value."
          },
          "data_gb": {
            "type": "number",
            "description": "High-speed data in GB. PER DAY when data_period is per_day (Daily Surf); TOTAL for the whole validity when data_period is total (Trip Surf). 0 = no fixed high-speed cap stated."
          },
          "data_period": {
            "type": "string",
            "description": "per_day or total — how data_gb applies."
          },
          "days": {
            "type": "integer",
            "description": "Validity in days."
          },
          "throttle_kbps": {
            "type": "integer",
            "description": "Speed in kbps after the high-speed allowance is used (for that day on per_day plans; for the rest of the trip on total plans). 0 = no throttle stated in this plan's specification."
          },
          "fup": {
            "type": "string",
            "description": "All You Can Surf fair-use policy in plain words (daily full-speed allowance and the still-unlimited reduced speed afterwards). Present it as returned — every AYCS grade has such an allowance; empty for non-AYCS plans."
          },
          "data_reset": {
            "type": "string",
            "description": "When the daily allowance refreshes (per_day plans only). Empty when unknown."
          },
          "validity_clock": {
            "type": "string",
            "description": "What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown."
          },
          "expires_on": {
            "type": "string",
            "description": "Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans."
          },
          "notice": {
            "type": "string",
            "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat."
          },
          "carrier": {
            "type": "string",
            "description": "Local network operator, when specified. NEVER invent one if empty."
          },
          "network": {
            "type": "string",
            "description": "Network generation, e.g. 5G/4G. NEVER invent one if empty."
          },
          "coverage": {
            "type": "string",
            "description": "Human-readable coverage label (localized)."
          },
          "price": {
            "type": "number",
            "description": "FULL fixed price in currency; not per-day or per-GB."
          },
          "currency": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "family_id": {
            "type": "string",
            "description": "Plans sharing a family_id are day-length variants of the same package."
          },
          "review_count": {
            "type": "integer"
          },
          "rating": {
            "type": "number"
          },
          "coverage_countries": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Localized country names covered (details tool only, multi-country plans)."
          },
          "description": {
            "type": "string"
          }
        }
      }
    },
    "all_plans_url": {
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
🟢get_plan_details(product_id, language)

Full details for one e-eSIM plan by product id: data allowance, validity, network, throttle behaviour, daily reset, full coverage country list, reviews, description and link.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "WooCommerce product id from search_esim_plans."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation. Localizes names/labels and sets the landing-page language/currency of the link."
    }
  },
  "required": [
    "product_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer"
    },
    "name": {
      "type": "string",
      "description": "Plan name, localized to the requested language where a translation exists."
    },
    "type": {
      "type": "string",
      "description": "Daily Surf, Trip Surf or All You Can Surf. Brand names — keep in English."
    },
    "grade": {
      "type": "string",
      "description": "All You Can Surf tier qualifier (empty for standard). Present only the returned value."
    },
    "data_gb": {
      "type": "number",
      "description": "High-speed data in GB. PER DAY when data_period is per_day (Daily Surf); TOTAL for the whole validity when data_period is total (Trip Surf). 0 = no fixed high-speed cap stated."
    },
    "data_period": {
      "type": "string",
      "description": "per_day or total — how data_gb applies."
    },
    "days": {
      "type": "integer",
      "description": "Validity in days."
    },
    "throttle_kbps": {
      "type": "integer",
      "description": "Speed in kbps after the high-speed allowance is used (for that day on per_day plans; for the rest of the trip on total plans). 0 = no throttle stated in this plan's specification."
    },
    "fup": {
      "type": "string",
      "description": "All You Can Surf fair-use policy in plain words (daily full-speed allowance and the still-unlimited reduced speed afterwards). Present it as returned — every AYCS grade has such an allowance; empty for non-AYCS plans."
    },
    "data_reset": {
      "type": "string",
      "description": "When the daily allowance refreshes (per_day plans only). Empty when unknown."
    },
    "validity_clock": {
      "type": "string",
      "description": "What the days count means for THIS plan: either 24-hour periods from activation, or calendar days ending at a fixed clock (e.g. \"ends 23:59 (UTC+8)\"). State it whenever it is present — a calendar-day plan bought in the evening loses most of its first day. Empty when unknown."
    },
    "expires_on": {
      "type": "string",
      "description": "Hard supplier end date (YYYY-MM-DD) after which the plan stops working and unused data is lost, whatever validity the customer picks. Say it plainly when present, and do not recommend a day count that cannot finish before it. Empty for the vast majority of plans."
    },
    "notice": {
      "type": "string",
      "description": "Customer-facing caveat for this plan in plain words: a daily cut-off, a coverage exclusion, an activation or verification step. Present it as returned whenever it is non-empty — never omit or soften it. Empty when the plan has no caveat."
    },
    "carrier": {
      "type": "string",
      "description": "Local network operator, when specified. NEVER invent one if empty."
    },
    "network": {
      "type": "string",
      "description": "Network generation, e.g. 5G/4G. NEVER invent one if empty."
    },
    "coverage": {
      "type": "string",
      "description": "Human-readable coverage label (localized)."
    },
    "price": {
      "type": "number",
      "description": "FULL fixed price in currency; not per-day or per-GB."
    },
    "currency": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "family_id": {
      "type": "string",
      "description": "Plans sharing a family_id are day-length variants of the same package."
    },
    "review_count": {
      "type": "integer"
    },
    "rating": {
      "type": "number"
    },
    "coverage_countries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Localized country names covered (details tool only, multi-country plans)."
    },
    "description": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
🟢start_checkout(product_id, language)

Hand the customer to the e-eSIM shop to buy one plan. Returns buy_url (the product page where they tap Buy now to pay securely — card, Apple Pay, Google Pay) plus the plan name and price. No account needed; the eSIM is emailed right after payment. There is no in-chat order tracking and no discount-code field.

Input Schema

{
  "type": "object",
  "properties": {
    "product_id": {
      "type": "integer",
      "description": "WooCommerce product id to buy."
    },
    "language": {
      "type": "string",
      "description": "ISO language of the conversation. Sets the language/currency of the payment page."
    }
  },
  "required": [
    "product_id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string"
    },
    "price": {
      "type": "number",
      "description": "Full fixed price in currency; not per-day."
    },
    "currency": {
      "type": "string"
    },
    "buy_url": {
      "type": "string",
      "description": "The exact product page to send the customer to. Use verbatim."
    },
    "app_links": {
      "type": "object",
      "description": "Optional links to the free e-eSIM app (android/ios) for tracking data usage after setup. Mention only when present."
    },
    "message": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools