AeroCell — Travel eSIM Search

Search live AeroCell travel eSIM plans by destination, travel dates, data allowance and budget, with coverage details and checkout links.

Hosted MCP Server

npx add-mcp 'https://aerocell.app/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Public access, no credentials

MCP endpoint: https://aerocell.app/mcp. Transport: Streamable HTTP, stateless. The three search tools and JSON routes require no AeroCell account, OAuth, API key, bearer token or cookie. An AI client's own account requirements may still apply.

The MCP client performs initialization and discovers tool schemas through tools/list. POST requests must accept both application/json and text/event-stream. A normal browser GET shows a short guide; it does not execute a search.

Country results use the existing recommendation catalog with a five-minute cache. Regional results fetch the existing bundle catalog. Allowances and prices can change before checkout.

Connect an AI client

These configuration examples were checked against the linked official documentation on 12 October 2026. They are untested client examples. Local automated tests use the official MCP TypeScript SDK to initialize, list tools and search; a passing SDK test does not establish compatibility in every AI application.

Codex CLI / IDE extension

codex mcp add aerocell --url https://aerocell.app/mcp
codex mcp list

Alternative entry in ~/.codex/config.toml:

[mcp_servers.aerocell]
url = "https://aerocell.app/mcp"

Official OpenAI connection documentation. Untested with AeroCell in this client.

Claude Code

claude mcp add --transport http aerocell https://aerocell.app/mcp
claude mcp get aerocell

Official Claude Code MCP documentation. Untested with AeroCell in this client.

VS Code / GitHub Copilot

Save this in .vscode/mcp.json, then start the server from the file's controls and enable its tools in agent mode.

{
  "servers": {
    "aerocell": {
      "type": "http",
      "url": "https://aerocell.app/mcp"
    }
  }
}

Official VS Code MCP documentation. Untested with AeroCell in this client.

Test prompt: “Find plans for Japan from 15 to 25 October 2026 with at least 3 GB, under $25.” For itineraries, pass every country code and inspect the returned coverage list.

Three read-only MCP tools

All tools return JSON as structuredContent and as text content. The samples below show the structured JSON. MCP tool failures return isError: true with a useful message; invalid schema inputs can also produce protocol errors. None of the tools places orders.

find_esim_plans

Find current single-country plans.

ParameterTypeBehavior
country_codestring, requiredTwo-letter ISO 3166-1 alpha-2 code, such as JP, FR or GB. Case-insensitive. The catalog also accepts XK.
start_date / end_datestring, optionalProvide both real YYYY-MM-DD dates. Inclusive range: 1–366 days. Dates constrain validity; they do not reserve inventory or schedule activation.
min_data_gbnumber ≥ 0Minimum allowance. Displayed GB uses 1024³ bytes and one-decimal rounding.
max_price_usdnumber > 0Maximum live total plan price in USD.
require_trip_coveragebooleanDefaults to true with dates. False allows shorter plans; inspect covers_trip.
limitinteger 1–20Default 8. Cheapest first, then more data. total_matching counts all matches before this limit.
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "find_esim_plans",
    "arguments": {
      "country_code": "JP",
      "start_date": "2026-10-15",
      "end_date": "2026-10-25",
      "min_data_gb": 3,
      "max_price_usd": 25,
      "limit": 8
    }
  }
}

Illustrative response, not a live offer. All sample prices, operator names and EXAMPLE IDs are fixtures. Retrieve real IDs through search.

{
  "country": {
    "code": "JP",
    "name": "Japan"
  },
  "trip_days": 11,
  "currency": "USD",
  "updated_at": "2026-10-12T12:00:00Z",
  "total_matching": 1,
  "browse_url": "https://aerocell.app/plans",
  "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout.",
  "plans": [
    {
      "id": "EXAMPLE-JP-5GB",
      "name": "Example Japan 5 GB",
      "data_gb": 5,
      "validity_days": 15,
      "price_usd": 9,
      "network": "5G",
      "operators": [
        "Example operator"
      ],
      "covers_trip": true,
      "plan_page_url": "https://aerocell.app/plans/japan",
      "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
    }
  ]
}

get_esim_plan

ParameterTypeBehavior
country_codestring, requiredThe same country code used in find_esim_plans.
plan_idstring, requiredID from that country search, 1–100 letters, digits, underscores or hyphens. Regional IDs are not supported by this tool; refresh them through regional search.
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_esim_plan",
    "arguments": {
      "country_code": "JP",
      "plan_id": "EXAMPLE-JP-5GB"
    }
  }
}

Replace the EXAMPLE ID with a real country-search ID. Illustrative detail response:

