Koskamo

esimgomobile MCP

An official MCP server providing 39 tools for travel eSIM plan catalog browsing, plan comparison, order validation, trip planning, and country network lookup. It allows agents and developers to access live pricing data and perform dry-run orders without charging.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

esimgomobile MCP logo, by esimgomobileVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by esimgomobile
MCP endpoint (Streamable HTTP)
https://mcp.esimgomobile.com/mcp
Vendor documentation

What you can do with it

  • Browse travel eSIM plans with filters for price, data, and scope
  • Compare multiple eSIM plans side-by-side
  • Validate order details and estimate costs without placing an order
  • Plan trips based on countries, duration, and usage profile

Source and maintenance

Vendor evidenceRegistry 0.1.0
Maintenance checked

Protocol and capabilities

Server
esimgomobile 0.1.0
MCP protocol
2025-06-18
Tools
39 advertised
Resources
8 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Tools

39 advertised

forecast_data_threshold — Low-Data Forecast
Advertised by the server during the last successful anonymous check.
Advertised read-only

Matches the free website forecast: estimates when a usage threshold is reached from plan size, usage profile and days elapsed. Does not set alerts, monitor an account, or read carrier usage.

forecast_data_threshold input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "plan_gb",
    "threshold_percent",
    "usage_profile",
    "days_elapsed"
  ],
  "properties": {
    "plan_gb": {
      "type": "number",
      "maximum": 100,
      "minimum": 1
    },
    "days_elapsed": {
      "type": "number",
      "maximum": 60,
      "minimum": 0
    },
    "usage_profile": {
      "enum": [
        "light",
        "moderate",
        "heavy"
      ],
      "type": "string"
    },
    "threshold_percent": {
      "type": "number",
      "maximum": 90,
      "minimum": 10
    }
  },
  "additionalProperties": false
}
forecast_data_threshold output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
forecast_data_threshold annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_activation_details_format — Activation Details Format Check
Advertised by the server during the last successful anonymous check.
Advertised read-only

Matches the free website details check. Checks email and order-reference formats only. Does not verify ownership, retrieve activation codes, generate QR codes or send email. Contact support for a reissue.

check_activation_details_format input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "email",
    "order_reference"
  ],
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 254
    },
    "order_reference": {
      "type": "string",
      "maxLength": 128
    }
  },
  "additionalProperties": false
}
check_activation_details_format output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_activation_details_format annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_sample_esims — Sample eSIM Library
Advertised by the server during the last successful anonymous check.
Advertised read-only

Matches the free website sample preview. Returns explicitly fictional example profiles, never your real eSIMs or account balances. No account connection.

list_sample_esims input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_sample_esims output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
list_sample_esims annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_speed_test — Speed Test
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Opens a website speed-test handoff. No speed is measured in this chat or by this MCP call. Open https://esimgomobile.com/tools/run-speed-test/ on the device you want to check.

run_speed_test input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
run_speed_test output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
run_speed_test annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_public_ip — What's My IP
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the IP address of the caller or connector reaching this server. An AI client may call from its own server, so this is not proof of the user device public IP. For a device-side lookup open the website tool.

get_public_ip input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_public_ip output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_public_ip annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_roaming_status — Am I Roaming?
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compares entered countries using country names and ISO codes, with conditional official roaming guidance. Does not detect the registered network, verify plan eligibility, establish eSIM coverage or guarantee charges.

check_roaming_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "home_country",
    "current_country"
  ],
  "properties": {
    "home_country": {
      "type": "string",
      "description": "User's home country, e.g. United States"
    },
    "current_country": {
      "type": "string",
      "description": "Country the user is currently in"
    }
  },
  "additionalProperties": false
}
check_roaming_status output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_roaming_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
measure_latency — Latency to Destination
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Measures an HTTPS HEAD request from the server edge to a public host, not from the user device. The free website tool instead measures browser-to-esimgomobile timing. These paths and results are different.

measure_latency input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "destination"
  ],
  "properties": {
    "destination": {
      "type": "string",
      "description": "Hostname or public IP to probe, e.g. example.com or 8.8.8.8"
    }
  },
  "additionalProperties": false
}
measure_latency output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
measure_latency annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
grade_connection_quality — Connection Quality
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user gives you download/upload speed and ping numbers and wants a verdict. Grades the connection Excellent/Good/Fair/Poor with practical advice.

