```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":