esimoa — travel eSIM comparison
Server Details
Compare travel eSIM plans by country, days and data — live prices and links to buy on esimoa.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- nbase-io/esimoa-mcp
- GitHub Stars
- 1
- Server Listing
- esimoa
TDQS
Scored across 6 tools
The set contains two near-duplicate pairs: `search` vs `search_esims` and `fetch` vs `get_esim`, both addressing the same underlying operations in different output formats. Descriptions do try to steer the agent ('prefer search_esims', 'use get_esim') and give concrete distinctions, which prevents a lower score, but an agent can easily misselect.
Half the tools follow verb_noun (compare_esims, get_esim, list_countries, search_esims), but `search` and `fetch` are bare verbs with no resource noun. There is also minor inconsistency between singular `esim` and plural `esims` within the same pattern.
Six tools is a reasonable, well-scoped size for an eSIM comparison server. The only concern is that two of the six exist largely to duplicate the function of two others in a different format, so effective surface is closer to four.
Core comparison workflows are covered: discover plans (search/search_esims), inspect one plan (get_esim/fetch), compare multiple (compare_esims), and browse destinations (list_countries), with provider/price/data filters available. No obvious dead end, though there is no explicit provider or network listing endpoint.
Available Tools
6 toolscompare_esimsCompare eSIM plans side by sideARead-onlyIdempotentInspect
Compare 2 to 5 esimoa (이심모아) eSIM plans side by side by id (ids come from search_esims): price, data, validity, price per GB, coverage, network, hotspot and local phone number. Returns which plan has the lowest price, most data, longest validity and lowest price per GB, and each plan page url on esimoa.com. Prices are in KRW.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Plan ids from search_esims. | |
| lang | No | Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de). |
Output Schema
| Name | Required | Description |
|---|---|---|
| lang | No | |
| items | Yes | |
| notFound | No | |
| highlights | Yes | Plan id that is best on each measure among the compared plans (null when tied or unknown). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new context: prices are in KRW, the result includes computed winners (lowest price, most data, longest validity, lowest price per GB), and each plan's page URL is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the verb and scope, and no filler. The attribute list in sentence one is long but each item is a real comparison dimension, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema and rich annotations, the description only needs to frame scope and routing, which it does. The KRW currency note is a useful addition; nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the ids cardinality (2-5) and the lang enum are already fully documented in the schema. The description only restates that ids come from search_esims, adding minimal meaning beyond structured fields; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Compare), resource (esimoa eSIM plans), scope (2 to 5, by id), and the compared attributes are enumerated. It also names the sibling that produces the ids (search_esims), so an agent can distinguish it from search_esims, get_esim, and search without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the precondition that ids come from search_esims and the 2-5 cardinality, which is exactly the context needed to invoke it. It stops short of saying when not to use it (e.g. single-plan lookup should use get_esim instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch an esimoa eSIMARead-onlyIdempotentInspect
Fetch one esimoa (이심모아) eSIM plan as a document by id returned from search (ChatGPT deep research format). For plans found with search_esims, use get_esim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and non-open-world behavior, so the safety profile is covered. The description adds that the result is a 'document' in 'ChatGPT deep research format', which is useful framing, but with an output schema present this is largely redundant rather than new behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with no wasted filler. The parenthetical gloss and format note add slight length but are defensible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema and rich annotations mean the description need not explain returns or safety. For a one-param read tool this is nearly sufficient; the only gap is not clarifying which search path supplies the id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage, so the description must carry the load. It does add the key semantic that the id comes from prior search results, but it never specifies id format or provenance for the non-search_esims path, leaving the single required param only partially explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: fetch one esimoa eSIM plan by id, returned as a document. It also explicitly distinguishes itself from get_esim for search_esims results. Minor ambiguity remains because 'search' is not disambiguated from the sibling search_esims.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: plans found with search_esims should use get_esim instead, which implies this tool serves results from the other ('deep research') search path. No explicit exclusion for when fetch is wrong outside that implied split, so it stops short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_esimGet eSIM plan detailsARead-onlyIdempotentInspect
Get the details of one esimoa (이심모아) eSIM plan by id (from search_esims), including its plan page url.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Plan id | |
| lang | No | Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de). |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | Yes | |
| lang | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds only that the result includes the plan page url; it says nothing about rate limits, auth needs, or language-dependent output beyond what the schema states. With annotations carrying the main burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste: verb and resource first, then the id provenance, then the notable return field. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the rich annotations cover the safety semantics. The description is sufficient for a simple two-parameter lookup, with only minor room to mention the lang-driven output variation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with id and lang both documented in the schema (including the enum and the instruction to match the user's language), so the baseline is 3. The description adds provenance for id (from search_esims) but says nothing about the lang parameter's effect on output language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (get) and resource (one esimoa eSIM plan's details) and pins scope with 'by id (from search_esims)'. It also names the sibling that produces the required id, letting an agent separate this from search_esims and compare_esims without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly conveys the retrieval context by telling the agent the id originates from search_esims, which is actionable routing guidance. However, it gives no exclusions or alternatives (e.g., use compare_esims when comparing plans), so guidance stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesList eSIM destinationsARead-onlyIdempotentInspect
List countries where esimoa (이심모아) sells eSIMs, with the number of plans and the lowest price (KRW). Optionally filter by name.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de). | |
| query | No | Country name or ISO code filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered; the description adds genuinely useful context by disclosing that the catalog is limited to esimoa's destinations and that price is returned in KRW with a plan count. It stops short of mentioning pagination or result-size behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the resource being listed, then the returned fields, then the filter. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only list tool with an output schema and full annotation coverage, the description is nearly complete; the main omission is guidance on how this list relates to the sibling search/compare tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (lang enum, query filter) are already documented in the schema. The description only echoes the name filter and never mentions the language parameter, adding no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List countries where esimoa sells eSIMs') plus the returned fields (plan count, lowest price in KRW) and the optional filter. An agent can distinguish this catalog-listing tool from compare_esims/search_esims without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Says 'Optionally filter by name,' which implies a lookup use case, but gives no explicit when-to-use guidance or criteria for choosing this over search_esims or search. Usage is only weakly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch esimoa eSIMsARead-onlyIdempotentInspect
Free-text search of esimoa (이심모아) eSIM plans in the search/fetch format used by ChatGPT deep research, e.g. "Japan 7 days unlimited" or "USA 3 days local phone number". Understands unlimited, daily, local phone number, local network, hotspot and 5G. Returns ids to use with fetch. When you can fill filters, prefer search_esims.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine behavioral value beyond that: which query concepts are understood (unlimited, daily, local phone number, hotspot, 5G) and that results feed 'fetch'. It does not discuss result count, ranking, or empty-result behavior, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core verb and resource, then examples, then the downstream routing rule. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the description still usefully notes it returns ids for fetch. For a one-parameter search tool this is essentially complete; the ambiguity of 'search/fetch format' is the only minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single 'query' parameter, so the description must carry the burden, and it does: it explains the accepted format ('search/fetch format used by ChatGPT deep research') and supplies two concrete example queries plus the vocabulary the parser understands. Slightly short of 5 only because no syntax constraints or limits are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Free-text search of esimoa eSIM plans') and immediately scopes it against the sibling search_esims by describing its free-text/keyword nature. An agent can distinguish it from search_esims, compare_esims, fetch, and get_esim without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the routing rule: 'When you can fill filters, prefer search_esims.' It also names the downstream tool ('Returns ids to use with fetch'), covering both when to pick this tool and what to do with its output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_esimsSearch & compare travel eSIMsARead-onlyIdempotentInspect
Search the travel eSIM catalog of esimoa (이심모아) and compare plans for a destination. Filter by trip length, data, unlimited or daily data, local phone number, local or roaming network, multi-country coverage, price, provider, hotspot and 5G. Sort by "recommended" (esimoa’s default order), "price" (lowest first), "data" (most data first), "price_per_gb" or "validity" (longest first). Each result includes its id (for get_esim and compare_esims) and a url to the plan page on esimoa.com. Prices are in KRW.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Trip length in days. Plans covering at least this many days (and not much longer) are returned. | |
| lang | No | Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de). | |
| sort | No | recommended | price | data | price_per_gb | validity | |
| limit | No | Number of plans (default 5, max 10). | |
| five_g | No | true = 5G network. Checked within the top 50 matches, so the total is approximate. | |
| country | No | Destination country — ISO code (JP) or name in any language (Japan, 일본). | |
| data_gb | No | Minimum data needed in GB. | |
| hotspot | No | true = hotspot/tethering supported. Checked within the top 50 matches, so the total is approximate. | |
| network | No | local = local carrier network (usually faster); roaming = roaming network. | |
| provider | No | Provider code exactly as returned in results (e.g. from a previous search). | |
| countries | No | Multi-country trip — only plans that work in ALL of these countries (ISO codes or names). Use instead of country. | |
| data_type | No | daily = data allowance resets every day; total = one allowance for the whole trip. | |
| unlimited | No | Only unlimited-data plans. | |
| max_data_gb | No | Maximum data in GB. | |
| local_number | No | true = only plans that include a local phone number for calls/SMS. | |
| max_price_krw | No | Maximum price in KRW (budget). | |
| min_price_krw | No | Minimum price in KRW. | |
| multi_country | No | true = multi-country (regional) plans only; false = single-country plans only. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lang | No | |
| sort | No | |
| items | Yes | |
| total | Yes | |
| totalIsApproximate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description's added context is meaningful: results carry an `id` usable by get_esim/compare_esims, a `url`, and prices are denominated in KRW, plus the note that 'recommended' is esimoa's default order. It omits pagination/rate-limit behavior, keeping it just below the top.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and filter set are front-loaded, then sorts, then result shape and currency — a logical order with essentially no filler. It is a dense list rather than a tightly structured paragraph, but every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 18 parameters at 100% schema coverage, an output schema for return values, and read-only annotations, the description carries only the remaining burden and does so: purpose, filter/sort vocabulary, result fields, and downstream tool wiring. It is close to complete for a tool of this complexity, with only pagination-like behavior unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description genuinely adds meaning the schema lacks: the sort enum's semantics ('price' = lowest first, 'data' = most data, 'validity' = longest first) and the fact that 'recommended' is the default, information the schema's bare enum listing does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Search the travel eSIM catalog of esimoa and compare plans for a destination') and names sibling tools by explaining that each result's `id` feeds get_esim and compare_esims. That establishes its role in the tool family, though it never explicitly contrasts itself with compare_esims, so differentiation is indirect rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: search by destination/trip length with an enumerated filter set, sort with named orders, and hand result ids to get_esim/compare_esims. There is no explicit 'use this instead of X when…' exclusion, so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- Added
compare_esims - Changed
fetch1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "type": "object" + }, + "text": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "text", + "url" + ], + "type": "object" +}
- Changed
get_esim3 fields changed- changed
Input schema / properties / lang / descriptionPrevious value: -"Language for country names and the purchase page. Match the user’s language (ko, en, ja, zh-CN, zh-TW)."New value: +"Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de)." - changed
Input schema / properties / lang / enumPrevious value: -[ - "ko", - "en", - "ja", - "zh-CN", - "zh-TW" -]New value: +[ + "ko", + "en", + "ja", + "zh-CN", + "zh-TW", + "es", + "fr", + "ar", + "vi", + "th", + "id", + "it", + "de" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "item": { + "properties": { + "countryCode": { + "type": [ + "string", + "null" + ] + }, + "countryName": { + "type": [ + "string", + "null" + ] + }, + "coverageCountries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "currency": { + "enum": [ + "KRW" + ], + "type": "string" + }, + "dataAmount": { + "type": "string" + }, + "dataAmountGB": { + "type": [ + "number", + "null" + ] + }, + "dataType": { + "description": "daily | total | null (unknown)", + "type": [ + "string", + "null" + ] + }, + "hasLocalNumber": { + "type": "boolean" + }, + "hotspot": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "type": "string" + }, + "isLocalNetwork": { + "type": "boolean" + }, + "isMultiCountry": { + "type": "boolean" + }, + "isUnlimited": { + "type": "boolean" + }, + "networkType": { + "type": [ + "string", + "null" + ] + }, + "priceKrw": { + "type": "number" + }, + "provider": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "description": "Plan page on esimoa.com", + "type": "string" + }, + "validityDays": { + "type": "number" + } + }, + "required": [ + "id", + "title", + "priceKrw", + "currency", + "validityDays", + "url" + ], + "type": "object" + }, + "lang": { + "enum": [ + "ko", + "en", + "ja", + "zh-CN", + "zh-TW", + "es", + "fr", + "ar", + "vi", + "th", + "id", + "it", + "de" + ], + "type": "string" + } + }, + "required": [ + "item" + ], + "type": "object" +}
- Changed
list_countries3 fields changed- changed
Input schema / properties / lang / descriptionPrevious value: -"Language for country names and the purchase page. Match the user’s language (ko, en, ja, zh-CN, zh-TW)."New value: +"Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de)." - changed
Input schema / properties / lang / enumPrevious value: -[ - "ko", - "en", - "ja", - "zh-CN", - "zh-TW" -]New value: +[ + "ko", + "en", + "ja", + "zh-CN", + "zh-TW", + "es", + "fr", + "ar", + "vi", + "th", + "id", + "it", + "de" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "items": { + "items": { + "properties": { + "countryCode": { + "type": "string" + }, + "lowestPriceKrw": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": "string" + }, + "planCount": { + "type": "number" + }, + "url": { + "type": "string" + } + }, + "required": [ + "countryCode", + "name", + "planCount", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "type": "number" + } + }, + "required": [ + "items", + "total" + ], + "type": "object" +}
- Changed
search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "items": { + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
- Changed
search_esims3 fields changed- changed
Input schema / properties / lang / descriptionPrevious value: -"Language for country names and the purchase page. Match the user’s language (ko, en, ja, zh-CN, zh-TW)."New value: +"Language for country names and the plan page. Match the user’s language (ko, en, ja, zh-CN, zh-TW, es, fr, ar, vi, th, id, it, de)." - changed
Input schema / properties / lang / enumPrevious value: -[ - "ko", - "en", - "ja", - "zh-CN", - "zh-TW" -]New value: +[ + "ko", + "en", + "ja", + "zh-CN", + "zh-TW", + "es", + "fr", + "ar", + "vi", + "th", + "id", + "it", + "de" +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "items": { + "items": { + "properties": { + "countryCode": { + "type": [ + "string", + "null" + ] + }, + "countryName": { + "type": [ + "string", + "null" + ] + }, + "coverageCountries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "currency": { + "enum": [ + "KRW" + ], + "type": "string" + }, + "dataAmount": { + "type": "string" + }, + "dataAmountGB": { + "type": [ + "number", + "null" + ] + }, + "dataType": { + "description": "daily | total | null (unknown)", + "type": [ + "string", + "null" + ] + }, + "hasLocalNumber": { + "type": "boolean" + }, + "hotspot": { + "type": [ + "boolean", + "null" + ] + }, + "id": { + "type": "string" + }, + "isLocalNetwork": { + "type": "boolean" + }, + "isMultiCountry": { + "type": "boolean" + }, + "isUnlimited": { + "type": "boolean" + }, + "networkType": { + "type": [ + "string", + "null" + ] + }, + "priceKrw": { + "type": "number" + }, + "provider": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "description": "Plan page on esimoa.com", + "type": "string" + }, + "validityDays": { + "type": "number" + } + }, + "required": [ + "id", + "title", + "priceKrw", + "currency", + "validityDays", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "lang": { + "enum": [ + "ko", + "en", + "ja", + "zh-CN", + "zh-TW", + "es", + "fr", + "ar", + "vi", + "th", + "id", + "it", + "de" + ], + "type": "string" + }, + "sort": { + "enum": [ + "recommended", + "price", + "data", + "price_per_gb", + "validity" + ], + "type": "string" + }, + "total": { + "type": "number" + }, + "totalIsApproximate": { + "type": "boolean" + } + }, + "required": [ + "items", + "total" + ], + "type": "object" +}
5 tool updates
- First observed
fetch - First observed
get_esim - First observed
list_countries - First observed
search - First observed
search_esims
Related MCP Connectors
Search travel eSIM data plans for 230+ destinations with live prices and purchase links.
Search travel eSIM data plans worldwide with live prices, plan details and a buy link.
Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.
Search, compare & buy prepaid travel eSIM data plans for 190+ countries in 40 currencies, including regional plans and a 12-month Travel Pass.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceBrowse, compare, and purchase eSIMs for 190+ countries via AI agents. 12 tools for searching 2,300+ data plans, checking coverage, and buying eSIMs with crypto or card. No account required for browsing.MIT
- AlicenseAqualityDmaintenanceTravel eSIMs for 193 countries. Stripe + Bitcoin checkout. QR by email in 30s. No API key.458 npmMIT
- AlicenseNot gradedqualityCmaintenanceSearch and buy travel eSIMs for 200+ countries, with specialized China plans that deliver uncensored internet without a VPN. Exposes five read-only tools to search plans, check device eSIM compatibility, get plan details, get help, and generate a secure on-site checkout link.MIT

esimfly-mcpofficial
AlicenseAqualityBmaintenanceeSIM data plans for 200+ countries: search wholesale plans, check balance and usage, diagnose eSIM connectivity from live network data, and (opt-in) order and top up eSIMs with a confirmation step.1152 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.