grade_connection_quality input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "download_mbps",
    "upload_mbps",
    "ping_ms"
  ],
  "properties": {
    "ping_ms": {
      "type": "number",
      "description": "Ping in milliseconds"
    },
    "upload_mbps": {
      "type": "number",
      "description": "Upload speed in Mbps"
    },
    "download_mbps": {
      "type": "number",
      "description": "Download speed in Mbps"
    }
  },
  "additionalProperties": false
}
grade_connection_quality output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
grade_connection_quality annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
detect_captive_portal — Captive Portal / Public Wi-Fi Detector
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user is on hotel/airport/cafe Wi-Fi and suspects a login page is blocking them. Gives a step-by-step guided check — no automatic probing.

detect_captive_portal input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
detect_captive_portal output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
detect_captive_portal annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_dns_leaks — DNS Leak Test
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user wants to check whether their DNS queries leak outside their VPN. Gives a guided manual check — browsers cannot run automatic DNS probes.

check_dns_leaks input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
check_dns_leaks output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_dns_leaks annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_wifi_security_checklist — Wi-Fi Security Checklist
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user is about to use public, hotel, or airport Wi-Fi. Returns a practical safety checklist.

get_wifi_security_checklist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_wifi_security_checklist output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_wifi_security_checklist annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_speed_requirements — Speed Needed For
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks how much bandwidth an activity needs (video calls, 4K streaming, gaming). Looks up reference requirements from a built-in table.

lookup_speed_requirements input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "activity"
  ],
  "properties": {
    "activity": {
      "type": "string",
      "description": "Activity, e.g. '4K streaming', 'video calls', 'gaming'"
    }
  },
  "additionalProperties": false
}
lookup_speed_requirements output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
lookup_speed_requirements annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_coverage — Coverage Checker
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user asks whether a country is covered by esimgomobile plans. Answers from esimgomobile's published coverage list and plan catalog (pricing shown as catalog pricing only) plus the built-in country network reference.

check_coverage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "type": "string",
      "description": "Country to check, e.g. Japan"
    }
  },
  "additionalProperties": false
}
check_coverage output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_coverage annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
estimate_data_usage — Data Usage Estimator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user is planning a trip and asks how much mobile data they need. Estimates from trip days, daily hours online, and a light/moderate/heavy usage profile, then suggests a plan size.

estimate_data_usage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "days",
    "hours_per_day",
    "usage_profile"
  ],
  "properties": {
    "days": {
      "type": "number",
      "description": "Trip length in days",
      "exclusiveMinimum": 0
    },
    "hours_per_day": {
      "type": "number",
      "description": "Hours online per day",
      "exclusiveMinimum": 0
    },
    "usage_profile": {
      "enum": [
        "light",
        "moderate",
        "heavy"
      ],
      "type": "string",
      "description": "Usage profile"
    }
  },
  "additionalProperties": false
}
estimate_data_usage output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
estimate_data_usage annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_roaming_cost — Roaming Cost Calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user wants to compare their home carrier's roaming fees against a travel eSIM. Compares a user-supplied carrier day-pass rate with an illustrative travel-eSIM daily rate.

calculate_roaming_cost input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "days",
    "home_carrier_daily_rate_usd"
  ],
  "properties": {
    "days": {
      "type": "number",
      "description": "Trip length in days",
      "exclusiveMinimum": 0
    },
    "home_carrier_daily_rate_usd": {
      "type": "number",
      "minimum": 0,
      "description": "Home carrier roaming day-pass price in USD"
    }
  },
  "additionalProperties": false
}
calculate_roaming_cost output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
calculate_roaming_cost annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_multi_country_esim — Multi-Country Guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user has a multi-country itinerary and asks which eSIM plan type fits. Recommends single-country vs regional vs global plans from the country list.

plan_multi_country_esim input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "countries"
  ],
  "properties": {
    "countries": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1,
      "description": "Countries on the itinerary"
    }
  },
  "additionalProperties": false
}
plan_multi_country_esim output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
plan_multi_country_esim annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_device_compatibility — Device Compatibility
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks whether their phone supports eSIM. Checks the model against a built-in device table, with a manual fallback check.

check_device_compatibility input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "device_model"
  ],
  "properties": {
    "device_model": {
      "type": "string",
      "description": "Device model, e.g. 'iPhone 13', 'Galaxy S23'"
    }
  },
  "additionalProperties": false
}
check_device_compatibility output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_device_compatibility annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_carrier_lock — Carrier-Lock Check
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user needs to check whether their phone is carrier-unlocked (required for travel eSIMs). Walks through the check on iPhone and Android.

check_carrier_lock input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
check_carrier_lock output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_carrier_lock annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_best_network — Best Network by City
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks which mobile network is best in a specific city. Ranks operators by observed cell-tower density from the OpenCelliD open dataset — a coverage proxy, not a speed measurement.

