JSON-RPC method
tools/call
Call one tool; the answer streams as SSE.
Runs one tool. Support: supported. The answer is a server-sent-event stream: each frame is event: message plus one data: line, progress notifications come first, and the last frame is the JSON-RPC response.
Params
| Param | Type | Required | Description |
|---|---|---|---|
name | string | yes | The tool name, for example plungeai_whoami |
arguments | object | yes | The tool's arguments; always include user_request, the user's own words |
_meta.progressToken | string or number | no | When set, progress arrives as notifications/progress; without it, as notifications/message at level info |
Result
| Field | Value |
|---|---|
content[] | [{ "type": "text", "text": "…" }]: Markdown by default, JSON text with format: "json" |
structuredContent | The same answer as an object on tools with an output schema, or with format: "json" |
isError | true only for an error outcome |
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":3,"method":"tools/call","params":{"name":"plungeai_whoami","arguments":{"user_request":"who am I"}}}'event: message
data: {"result":{"content":[{"type":"text","text":"# Who am I\n…"}]},"jsonrpc":"2.0","id":3}The response above is abridged: the tool's Markdown text is shortened to ….
Four tools accept mode: "async" and answer at once with an execution id; poll plungeai_get_workflow_status, then read the output with plungeai_get_result. A pre-screen answer (unknown or fenced tool, bad arguments) and every edge error come back as plain JSON, so check Content-Type before parsing.
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 | Tool not found: <name>, or Tool not permitted for this key: <name> for a fenced key |
| 401 | -32001 | No key, or a wrong, revoked or expired key, or a bearer that does not start with ozk_ |
| 429 | -32000 | Rate limit reached (counted on tools/call only); Retry-After and error.data.retryAfter give the seconds |
The full table is on the MCP Reference overview.