MCP server for travel eSIM plan discovery. Compare regional and local eSIM plans across countries.
Strong tool naming (verb_noun pattern), comprehensive descriptions (avg 150 chars, well above 10-char minimum), and complete input schemas with type definitions and constraints. All 7 tools have clear, actionable descriptions that guide LLM selection. Parameters include proper constraints (minLength, minimum, maximum, pattern, enum-like descriptions). Output schemas are documented in code but not exposed in tool definitions. Error handling is present in client layer but not surfaced to LLM. No tool annotations (readOnlyHint, destructiveHint). Composition is clean, each tool has one responsibility. Naming is consistent and verb-driven. Minor gaps: output schemas not formally declared in tool registration, no per-tool error recovery guidance.
Show how much data is left on one eSIM. Takes the order uuid from list_my_esims. Requires CHEAPERESIM_API_TOKEN.
List every country a regional or global plan covers. Takes the group_id from a plan returned by plan_trip or list_plans. Local plans have a null group_id and cover only their own country.
List the eSIMs on the configured CheapereSIM account, with status, destination, expiry, and data used. Requires CHEAPERESIM_API_TOKEN.
List eSIM plans for one country, cheapest first. Use plan_trip instead when the user is visiting more than one country.
List the destinations travellers buy eSIMs for most often, with a starting price for each. Use this only when the user has not named a destination and wants ideas. If they already named one country use list_plans, and if they named several use plan_trip.
Work out the cheapest way to stay connected across several countries. Compares one regional plan covering the whole trip against buying a local plan per country, and says which is cheaper. Use this whenever the user names more than one destination.
Output schemas not formally documented in tool definitions. LLMs cannot see what fields to expect from responses, forcing them to guess or make follow-up calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are read-only but this is not declared, preventing agents from optimizing retry logic or caching.
Error handling is implemented in client layer (ApiError class with kind and userMessage) but not surfaced as tool-level recovery guidance. LLMs see only the final error message, not actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2025-06-18+ | v2 |
Find countries CheapereSIM sells eSIM plans for, by full or partial name. Use this when the user names a place and you need its country code before looking up plans. Do not use it to compare prices or list plans: use list_plans for a single country, or plan_trip for several.
list_my_esims and get_esim_usage descriptions lack detail on prerequisites. 'Requires CHEAPERESIM_API_TOKEN' is mentioned but not explained what happens if missing or how to obtain it.
No pagination support documented for list_plans or list_popular_destinations. If results exceed 50 items, context window risk is not mitigated.