Bloomy eSIM

Recommend the right travel eSIM for any trip (200+ countries) and hand the traveler a checkout link.

Should I use this

Quality & Safety

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

Findings (1)

  • LOWTool 'estimate_data' description lacks action verbin estimate_data

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,522Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (1.19% 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": {
      "url": "https://bloomyesim.com/wp-json/bloomy/v1/mcp"
    }
  }
}

Remote endpoints

https://bloomyesim.com/wp-json/bloomy/v1/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒recommend_plan(destination, destinations, days, usage, activities, ...)

Best first call. Give the destination (or all destinations of a multi-country trip) and trip length, plus how the traveler uses data if known. Returns up to 3 options with a reason each: best_fit (cheapest that covers the estimated need), budget (cheaper, below the estimate) and roomier (next size up), each with a link straight to checkout confirmation. If the traveler pastes an itinerary or flight details, extract every country visited and the total days and pass them as destinations + days.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Country name in any of en/ja/zh/ko/es/fr (e.g. \"Turkey\", \"γƒˆγƒ«γ‚³\", \"TΓΌrkiye\") or ISO 3166-1 alpha-2 code (\"TR\"). For one country."
    },
    "destinations": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "description": "For a trip through several countries: every country visited (names or ISO codes). One eSIM covering all of them is searched. Use instead of destination."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 180,
      "description": "Trip length in days (total for a multi-country trip)."
    },
    "usage": {
      "type": "string",
      "enum": [
        "light",
        "normal",
        "heavy"
      ],
      "description": "light = maps and messaging, normal = maps, messaging, web and social (default), heavy = plus video streaming. Use activities instead when the traveler names specific uses."
    },
    "activities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "maps",
          "messaging",
          "web",
          "music",
          "voice",
          "social",
          "video_call",
          "hotspot_light",
          "video",
          "hotspot_heavy"
        ]
      },
      "description": "Specific uses named by the traveler (e.g. hotspot_light for tethering, video_call, video). Overrides usage. Same categories as bloomyesim.com/data-calculator."
    },
    "wifi": {
      "type": "string",
      "enum": [
        "rarely",
        "sometimes",
        "often"
      ],
      "description": "How often hotel/cafe Wi-Fi is used. Default sometimes."
    },
    "min_gb": {
      "type": "number",
      "description": "Use this instead of usage/activities when the traveler already knows the GB they want."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  },
  "required": [
    "days"
  ]
}
🟒search_plans(destination, min_days, min_gb, plan_type, limit, ...)

List plans for a destination, cheapest first, single-country plans before multi-country ones. Filter by trip length, minimum GB, and plan type.

Input Schema

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Country name (any supported language) or ISO alpha-2 code."
    },
    "min_days": {
      "type": "integer",
      "description": "Trip length. Fixed-GB plans shorter than this are skipped; daily plans get the trip total."
    },
    "min_gb": {
      "type": "number",
      "description": "Minimum GB (daily allowance for daily plans)."
    },
    "plan_type": {
      "type": "string",
      "enum": [
        "data",
        "unlimited"
      ],
      "description": "\"data\" = fixed GB for the whole period, \"unlimited\" = priced per day."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Default 8."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  },
  "required": [
    "destination"
  ]
}
🟒estimate_data(days, activities, wifi)

Same formula as bloomyesim.com/data-calculator: daily MB per activity x days x Wi-Fi factor x 1.15 safety buffer, rounded up.

Input Schema

{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 180
    },
    "activities": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "maps",
          "messaging",
          "web",
          "music",
          "voice",
          "social",
          "video_call",
          "hotspot_light",
          "video",
          "hotspot_heavy"
        ]
      }
    },
    "wifi": {
      "type": "string",
      "enum": [
        "rarely",
        "sometimes",
        "often"
      ]
    }
  },
  "required": [
    "days",
    "activities"
  ]
}
🟒list_destinations(query, lang)

Countries with a dedicated plan, with ISO code, localized name, number of plans and the lowest price. Use query to filter.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Part of a country name or code. Omit to list all."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  }
}
🟒get_plan(plan_id, days, lang)

Details of one plan: data, validity, network, 5G, top-up, carriers, price and checkout link.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_id": {
      "type": "integer"
    },
    "days": {
      "type": "integer",
      "description": "Trip length (sets the day count and total for daily plans)."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  },
  "required": [
    "plan_id"
  ]
}
🟒get_purchase_link(plan_id, days, lang)

Link straight to the final confirmation screen for this plan. The traveler pays there themselves; this tool never takes payment. The QR code is emailed and shown in My Page right after payment.

Input Schema

{
  "type": "object",
  "properties": {
    "plan_id": {
      "type": "integer"
    },
    "days": {
      "type": "integer",
      "description": "Trip length (needed for daily plans)."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  },
  "required": [
    "plan_id"
  ]
}
🟒get_setup_guide(device, lang)

Short, accurate setup steps (iPhone or Android), what to check before buying, and links to the full guide, the device checker and troubleshooting.

Input Schema

{
  "type": "object",
  "properties": {
    "device": {
      "type": "string",
      "enum": [
        "iphone",
        "android"
      ]
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ja",
        "zh-cn",
        "zh-tw",
        "ko",
        "es",
        "fr"
      ],
      "description": "Language for names and for the purchase page. Default en."
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools