{"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"mcp\",\"version\":\"0.1.0\"}}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"protocolVersion\": \"2025-06-18\", \"capabilities\": {\"resources\": {}, \"tools\": {}}, \"serverInfo\": {\"name\": \"mcp-contract-harness\", \"version\": \"0.1.0\"}}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"resources/list\"}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 2, \"result\": {\"resources\": [{\"uri\": \"notes://station/arrival\", \"name\": \"Arrival checklist\", \"mimeType\": \"text/plain\"}, {\"uri\": \"notes://station/power\", \"name\": \"Power reserve\", \"mimeType\": \"text/plain\"}], \"nextCursor\": \"catalog-r-2\"}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"resources/list\",\"params\":{\"cursor\":\"catalog-r-2\"}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 3, \"result\": {\"resources\": [{\"uri\": \"notes://station/radio\", \"name\": \"Radio check\", \"mimeType\": \"text/plain\"}]}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":4,\"method\":\"tools/list\"}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 4, \"result\": {\"tools\": [{\"name\": \"search_notes\", \"description\": \"Search fictional station notes without side effects.\", \"inputSchema\": {\"type\": \"object\", \"properties\": {\"query\": {\"type\": \"string\", \"minLength\": 1, \"maxLength\": 200}}, \"required\": [\"query\"], \"additionalProperties\": false}, \"annotations\": {\"readOnlyHint\": true, \"openWorldHint\": false}}], \"nextCursor\": \"catalog-t-1\"}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":5,\"method\":\"tools/list\",\"params\":{\"cursor\":\"catalog-t-1\"}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 5, \"result\": {\"tools\": [{\"name\": \"read_note\", \"description\": \"Read a note with an optional bounded cancellation-test delay.\", \"inputSchema\": {\"type\": \"object\", \"properties\": {\"uri\": {\"type\": \"string\"}, \"delay_ms\": {\"type\": \"integer\", \"minimum\": 0, \"maximum\": 2000}}, \"required\": [\"uri\"], \"additionalProperties\": false}, \"annotations\": {\"readOnlyHint\": true, \"openWorldHint\": false}}]}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":6,\"method\":\"resources/read\",\"params\":{\"uri\":\"notes://station/arrival\"}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 6, \"result\": {\"contents\": [{\"uri\": \"notes://station/arrival\", \"mimeType\": \"text/plain\", \"text\": \"Confirm station identity before docking.\"}]}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":7,\"method\":\"tools/call\",\"params\":{\"name\":\"search_notes\",\"arguments\":{\"query\":\"battery\"}}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 7, \"result\": {\"content\": [{\"type\": \"text\", \"text\": \"[\\\"notes://station/power\\\"]\"}], \"isError\": false}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":8,\"method\":\"tools/call\",\"params\":{\"name\":\"search_notes\",\"arguments\":{\"query\":\"\"}}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 8, \"result\": {\"content\": [{\"type\": \"text\", \"text\": \"Expected a query of 1 to 200 characters\"}], \"isError\": true}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":9,\"method\":\"resources/list\",\"params\":{\"cursor\":\"bad\"}}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 9, \"error\": {\"code\": -32602, \"message\": \"Invalid cursor\"}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":10,\"method\":\"tools/call\",\"params\":{\"name\":\"read_note\",\"arguments\":{\"uri\":\"notes://station/power\",\"delay_ms\":400}}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"method\":\"notifications/cancelled\",\"params\":{\"requestId\":10,\"reason\":\"caller cancelled\"}}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"id\":11,\"method\":\"ping\"}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 11, \"result\": {}}\n"}