find_best_network input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city",
    "country"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City, e.g. Tokyo"
    },
    "country": {
      "type": "string",
      "description": "Country, e.g. Japan"
    }
  },
  "additionalProperties": false
}
find_best_network output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
find_best_network annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_airport_connectivity — Airport Connectivity
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks about connectivity at an airport (Wi-Fi, SIM vendors, eSIM tips). Answers from a researched dataset of major international airports: free Wi-Fi details, where to buy a SIM, and eSIM options on arrival.

get_airport_connectivity input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "airport_code"
  ],
  "properties": {
    "airport_code": {
      "type": "string",
      "description": "IATA airport code, e.g. NRT"
    }
  },
  "additionalProperties": false
}
get_airport_connectivity output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_airport_connectivity annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_free_wifi — Free Wi-Fi Finder
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user asks where to find free Wi-Fi in a city. Queries the live OpenStreetMap directory (Nominatim geocoding + Overpass) for community-mapped free Wi-Fi hotspots near the city.

find_free_wifi input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City to search in"
    }
  },
  "additionalProperties": false
}
find_free_wifi output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
find_free_wifi annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_country_fact_sheet — Country Connectivity Fact Sheet
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks about mobile networks, eSIM support, or Wi-Fi in a country. Returns a fact sheet from a built-in table, with general guidance where a country isn't listed.

get_country_fact_sheet input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "type": "string",
      "description": "Country, e.g. Japan"
    }
  },
  "additionalProperties": false
}
get_country_fact_sheet output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_country_fact_sheet annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_internet_freedom — Internet Freedom Check
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks about internet restrictions in a country (VoIP blocks, firewalls). Returns a high-level snapshot from a built-in table — not legal advice.

check_internet_freedom input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "type": "string",
      "description": "Country, e.g. UAE"
    }
  },
  "additionalProperties": false
}
check_internet_freedom output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
check_internet_freedom annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_installation_guide — Installation Guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user needs step-by-step eSIM installation instructions. Covers iPhone and Android, via QR code or manual entry.

get_installation_guide input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "os",
    "method"
  ],
  "properties": {
    "os": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "description": "Phone OS"
    },
    "method": {
      "enum": [
        "qr",
        "manual"
      ],
      "type": "string",
      "description": "Install method"
    }
  },
  "additionalProperties": false
}
get_installation_guide output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_installation_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
troubleshoot_esim — Troubleshooter
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user's eSIM isn't working. Diagnoses common problems: no service, no data, slow data, QR issues, activation failures, calls not working.

troubleshoot_esim input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "symptom"
  ],
  "properties": {
    "symptom": {
      "enum": [
        "no_service",
        "no_data",
        "slow_data",
        "qr_wont_scan",
        "cant_activate",
        "calls_not_working"
      ],
      "type": "string",
      "description": "What is going wrong"
    }
  },
  "additionalProperties": false
}
troubleshoot_esim output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
troubleshoot_esim annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_apn_settings — APN Lookup
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user needs APN settings for a carrier after installing an eSIM. Looks up a built-in APN table; most travel eSIMs configure automatically.

lookup_apn_settings input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "carrier"
  ],
  "properties": {
    "carrier": {
      "type": "string",
      "description": "Carrier or region, e.g. T-Mobile, UK, EU roaming"
    }
  },
  "additionalProperties": false
}
lookup_apn_settings output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
lookup_apn_settings annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
setup_dual_sim — Dual-SIM Helper
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user runs a home line plus a travel eSIM and needs the right configuration. Explains which line handles data, calls, and iMessage, and how to avoid roaming charges.

setup_dual_sim input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "primary_use": {
      "type": "string",
      "description": "Main goal, e.g. 'keep my number reachable', 'cheapest data'"
    }
  },
  "additionalProperties": false
}
setup_dual_sim output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
setup_dual_sim annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
setup_data_saver — Data-Saver Setup
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user wants to stretch a travel data plan. Gives OS-specific steps: low-data mode, background limits, offline maps and downloads.

setup_data_saver input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "os"
  ],
  "properties": {
    "os": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "description": "Phone OS"
    }
  },
  "additionalProperties": false
}
setup_data_saver output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
setup_data_saver annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
format_international_number — Dialing Helper
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user needs to dial a local number internationally. Formats a local phone number for calling between two countries, using a built-in dialing-code table.

