76
/100
prowl
Benchmarked Sep 14, 2026

e-eSIM Catalog Verified

Search travel eSIM data plans worldwide with live prices, plan details and a buy link.

ecommerce api_benchmark notloginpublic
Benchmark Your API

Score Breakdown

Auth Simplicity 9/10
Parseability 9/10
Latency 8/10
Consistency 8/10
First-Try Success 8/10
Documentation 7/10
Token Efficiency 7/10
Error Clarity 6/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "mcp_server",
  "base_url": "https://e-esim.com/wp-json/e-esim",
  "auth_method": "none",
  "auth_config": {},
  "endpoints": [
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "MCP handshake (initialize). Must be the first call; response carries Mcp-Session-Id header.",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "MCP handshake completion notification (notifications/initialized). No response body expected.",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "method": {"type": "string", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "List available tools (tools/list).",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Search eSIM plans for a destination with live prices and buy links (search_esim_plans).",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true}
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Get details for a specific eSIM plan (get_plan_details).",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Start checkout and return a buy link (start_checkout). Does not take payment or create an order.",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    }
  ],
  "pricing_model": {
    "type": "unknown",
    "details": {},
    "free_tier": null,
    "paid_tiers": []
  },
  "rate_limits": {
    "rpm": 60,
    "tpm": null,
    "daily": null,
    "concurrent": null
  },
  "capabilities": [
    "esim_plan_search",
    "plan_details",
    "checkout_link_generation",
    "multi_language",
    "multi_currency",
    "destination_search"
  ],
  "agent_readiness": {
    "supports_x402": false,
    "supports_streaming": false,
    "has_sandbox": false,
    "sdks": [],
    "agent_auth_methods": ["public", "notlogin"]
  }
}
Plan
```json
{
  "tests": [
    {
      "name": "mcp_initialize_handshake",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "initialize",
        "params": {
          "protocolVersion": "2024-11-05",
          "capabilities": {},
          "clientInfo": {
            "name": "prowl-benchmark",
            "version": "1.0.0"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns JSON-RPC initialize result with serverInfo, capabilities, and Mcp-Session-Id header for subsequent calls",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "result.serverInfo", "type": "object", "min_length": 1}
    },
    {
      "name": "tools_list",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "Mcp-Session-Id": "REQUIRES_PRIOR_INIT_SESSION"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/list",
        "params": {}
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns list of MCP tools including search_esim_plans, get_plan_details, start_checkout",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "result.tools", "type": "array", "min_length": 1}
    },
    {
      "name": "search_esim_plans_happy",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "Mcp-Session-Id": "REQUIRES_PRIOR_INIT_SESSION"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 3,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {
            "destination": "Japan"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns eSIM plans for Japan with names, data allowances, prices and buy links",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "result.content", "type": "array", "min_length": 1}
    },
    {
      "name": "search_esim_plans_multi_currency",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "Mcp-Session-Id": "REQUIRES_PRIOR_INIT_SESSION"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 4,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {
            "destination": "France",
            "currency": "EUR"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns plans with EUR-denominated prices honoring currency parameter",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "result.content", "type": "array", "min_length": 1}
    },
    {
      "name": "search_esim_plans_validation_missing_destination",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "Mcp-Session-Id": "REQUIRES_PRIOR_INIT_SESSION"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 5,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {}
        }
      },
      "expected_status": 200,
      "intent": "validation",
      "expected_behavior": "MCP returns a JSON-RPC error object (isError true) indicating missing required 'destination' argument",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "error", "type": "object", "min_length": 1}
    },
    {
      "name": "unknown_tool_validation",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream",
        "Mcp-Session-Id": "REQUIRES_PRIOR_INIT_SESSION"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 6,
        "method": "tools/call",
        "params": {
          "name": "nonexistent_tool_xyz",
          "arguments": {}
        }
      },
      "expected_status": 200,
      "intent": "validation",
      "expected_behavior": "Returns JSON-RPC error -32601 (method not found) or isError tool result for unknown tool",
      "metrics": ["latency", "status_code", "accuracy"],
      "validation": {"field": "error", "type": "object", "min_length": 1}
    },
    {
      "name": 
Execute

12/12 tests passed

TestEndpointStatusLatency
mcp_initialize_handshakePOST /mcp200516ms
tools_listPOST /mcp200463ms
search_esim_plans_happyPOST /mcp200397ms
search_esim_plans_multi_currencyPOST /mcp200849ms
search_esim_plans_validation_missing_destinationPOST /mcp200177ms
unknown_tool_validationPOST /mcp200176ms
malformed_jsonrpc_methodPOST /mcp200183ms
get_plan_details_happyPOST /mcp200182ms
get_plan_details_invalid_idPOST /mcp200183ms
start_checkout_happyPOST /mcp200178ms
Interpret
{"model": "deepseek", "data": {"overall": 74, "dimensions": {"token_efficiency": 7.0, "first_try_success": 7.5, "response_parseability": 9.0, "error_clarity": 6.5, "doc_quality": 7.0, "auth_simplicity": 9.0, "latency": 8.5, "consistency": 8.0}, "pricing_normalized": {"cost_per_1k_requests": null, "cost_per_1m_input_tokens": null, "cost_per_1m_output_tokens": null, "free_tier_requests": null, "estimated_monthly_cost_light": null, "estimated_monthly_cost_heavy": null}, "issues": [{"severity": "medium", "detail": "MCP tool-level errors are returned inside a 200 JSON-RPC envelope with code:\"error\"/\"unavailable\" as nested TEXT payload rather than as a structured JSON-RPC error object. The agent must parse the inner text string (double-encoded JSON) to detect failure \u2014 awkward but functional.", "endpoint": "/mcp"}, {"severity": "medium", "detail": "get_plan_details 'happy path' returned 'Plan not found or not available' \u2014 likely a non-live/placeholder product ID. Agents cannot verify happy-path purchase flow works end-to-end.", "endpoint": "/mcp"}, {"severity": "medium", "detail": "start_checkout returned code:\"unavailable\" / 'Product is not available for purchase' for all checkout attempts, including the happy path \u2014 checkout capability appears non-functional for tested inputs.", "endpoint": "/mcp"}, {"severity": "low", "detail": "Malformed JSON-RPC method returned JSON-RPC error -32601 inside a 200 status rather than an HTTP 400. This is spec-compliant for JSON-RPC-over-HTTP but diverges from the planner's expected 400.", "endpoint": "/mcp"}, {"severity": "low", "detail": "Session auth boundary test (missing Mcp-Session-Id header) still returned tools/list successfully (200) rather than 400/401 \u2014 session header is not enforced, which weakens the intended handshake ordering.", "endpoint": "/mcp"}], "recommendations": ["Document the expected flow of: initialize \u2192 notifications/initialized \u2192 tools/list \u2192 tools/call, including the Mcp-Session-Id header requirement, in an agent-facing README.", "Return tool-level failures using the JSON-RPC `error` object with proper error codes (or at least `isError:true` in the content) instead of double-encoded text strings, so agents can detect failures without parsing inner JSON.", "Provide realistic sample product IDs in documentation so agents can exercise get_plan_details and start_checkout happy paths.", "Enforce or document the Mcp-Session-Id boundary \u2014 either reject calls without a valid session, or explicitly state it is optional.", "Add example responses (search, details, checkout) to the tool schema/docs to reduce trial-and-error token cost.", "Expose structured error codes (e.g. DESTINATION_REQUIRED, PLAN_NOT_FOUND, PRODUCT_UNAVAILABLE) as machine-readable fields rather than only human strings."]}}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
notlogin, public
SDKs
None listed
MCP Support
No

Vendor Profile

Travel eSIM data plans for 158 countries and regions, searchable by destination and returned with live prices, plan specs and a direct buy link. Three plan shapes: Daily Surf, a fresh high-speed allowance every day; Trip Surf, one data pool for the whole trip; and All You Can Surf, unlimited in volume with a daily full-speed allowance followed by a still-usable reduced speed, in standard, premium and titanium grades. No account, no app — the eSIM is emailed immediately after payment.

Features

158 countries and regionsDaily Surf, Trip Surf and All You Can Surf plan typesEvery All You Can Surf grade states its daily full-speed allowance and the speed after itLive prices, no cached price listsBuy link in the customer's language with matching currencyCard, Apple Pay and Google Pay at checkouteSIM delivered by email, no account requiredPer-plan fair-use policy stated openly

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/e-esim-catalog">
  <img src="https://prowl.world/badge/e-esim-catalog.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard