71
/100
prowl
Benchmarked Sep 14, 2026

IbiPoint eSIM Catalog Verified

Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.

ecommerce api_benchmark Streaming public
Benchmark Your API

Score Breakdown

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

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "mcp_server",
  "base_url": "https://ibipoint.com/esimshop/wp-json/ibipoint",
  "auth_method": "none",
  "auth_config": {},
  "endpoints": [
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "MCP initialize handshake; returns Mcp-Session-Id header used by all subsequent requests",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": false}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Send initialized notification after handshake (JSON-RPC notification, no response body)",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "method": {"type": "string", "required": true}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "List available MCP tools (search_esim_plans, get_plan_details, start_checkout)",
      "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 prepaid travel eSIM data plans by destination with live prices and buy link (primary call)",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true},
        "params.name": {"type": "string", "required": true},
        "params.arguments.destination": {"type": "string", "required": true},
        "params.arguments.language": {"type": "string", "required": false}
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Get plan details (data allowance, validity, link) for a given product_id",
      "params": {
        "jsonrpc": {"type": "string", "required": true},
        "id": {"type": "integer", "required": true},
        "method": {"type": "string", "required": true},
        "params": {"type": "object", "required": true},
        "params.name": {"type": "string", "required": true},
        "params.arguments.product_id": {"type": "string", "required": true},
        "params.arguments.language": {"type": "string", "required": false}
      },
      "response_format": "json",
      "is_primary": false
    },
    {
      "path": "/mcp",
      "method": "POST",
      "purpose": "Start a checkout for a product_id and return a buy_url (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},
        "params.name": {"type": "string", "required": true},
        "params.arguments.product_id": {"type": "string", "required": true},
        "params.arguments.language": {"type": "string", "required": false}
      },
      "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",
    "travel_esim_catalog",
    "live_pricing",
    "plan_details",
    "checkout_link_generation",
    "multi_language",
    "multi_currency",
    "200_plus_countries"
  ],
  "agent_readiness": {
    "supports_x402": false,
    "supports_streaming": true,
    "has_sandbox": false,
    "sdks": [],
    "agent_auth_methods": [
      "public"
    ]
  }
}
Plan
{
  "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 result with serverInfo and capabilities; response includes Mcp-Session-Id header for subsequent calls",
      "metrics": ["latency", "status_code", "header_presence"],
      "validation": {
        "field": "result",
        "type": "object"
      }
    },
    {
      "name": "mcp_tools_list",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/list"
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns array of available 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_path",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 10,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {
            "destination": "Japan",
            "language": "en"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns JSON-RPC result containing list of eSIM plans for Japan with live prices and buy link",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "result",
        "type": "object"
      }
    },
    {
      "name": "search_esim_plans_multi_language",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 11,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {
            "destination": "France",
            "language": "fr"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns plans for France; content should be localized to French if multi_language capability is honored",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "result",
        "type": "object"
      }
    },
    {
      "name": "search_esim_plans_missing_destination",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 12,
        "method": "tools/call",
        "params": {
          "name": "search_esim_plans",
          "arguments": {}
        }
      },
      "expected_status": 400,
      "intent": "validation",
      "expected_behavior": "API correctly rejects the call with a JSON-RPC error (invalid params) because required argument 'destination' is missing",
      "metrics": ["latency", "status_code", "error_structure"],
      "validation": {
        "field": "error",
        "type": "object"
      }
    },
    {
      "name": "get_plan_details_happy_path",
      "endpoint": "/mcp",
      "method": "POST",
      "headers": {
        "Content-Type": "application/json",
        "Accept": "application/json, text/event-stream"
      },
      "payload": {
        "jsonrpc": "2.0",
        "id": 20,
        "method": "tools/call",
        "params": {
          "name": "get_plan_details",
          "arguments": {
            "product_id": "1",
            "language": "en"
          }
        }
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns plan detail for the requested product_id including data allowance, validity, and link",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {
        "field": "result",
        "type": "object"
      }
    },
    {
      "name": "get_plan_details_invalid_product_id",
      "endpoint": "/mcp",
     
Execute

12/12 tests passed

TestEndpointStatusLatency
mcp_initialize_handshakePOST /mcp200526ms
mcp_tools_listPOST /mcp200265ms
search_esim_plans_happy_pathPOST /mcp200540ms
search_esim_plans_multi_languagePOST /mcp200460ms
search_esim_plans_missing_destinationPOST /mcp200240ms
get_plan_details_happy_pathPOST /mcp200243ms
get_plan_details_invalid_product_idPOST /mcp200236ms
start_checkout_happy_pathPOST /mcp200239ms
start_checkout_missing_product_idPOST /mcp200238ms
unknown_tool_methodPOST /mcp200245ms
Interpret
{"model": "deepseek", "data": {"overall": 62, "dimensions": {"token_efficiency": 7.0, "first_try_success": 6.0, "response_parseability": 8.0, "error_clarity": 6.0, "doc_quality": 7.0, "auth_simplicity": 10.0, "latency": 8.0, "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": "high", "detail": "Validation errors are returned as HTTP 200 with a nested JSON-RPC result containing {\"code\":\"error\",...} instead of a 4xx status. This violates JSON-RPC/HTTP expectations and makes error detection require deep payload inspection rather than status code checking.", "endpoint": "/mcp"}, {"severity": "high", "detail": "start_checkout with a missing product_id returned an 'unavailable' message rather than a proper validation error, and get_plan_details returned 'Plan not found' for the happy-path test \u2014 suggests the planner's product IDs did not resolve. Responses don't clearly distinguish validation vs. not-found cases.", "endpoint": "/mcp"}, {"severity": "medium", "detail": "malformed JSON body was parsed into 'Unknown tool: ' rather than a structured JSON-RPC parse error (-32700), masking the real malformed-input problem.", "endpoint": "/mcp"}, {"severity": "medium", "detail": "A bogus/nonexistent session ID still returns a valid tools/list response (HTTP 200) rather than a 404 session-not-found, so session handling is not enforced. May be a security/isolation concern.", "endpoint": "/mcp"}, {"severity": "low", "detail": "Success responses nest a JSON string inside result.content[].text, requiring the agent to double-parse (JSON-RPC wrapper \u2192 text field \u2192 JSON string). Adds token overhead.", "endpoint": "/mcp"}], "recommendations": ["Return proper HTTP status codes for protocol-level failures (400 for malformed JSON-RPC, 404 for invalid session) instead of always returning 200.", "Distinguish validation errors from not-found/availability errors with separate, typed error codes so agents can react correctly.", "Emit standard JSON-RPC error codes (-32700 parse error, -32601 method not found, -32602 invalid params) consistently for malformed and unknown-method inputs.", "Publish a clear error-code catalog and example error payloads so agents know what to expect without guessing.", "Consider returning structured content as a JSON object rather than a stringified JSON blob inside content[].text to reduce double-parsing and token cost.", "Enforce session validation so stale/bogus session IDs return an explicit error rather than a default tools list."]}}

Agent Readiness

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

Vendor Profile

Prepaid travel eSIM data plans for 200+ countries, searchable by destination and returned with live prices, plan specs and a direct buy link. Two plan shapes: Data Pack, a fixed amount of data over a validity window, and Unlimited Flex, a fixed price with a daily high-speed allowance that continues at reduced speed. No account, no app — the eSIM is emailed immediately after payment. Answers in 40 languages with the price already in the customer's currency.

Features

200+ countries and regionsLive prices, no cached price listsData Pack and Unlimited Flex plan typesIbiPoint Data Rating sorts results by value, not by marginBuy link in 40 languages with matching currencyCard, Apple Pay and Google Pay at checkouteSIM delivered by email, no account requiredTop-up supported on eligible plansTransparency page per plan

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/ibipoint-esim-catalog">
  <img src="https://prowl.world/badge/ibipoint-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