format_international_number input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "from_country",
    "to_country",
    "phone_number"
  ],
  "properties": {
    "to_country": {
      "type": "string",
      "description": "Country you're calling to"
    },
    "from_country": {
      "type": "string",
      "description": "Country you're calling from"
    },
    "phone_number": {
      "type": "string",
      "description": "Local number as written locally, e.g. 06 12 34 56 78"
    }
  },
  "additionalProperties": false
}
format_international_number output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
format_international_number annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_data_budget — Data Budget Calculator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks how much of their plan data is left or how to ration it over a trip. Computes remaining data, daily budget and end-of-trip projection from the plan size and usage so far (which the user's phone reports exactly).

calculate_data_budget input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "plan_gb",
    "used_gb"
  ],
  "properties": {
    "plan_gb": {
      "type": "number",
      "description": "Plan size in GB, e.g. 5",
      "exclusiveMinimum": 0
    },
    "used_gb": {
      "type": "number",
      "minimum": 0,
      "description": "Data already used in GB — the phone shows this in Settings > Cellular / Network & Internet"
    },
    "days_total": {
      "type": "number",
      "description": "Trip or validity length in days",
      "exclusiveMinimum": 0
    },
    "days_elapsed": {
      "type": "number",
      "minimum": 0,
      "description": "Days already gone"
    }
  },
  "additionalProperties": false
}
calculate_data_budget output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
calculate_data_budget annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_available_plans — Available Plans
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user asks what esimgomobile plans exist or what an eSIM costs. Lists the real, currently published plan catalog with USD prices (live-checked against esimgomobile.com).

list_available_plans input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
list_available_plans output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
list_available_plans annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
recommend_plan — Plan Recommender
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user says where they're going, for how long, and roughly how much they'll use data, and wants a concrete plan pick. Estimates the GB need, then picks the cheapest matching plan from the real published catalog with prices.

recommend_plan input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "countries",
    "days",
    "usage_profile"
  ],
  "properties": {
    "days": {
      "type": "number",
      "description": "Trip length in days",
      "exclusiveMinimum": 0
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "minItems": 1,
      "description": "Countries on the itinerary"
    },
    "usage_profile": {
      "enum": [
        "light",
        "moderate",
        "heavy"
      ],
      "type": "string",
      "description": "Usage profile"
    }
  },
  "additionalProperties": false
}
recommend_plan output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
recommend_plan annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_travel_data_checklist — Travel Data Checklist
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user is preparing a trip and wants one pass over everything data-related for a country: networks, eSIM support, internet freedom, device check and install steps. Composes the built-in country, freedom, device and install references.

get_travel_data_checklist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "os": {
      "enum": [
        "ios",
        "android"
      ],
      "type": "string",
      "description": "Phone OS for install steps (default ios)"
    },
    "country": {
      "type": "string",
      "description": "Destination country"
    },
    "device_model": {
      "type": "string",
      "description": "Phone model for a compatibility check"
    }
  },
  "additionalProperties": false
}
get_travel_data_checklist output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_travel_data_checklist annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_plans — Search Plans
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user wants to browse or filter esimgomobile plans - by type (data packs, monthly, day passes), max price, minimum GB, coverage scope, or cheapest per-GB. Reads the live published catalog (snapshot fallback, labeled).

search_plans input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "kind": {
      "enum": [
        "all",
        "data_packs",
        "monthly",
        "day_passes"
      ],
      "type": "string",
      "description": "Plan type filter (default all)"
    },
    "sort": {
      "enum": [
        "price",
        "gb",
        "per_gb"
      ],
      "type": "string",
      "description": "Sort order (default price)"
    },
    "scope": {
      "enum": [
        "any",
        "single_country",
        "regional",
        "global"
      ],
      "type": "string",
      "description": "Coverage scope filter (default any)"
    },
    "min_gb": {
      "type": "number",
      "description": "Only plans with at least this many GB (fair-use plans always match)",
      "exclusiveMinimum": 0
    },
    "max_price_usd": {
      "type": "number",
      "description": "Only plans at or under this USD price",
      "exclusiveMinimum": 0
    }
  },
  "additionalProperties": false
}
search_plans output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
search_plans annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_plan_details — Plan Details
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user asks about one specific esimgomobile plan by id - price, data allowance, validity, coverage scope, per-GB unit price, and where to buy.

get_plan_details input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "plan_id"
  ],
  "properties": {
    "plan_id": {
      "type": "string",
      "minLength": 1,
      "description": "Plan id, e.g. data-pack-20gb (see search_plans for ids)"
    }
  },
  "additionalProperties": false
}
get_plan_details output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
get_plan_details annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_plans — Compare Plans
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user is choosing between 2-4 esimgomobile plans. Side-by-side price, data, validity, scope and per-GB unit price, with a best-value pick. No competitor API offers this.

