{"direction": "client_to_server", "wire": "{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"typescript-reference\",\"version\":\"0.1.0\"}},\"jsonrpc\":\"2.0\",\"id\":0}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 0, \"result\": {\"protocolVersion\": \"2025-06-18\", \"capabilities\": {\"resources\": {}, \"tools\": {}}, \"serverInfo\": {\"name\": \"mcp-contract-harness\", \"version\": \"0.1.0\"}}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"notifications/initialized\",\"jsonrpc\":\"2.0\"}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"resources/list\",\"params\":{},\"jsonrpc\":\"2.0\",\"id\":1}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 1, \"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": "{\"method\":\"resources/list\",\"params\":{\"cursor\":\"catalog-r-2\"},\"jsonrpc\":\"2.0\",\"id\":2}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 2, \"result\": {\"resources\": [{\"uri\": \"notes://station/radio\", \"name\": \"Radio check\", \"mimeType\": \"text/plain\"}]}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"tools/list\",\"params\":{},\"jsonrpc\":\"2.0\",\"id\":3}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 3, \"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": "{\"method\":\"tools/list\",\"params\":{\"cursor\":\"catalog-t-1\"},\"jsonrpc\":\"2.0\",\"id\":4}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 4, \"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": "{\"method\":\"resources/read\",\"params\":{\"uri\":\"notes://station/arrival\"},\"jsonrpc\":\"2.0\",\"id\":5}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 5, \"result\": {\"contents\": [{\"uri\": \"notes://station/arrival\", \"mimeType\": \"text/plain\", \"text\": \"Confirm station identity before docking.\"}]}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"tools/call\",\"params\":{\"name\":\"search_notes\",\"arguments\":{\"query\":\"battery\"}},\"jsonrpc\":\"2.0\",\"id\":6}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 6, \"result\": {\"content\": [{\"type\": \"text\", \"text\": \"[\\\"notes://station/power\\\"]\"}], \"isError\": false}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"tools/call\",\"params\":{\"name\":\"search_notes\",\"arguments\":{\"query\":\"\"}},\"jsonrpc\":\"2.0\",\"id\":7}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 7, \"result\": {\"content\": [{\"type\": \"text\", \"text\": \"Expected a query of 1 to 200 characters\"}], \"isError\": true}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"resources/list\",\"params\":{\"cursor\":\"bad\"},\"jsonrpc\":\"2.0\",\"id\":8}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 8, \"error\": {\"code\": -32602, \"message\": \"Invalid cursor\"}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"tools/call\",\"params\":{\"name\":\"read_note\",\"arguments\":{\"uri\":\"notes://station/power\",\"delay_ms\":400}},\"jsonrpc\":\"2.0\",\"id\":9}\n"} {"direction": "client_to_server", "wire": "{\"jsonrpc\":\"2.0\",\"method\":\"notifications/cancelled\",\"params\":{\"requestId\":9,\"reason\":\"AbortError: This operation was aborted\"}}\n"} {"direction": "client_to_server", "wire": "{\"method\":\"ping\",\"jsonrpc\":\"2.0\",\"id\":10}\n"} {"direction": "server_to_client", "wire": "{\"jsonrpc\": \"2.0\", \"id\": 10, \"result\": {}}\n"}