{
  "country": {
    "code": "JP",
    "name": "Japan"
  },
  "currency": "USD",
  "updated_at": "2026-10-12T12:00:00Z",
  "plan": {
    "id": "EXAMPLE-JP-5GB",
    "name": "Example Japan 5 GB",
    "data_gb": 5,
    "validity_days": 15,
    "price_usd": 9,
    "network": "5G",
    "operators": [
      "Example operator"
    ],
    "covers_trip": null,
    "plan_page_url": "https://aerocell.app/plans/japan",
    "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
  },
  "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout."
}

find_regional_esim_plans

ParameterTypeBehavior
country_codesstring[], conditional1–30 distinct codes for every itinerary country. Required unless region is supplied. Every requested country must appear in each bundle's coverage list.
regionstring, conditionalglobal, europe, asia_pacific, southeast_asia, latin_america, middle_east_north_africa or gulf. Can combine with country_codes. Required unless country_codes is supplied.
start_date / end_datestring, optionalProvide both real YYYY-MM-DD dates. Inclusive range: 1–366 days. Dates constrain validity; they do not reserve inventory or schedule activation.
min_data_gbnumber ≥ 0Minimum allowance. Displayed GB uses 1024³ bytes and one-decimal rounding.
max_price_usdnumber > 0Maximum live total plan price in USD.
require_trip_coveragebooleanDefaults to true with dates. False allows shorter plans; inspect covers_trip.
limitinteger 1–20Default 8. Cheapest first, then more data. total_matching counts all matches before this limit.
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "find_regional_esim_plans",
    "arguments": {
      "country_codes": [
        "FR",
        "IT",
        "ES"
      ],
      "region": "europe",
      "start_date": "2026-10-15",
      "end_date": "2026-10-25",
      "min_data_gb": 3,
      "max_price_usd": 25
    }
  }
}

Illustrative response. country_codes is the bundle's exact published coverage list. Region names alone do not establish itinerary coverage.

{
  "requested_country_codes": [
    "FR",
    "IT",
    "ES"
  ],
  "region": "europe",
  "trip_days": 11,
  "currency": "USD",
  "updated_at": "2026-10-12T12:00:00Z",
  "total_matching": 1,
  "browse_url": "https://aerocell.app/plans",
  "note": "Illustrative fixture only. Fetch live prices and real plan IDs before recommending or opening checkout.",
  "plans": [
    {
      "id": "EXAMPLE-EU-5GB",
      "name": "Example Europe 5 GB",
      "data_gb": 5,
      "validity_days": 15,
      "price_usd": 9,
      "network": "5G",
      "operators": [
        "Example operator"
      ],
      "covers_trip": true,
      "plan_page_url": "https://aerocell.app/plans/europe",
      "checkout_url": "https://aerocell.app/checkout/EXAMPLE-EU-5GB",
      "region_code": "EU-3",
      "country_codes": [
        "FR",
        "IT",
        "ES"
      ],
      "country_count": 3
    }
  ]
}

The same searches over JSON

All three routes use the same live search functions as MCP. Send HTTP GET requests; receive the same structured result schemas. No login required. Browser access allows CORS without credentials.

curl --get 'https://aerocell.app/api/v1/esim/plans' \
  --data-urlencode 'country_code=JP' \
  --data-urlencode 'start_date=2026-10-15' \
  --data-urlencode 'end_date=2026-10-25' \
  --data-urlencode 'min_data_gb=3' \
  --data-urlencode 'max_price_usd=25' \
  --data-urlencode 'limit=8'
curl --get 'https://aerocell.app/api/v1/esim/regional-plans' \
  --data-urlencode 'country_codes=FR,IT,ES' \
  --data-urlencode 'region=europe' \
  --data-urlencode 'start_date=2026-10-15' \
  --data-urlencode 'end_date=2026-10-25' \
  --data-urlencode 'min_data_gb=3' \
  --data-urlencode 'max_price_usd=25'

Plan details require country_code. This runnable example needs jq and uses a real returned plan ID:

PLAN_ID=$(curl -fsS 'https://aerocell.app/api/v1/esim/plans?country_code=JP&limit=1' | jq -r '.plans[0].id // empty')
if [ -n "$PLAN_ID" ]; then
  curl -fsS "https://aerocell.app/api/v1/esim/plans/$PLAN_ID?country_code=JP"
fi

For JSON queries, country_codes is one comma-separated parameter; numeric fields are decimal numbers; booleans are exactly true or false. Unknown, empty and repeated parameters are rejected. Detail requests accept only country_code.

Download the public OpenAPI 3.1 specification for full route schemas and examples.

Comparison websites

Import GET /api/v1/esim/catalog to list AeroCell alongside other providers. This public JSON feed requires no account or API key and allows browser access without credentials. It returns the complete purchasable catalog in one response, including country and regional plans and every day-pass duration from 1–90 days. There is no search limit or pagination. Hidden products and existing-customer top-ups are excluded.

curl -fsS -D catalog-headers.txt \
  'https://aerocell.app/api/v1/esim/catalog' \
  -o aerocell-catalog.json