compare_plans input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "plan_ids"
  ],
  "properties": {
    "plan_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "maxItems": 4,
      "minItems": 2,
      "description": "2-4 plan ids to compare (see search_plans)"
    }
  },
  "additionalProperties": false
}
compare_plans output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
compare_plans annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
validate_order_draft — Validate Order (Dry Run)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user is about to buy and wants everything checked first - the eSIM Go validate-style dry run. Verifies the plan id exists, quantity (1-50), device eSIM compatibility, and single-country scope against the itinerary, then gives a published-price estimate. Places no order and charges nothing.

validate_order_draft input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "plan_id"
  ],
  "properties": {
    "plan_id": {
      "type": "string",
      "minLength": 1,
      "description": "Plan id (see search_plans)"
    },
    "quantity": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Quantity 1-50 (default 1)"
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Destination countries, for scope validation"
    },
    "device_model": {
      "type": "string",
      "description": "Phone model for an eSIM compatibility check"
    }
  },
  "additionalProperties": false
}
validate_order_draft output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
validate_order_draft annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_trip — Trip Planner
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use when the user gives an itinerary (countries + days + usage) and wants the full answer in one call: estimated data need, best published plan pick with an alternative, and a per-country networks/eSIM/freedom brief. Composite over the live catalog and built-in country references.

plan_trip input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "countries",
    "days",
    "usage_profile"
  ],
  "properties": {
    "days": {
      "type": "number",
      "maximum": 365,
      "description": "Trip length in days",
      "exclusiveMinimum": 0
    },
    "countries": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "maxItems": 10,
      "minItems": 1,
      "description": "Countries on the itinerary, in order"
    },
    "usage_profile": {
      "enum": [
        "light",
        "moderate",
        "heavy"
      ],
      "type": "string",
      "description": "Usage profile"
    }
  },
  "additionalProperties": false
}
plan_trip output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
plan_trip annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
list_country_networks — Country Networks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use when the user asks which mobile networks operate in a country, or for eSIM support / Wi-Fi / internet-freedom facts for one country - the eSIM Go /networks parity endpoint, from esimgomobile's built-in reference.

list_country_networks input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "country": {
      "type": "string",
      "minLength": 1,
      "description": "Country name, e.g. Japan"
    }
  },
  "additionalProperties": false
}
list_country_networks output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "card"
  ],
  "properties": {
    "card": {
      "type": "object",
      "required": [
        "title",
        "rows",
        "note"
      ],
      "properties": {
        "note": {
          "type": "string"
        },
        "rows": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "label",
              "value"
            ],
            "properties": {
              "label": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "title": {
          "type": "string"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
list_country_networks annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

8 advertised

widget-result-card

Advertised by the server during the last successful anonymous check.

widget-result-card URI
ui://widget/result-card.html

MIME type: text/html;profile=mcp-app

widget-speed

Advertised by the server during the last successful anonymous check.

widget-speed URI
ui://widget/speed.html

MIME type: text/html;profile=mcp-app

widget-coverage

Advertised by the server during the last successful anonymous check.

widget-coverage URI
ui://widget/coverage.html

MIME type: text/html;profile=mcp-app

widget-estimator

Advertised by the server during the last successful anonymous check.

widget-estimator URI
ui://widget/estimator.html

MIME type: text/html;profile=mcp-app

widget-roaming

Advertised by the server during the last successful anonymous check.

widget-roaming URI
ui://widget/roaming.html

MIME type: text/html;profile=mcp-app

widget-device

Advertised by the server during the last successful anonymous check.

widget-device URI
ui://widget/device.html

MIME type: text/html;profile=mcp-app

widget-dialing

Advertised by the server during the last successful anonymous check.

widget-dialing URI
ui://widget/dialing.html

MIME type: text/html;profile=mcp-app

widget-account

Advertised by the server during the last successful anonymous check.

widget-account URI
ui://widget/account.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
284 ms
95th percentile latency
284 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 284 ms · metadata changed · 39 tool(s), 8 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http esimgomobile-mcp https://mcp.esimgomobile.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add esimgomobile-mcp --url https://mcp.esimgomobile.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable esimgomobile-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "esimgomobile-mcp": {
      "url": "https://mcp.esimgomobile.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "esimgomobile-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.esimgomobile.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start esimgomobile-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "esimgomobile-mcp": {
      "type": "http",
      "url": "https://mcp.esimgomobile.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http esimgomobile-mcp https://mcp.esimgomobile.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "esimgomobile-mcp": {
      "url": "https://mcp.esimgomobile.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "esimgomobile-mcp": {
      "serverUrl": "https://mcp.esimgomobile.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like esimgomobile MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run esimgomobile MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing