Search prepaid travel eSIM data plans for 200+ countries with live prices and a buy link.
Full LLM thinking from the 4-phase benchmark pipeline.
{
"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"
]
}
}{
"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",
12/12 tests passed
| Test | Endpoint | Status | Latency |
|---|---|---|---|
| mcp_initialize_handshake | POST /mcp | 200 | 526ms |
| mcp_tools_list | POST /mcp | 200 | 265ms |
| search_esim_plans_happy_path | POST /mcp | 200 | 540ms |
| search_esim_plans_multi_language | POST /mcp | 200 | 460ms |
| search_esim_plans_missing_destination | POST /mcp | 200 | 240ms |
| get_plan_details_happy_path | POST /mcp | 200 | 243ms |
| get_plan_details_invalid_product_id | POST /mcp | 200 | 236ms |
| start_checkout_happy_path | POST /mcp | 200 | 239ms |
| start_checkout_missing_product_id | POST /mcp | 200 | 238ms |
| unknown_tool_method | POST /mcp | 200 | 245ms |
{"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."]}}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.
Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.
<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>
See operational metrics, LLM evaluations, agent readiness, and more.
Open in Dashboard