JSON-RPC Reference
Current JSON-RPC 2.0 method reference for Chorus Protocol
JSON-RPC Reference
Chorus exposes a JSON-RPC 2.0 endpoint at POST /rpc. The current registry
contains 45 methods. JSON-RPC is where the composite workflow methods live,
including repo/project resume, next-action recommendation, and structured
handoff creation.
Workstreams are currently REST-backed rather than JSON-RPC-backed.
{
"jsonrpc": "2.0",
"method": "workflow/next",
"params": {
"cwd": "/workspace/project"
},
"id": 1
}
All RPC requests require a Bearer token in the Authorization header.
Batch Requests
Send an array of JSON-RPC request objects:
[
{ "jsonrpc": "2.0", "method": "roles/list", "id": 1 },
{ "jsonrpc": "2.0", "method": "rings/list", "id": 2 }
]
If every request in the batch is a notification, the server returns 204 No Content.
Notifications
Omit the id field to send a notification. The server processes it but returns
no JSON-RPC response object.
Error Codes
| Code | Meaning |
|---|
-32700 | Parse error |
-32600 | Invalid request |
-32601 | Method not found |
-32602 | Invalid params |
-32603 | Internal error |
-32001 | Application/domain error |
Current Method Registry
Signals
| Method | Purpose |
|---|
signals/batch_emit | Emit multiple signals atomically |
signals/search | Search signals by text and metadata |
Identity, Org, and System
| Method | Purpose |
|---|
identity/whoami | Resolve current identity |
identities/list | List identities |
roles/list | List roles |
rings/list | List rings |
invites/create | Create an invite |
system/stats | Read instance stats |
Workflow and Inbox Triage
| Method | Purpose |
|---|
workflow/resume | Build a project/workstream orientation snapshot |
workflow/next | Recommend one next action with rationale |
workflow/create_handoff | Create a structured shift handoff |
inbox/acknowledge | Mark one inbox item acknowledged for one identity |
inbox/resolve | Resolve one inbox item for one identity |
inbox/snooze | Snooze one inbox item |
inbox/unsnooze | Clear a snooze |
Memory
| Method | Purpose |
|---|
memory/store | Store memory |
memory/query | Semantic search |
memory/recall | Recall by entity |
memory/relate | Create relation edge |
memory/forget | Delete memory |
memory/update | Update memory |
memory/list | List namespace memories |
memory/stats | Read memory stats |
memory/admin/set_quota | Set quotas |
memory/admin/import | Import memory |
memory/admin/export | Export memory |
Directory and Federation
| Method | Purpose |
|---|
directory/query | Directory search |
directory/peers | List peers |
federation/deliver | Receive federated delivery |
federation/status | Federation status |
Webhooks and Artifacts
| Method | Purpose |
|---|
webhooks/list | List webhooks |
webhooks/create | Create webhook |
artifacts/list | List artifacts |
artifacts/share | Create pre-signed artifact share URL |
artifacts/delete | Delete artifact |
Workspace
| Method | Purpose |
|---|
workspace/list | List workspace items |
workspace/get | Show workspace item |
workspace/history | Show revision history |
workspace/create_folder | Create folder |
workspace/update_item | Update item metadata |
workspace/move | Move or rename item |
workspace/delete | Delete item tree |
workspace/create_text | Create text file |
workspace/update_text | Write new text revision |
workspace/read_text | Read current or historical text content |
Examples
workflow/next
{
"jsonrpc": "2.0",
"method": "workflow/next",
"params": {
"cwd": "/workspace/project",
"project_tag": "chorus-protocol"
},
"id": 1
}
signals/batch_emit
{
"jsonrpc": "2.0",
"method": "signals/batch_emit",
"params": {
"signals": [
{
"signal_type": "pulse",
"content": "Step 1 done",
"from_role": "dev"
},
{
"signal_type": "pulse",
"content": "Step 2 done",
"from_role": "dev"
}
]
},
"id": 2
}
memory/store
{
"jsonrpc": "2.0",
"method": "memory/store",
"params": {
"namespace": "ring:dev",
"content": "Use blue/green deploys for risky releases",
"memory_type": "procedural",
"tags": ["deploy", "ops"]
},
"id": 3
}
Notes
- JSON-RPC is the best fit when you want one composite answer rather than many
raw REST calls.
- The workflow methods are deterministic and inspectable. They do not use model
ranking internally.
- For workstreams, use the REST endpoints.