JSON-RPC method
initialize
Negotiate the protocol version and read the server capabilities.
Opens a conversation: the server answers with the negotiated protocol version, its identity, its capabilities and the instructions text your client adds to the model's context. Support: supported. Each request stands alone, so tools/list and tools/call also work without a prior initialize.
Params
| Param | Type | Required | Description |
|---|---|---|---|
protocolVersion | string | yes | The revision your client speaks. 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 and 2024-10-07 are answered with that version; anything else gets 2025-11-25 |
capabilities | object | yes | Your client capabilities; {} is fine |
clientInfo | object | yes | { "name", "version" } of your client |
Result
| Field | Value |
|---|---|
protocolVersion | The negotiated version |
serverInfo | { "name": "plungeai.com", "version": "2.5.1" }; the version moves with deploys |
capabilities | logging: {}, resources: {}, prompts: {}, tools: { listChanged: true }; the stateless server never sends list_changed |
instructions | The server-level usage guide for the model |
Example
curl -s https://mcp.plungeai.com/v1 \
-H "Authorization: Bearer $PLUNGE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2025-11-25","capabilities":{"logging":{},"resources":{},"prompts":{},"tools":{"listChanged":true}},"serverInfo":{"name":"plungeai.com","version":"2.5.1"},"instructions":"…"}}The response above is abridged: the long instructions string is shortened to ….
Errors
Protocol errors mean the request never reached a tool; the body is {"jsonrpc":"2.0","error":{"code":…,"message":"…"},"id":…}.
| HTTP | Code | When |
|---|---|---|
| 200 | -32602 | Invalid params: <fields> for malformed params, for example a numeric protocolVersion and no clientInfo |
| 400 | -32600 | A batch that holds initialize together with other messages |
| 401 | -32001 | No key, or a wrong, revoked or expired key, or a bearer that does not start with ozk_ |
The full table is on the MCP Reference overview.
notifications/initialized
After initialize your client sends notifications/initialized. It has no id, so the server answers 202 Accepted with an empty body.
curl -s -o /dev/null -w '%{http_code}\n' https://mcp.plungeai.com/v1 \
-H "Authorization: Bearer $PLUNGE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'