Roam2Go eSIM Catalog

Search travel eSIM data plans for 230+ destinations with live prices and purchase links.

Should I use this

Quality & Safety

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

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~757Tokens (tool definitions)
~546 BTypical response size
Moderate attention impact (0.59% 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://roam2go.com/wp-json/r2g-mcp/v1/mcp"
    }
  }
}

Remote endpoints

https://roam2go.com/wp-json/r2g-mcp/v1/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

๐ŸŸข Read-only๐ŸŸก Write๐Ÿ”ด Deleteโšช Unknown
๐ŸŸขsearch_plans(destination, min_days, min_data_gb, limit)

Search travel eSIM data plans by destination name. Returns plans with price (EUR, VAT included), data amount, validity days, activation policy and a direct purchase link. Matching is on the destination's own name in any major language, so a country name returns that country's local plans. Regional and global plans that cover that country are returned too, after the local ones, so asking for "France" also surfaces the Europe plan. You can still search a region by its own name, e.g. "Europe", "Asia", "Oceania", "North America", "Latin America", "Africa", "Caribbean Islands", "Middle East and North Africa", or "global" for worldwide plans. "matches" is the total number of plans found and "returned" is how many are in this response; raise "limit" (max 40) to see the rest. Unlimited plans carry a "fair_use" object with that plan's real figures: "gb_per_day" (GB per day at full speed; null when the plan declares no daily amount), "speed_after_mbps" (speed after that amount; when "gb_per_day" is null, the plan's top speed: say "up to" it; null if not stated), "never_cut" (true = the connection is never cut off) and "no_daily_quota" (true = no daily quota at all); "fair_use" is null when no figures are declared. Plans with calls carry a "voice" object: "minutes" and "international_calls" (false = calls within the destination country only, true = international calls with a US-based +1 number, null = not stated). Each plan also has "product_urls" and "checkout_urls": the same page and the same purchase link in Catalan (ca), Spanish (es), English (en), French (fr), Italian (it), German (de) and Portuguese (pt). Always give the user the link in the language they are writing in; use "en" for any other language.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Country name in any major language, e.g. \"Japan\", \"Japon\", \"Japรณ\""
    },
    "min_days": {
      "type": "integer",
      "description": "Only plans valid at least this many days"
    },
    "min_data_gb": {
      "type": "number",
      "description": "Minimum data in GB (unlimited plans always match)"
    },
    "limit": {
      "type": "integer",
      "description": "Max results (default 12, max 40)"
    }
  },
  "required": [
    "destination"
  ]
}
๐ŸŸขget_plan(id)

Get one plan by its id (e.g. "R2G-7224"), including the purchase link, also in 7 languages ("product_urls" and "checkout_urls": ca, es, en, fr, it, de, pt; give the one in the language of the user).

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
๐ŸŸขlist_destinations

List all destinations (country name + code + cheapest plan price in EUR).

Input Schema

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

Community

Rate this Server

Evidence

Recent observations

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