Poll every 15 minutes. Save the response's ETag header and send it as If-None-Match on subsequent requests. HTTP 304 means your previous catalog remains current; HTTP 200 supplies a complete replacement. catalog_version changes when public plan content changes. Respect Retry-After on HTTP 429 or 503, keep your previous import, and retry. An error must never be imported as an empty catalog.

curl -sS -D catalog-headers.txt \
  -H 'If-None-Match: "<saved-etag>"' \
  'https://aerocell.app/api/v1/esim/catalog' \
  -o catalog-response.json
# Inspect the HTTP status before replacing your saved catalog.

Illustrative response, not a live offer. The example contains a fixture; fetch the endpoint for the complete live catalog.

{
  "schema_version": 1,
  "provider": "AeroCell",
  "currency": "USD",
  "price_basis": "Retail before coupons; daily variants show the total duration price.",
  "total_plans": 1,
  "plans": [
    {
      "id": "EXAMPLE-JP-5GB",
      "package_code": "EXAMPLE-JP-5GB",
      "name": "Illustrative Japan 5GB (not a live offer)",
      "country_codes": [
        "JP"
      ],
      "data_gb": 5,
      "allowance_period": "plan",
      "is_unlimited": false,
      "allowance_behavior": "total",
      "reduced_speed_kbps": null,
      "maximum_speed_kbps": null,
      "validity_days": 15,
      "is_daily": false,
      "price_usd": 9,
      "operators": [
        {
          "name": "Example operator",
          "network": "5G"
        }
      ],
      "plan_page_url": "https://aerocell.app/plans/japan",
      "checkout_url": "https://aerocell.app/checkout/EXAMPLE-JP-5GB"
    }
  ],
  "catalog_version": "3cedf68183c3a264aa809b94f0ffa23cd572c44831a56586e612918c4df24dc4",
  "generated_at": "2026-10-13T00:00:00.000Z",
  "source_updated_at": "2026-10-13T00:00:00.000Z",
  "refresh_after_seconds": 900
}

Allowances, duration and freshness

data_gb is the high-speed allowance for allowance_period, using 1024³ bytes per GB. A daily allowance repeats each day; do not present it as a total trip allowance. daily_throttled plans continue at the published reduced_speed_kbps after that day's quota. daily_cutoff plans stop until the quota resets. is_unlimited does not mean unlimited high-speed data. Null speed fields mean unspecified, not uncapped.

Each plan has a stable id, exact country_codes, operator network summaries and AeroCell purchase links. Day-pass IDs append their selected duration to package_code; their price_usd is the total for that duration, including ordinary duration discounts and before coupons. The checkout URL already selects the duration. The fixed-plan storefront minimum of 1,000,000,000 bytes is preserved; daily plans with smaller high-speed quotas are included.

source_updated_at is the oldest provider catalog retrieval used in the response, not a provider price-change timestamp. Snapshot contents refresh within five minutes; provider data is cached for up to 15 minutes. Missing required facts or expired source data produce HTTP 503 instead of a partial catalog.

Registered partner links

Registered partners can fetch GET /api/partners/comparison-catalog from their server using an existing scoped feed credential: Authorization: Bearer <feed-key>. This returns the same plans with partner purchase links when referral tracking is enabled. tracking_enabled reports whether those links carry attribution. Prices are unchanged. Keep the key on your server; it does not authorize purchases or reporting access. Contact [email protected] for partner access.

Response fields & errors

price_usd is the current catalog price; currency is USD. data_gb, validity_days, network and operators describe the plan. Operators are a catalog summary of up to four names, not a complete per-country network map. Regional bundles include country_codes, country_count and region_code.

covers_trip is null without dates. It indicates validity length only. updated_at for country results is the upstream catalog snapshot time; for regional results it is the catalog retrieval time, not a provider price-change timestamp. Returned plan_page_url, browse_url and checkout_url open AeroCell.

ParameterTypeBehavior
200SuccessNo matches is also 200: plans: [], total_matching: 0.
400Invalid inputMissing country, invalid dates, duplicate codes, unsupported region or invalid filters.
404Not foundPlan is unavailable for the supplied country, or API route does not exist.
405Method not allowedRead-only plan routes accept GET and CORS OPTIONS.
502Invalid catalog responseUpstream returned an invalid response; no guessed prices are substituted.
503Catalog unavailableRetry later; Retry-After suggests 30 seconds.
{
  "error": {
    "code": "invalid_input",
    "message": "Provide both start_date and end_date."
  }
}

Built by Mezsondra LTD

AeroCell: Affordable eSIMs is operated by Mezsondra LTD. Contact [email protected] for integration help.

Support · Privacy policy · Terms · About AeroCell

Discovery files help applications understand these interfaces; they do not guarantee that AI platforms will discover, list or recommend AeroCell.