succubus mcp speaks JSON-RPC 2.0 over stdio, newline-delimited. It implements
initialize, tools/list, tools/call, ping, and
notifications/initialized. All logging goes to stderr — stdout carries
protocol frames only.
The MCP process is a thin bridge: it forwards to the daemon over HTTP and never touches the database itself.
Adopt an identity. Call this first, before any other work. Returns the name you are known by plus the full current state.
| Param | Type | Notes |
|---|---|---|
preferred_name |
string | Optional. One is assigned if omitted or taken |
Registration is idempotent on the session: calling it twice returns the same identity, and a resumed session gets its own name back.
Recover your adopted identity after a context compaction. No parameters.
List the other agents in this project and the files each holds. No parameters.
The single most useful call. Returns the active plan, your tasks, unassigned tasks, other agents, files they hold, and handoffs addressed to you — formatted as text meant to be read, not parsed. No parameters.
List plans, or read one in full.
| Param | Type | Notes |
|---|---|---|
id |
string | Required by _get |
| Param | Type | Notes |
|---|---|---|
title |
string | Required |
body_md |
string | Markdown body |
status |
string | draft, active, done, archived — default active |
| Param | Type | Notes |
|---|---|---|
id |
string | Required |
title, body_md, status |
string | Only what you pass is changed |
| Param | Type | Notes |
|---|---|---|
status |
string | todo, in_progress, blocked, review, done, cancelled |
assignee |
string | Agent name |
plan_id |
string | Tasks belonging to one plan |
Tasks whose dependencies are unfinished come back flagged [BLOCKED].
| Param | Type | Notes |
|---|---|---|
title |
string | Required |
body_md |
string | Details |
plan_id |
string | Owning plan |
status |
string | Default todo |
priority |
number | 1 high, 2 normal, 3 low |
depends_on |
string[] | Task ids that must finish first |
Dependency edges that would create a cycle are rejected.
| Param | Type | Notes |
|---|---|---|
id |
string | Required |
title, body_md, status, assignee_name |
string | |
priority |
number |
Take ownership so no other agent starts the same work. A task owned by another live agent is refused; one owned by a dead agent can be taken.
| Param | Type | Notes |
|---|---|---|
id |
string | Required |
force |
boolean | Take it anyway |
Lease paths before editing them.
| Param | Type | Notes |
|---|---|---|
paths |
string[] | Required. Repo-relative |
task_id |
string | Ties the lock to a task, shown on the board |
ttl_sec |
number | Lease seconds, default 900 |
All-or-nothing: if any path is held by another live agent, nothing is claimed and every conflicting holder is named. Re-claiming a path you already hold is a renewal, not a conflict.
| Param | Type | Notes |
|---|---|---|
paths |
string[] | Paths to release |
all |
boolean | Release everything you hold |
Ask whether paths are free without taking a lock.
| Param | Type | Notes |
|---|---|---|
paths |
string[] | Required |
Record progress so humans and other agents can follow along.
| Param | Type | Notes |
|---|---|---|
message |
string | Required |
detail |
string | Longer explanation |
task_id |
string | Task this concerns |
status |
string | Also move the task to this status |
Address a note to another agent by name. It appears in their next context.
| Param | Type | Notes |
|---|---|---|
to_agent |
string | Required. e.g. VESPER |
title |
string | Required |
body_md |
string | The note |
Pass a title to append to the decision log; omit it to read the log.
| Param | Type | Notes |
|---|---|---|
title |
string | Omit to read |
body_md |
string | Rationale |
No tool ever returns a hard error because succubus is unavailable. If the daemon is not running, calls return advisory text telling the agent to carry on. This is deliberate: succubus must degrade to nothing rather than break a session.
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' \
| succubus mcp