Skip to content

MCP tool surface

StateLode keeps the tool surface small on purpose. Every extra tool adds choice, and LLMs get worse when the correct choice is hidden inside a wide menu.

Use this first. It returns lightweight task summaries and defaults to active work.

{
"projectId": "glia",
"status": ["active", "in_progress"],
"assignee": "codex",
"limit": 10
}

Use this after task_search identifies a task you need to work on. It returns the full body, acceptance criteria, notes, blocker, dependencies, and updatedAt.

updatedAt is required for later mutations.

Use this for creates, updates, moves, comments, and blocking. Every mutation except create and comment must include the last updatedAt you saw.

{
"action": "move",
"payload": {
"id": "task_id",
"status": "in_progress",
"updatedAt": "2026-05-28T21:15:33.860Z",
"by": "codex"
}
}

If another agent won the race, StateLode returns STALE_WRITE with the fresh task inside the error. Retry with that fresh row. Do not guess.

Task lifecycle: a horizontal task-state chain with a cyan active signal and a dim retry branch for stale-write recovery.