JSON-RPC 2.0 endpoint (all agent operations dispatch here)
Every write or read operation on tasks, messages, and contexts uses this endpoint. The method field in the body selects the operation. See the Error catalog in the top-level description for every possible error.code.
Accepted methods: message/send, message/stream (experimental), tasks/get, tasks/list, tasks/cancel, tasks/feedback, contexts/list, contexts/clear.
Casing tolerance: the server accepts both camelCase (taskId) and snake_case (task_id) in params — pick one and stick with it per-call. Responses are always snake_case for legacy consistency (see bugs/known-issues.md#wire-field-casing-is-mixed).
Size limit: request bodies over 10 MB return 413 Payload Too Large at the ASGI layer (does not use the JSON-RPC error envelope).
Idempotency: message/send is NOT idempotent — a repeat call creates a new task. If you need idempotency, have your client generate a stable messageId and use contexts/list
- tasks/list to check whether you've already sent it.
Request body
Example request
{
"params": {
"configuration": {
"acceptedOutputModes": [
"application/json",
"text/markdown"
]
}
}
}Response
Successful JSON-RPC response. result contains the typed output per method — see components/schemas/*Result.