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.
task_search
Section titled “task_search”Use this first. It returns lightweight task summaries and defaults to active work.
{ "projectId": "glia", "status": ["active", "in_progress"], "assignee": "codex", "limit": 10}task_get
Section titled “task_get”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.
task_mutate
Section titled “task_mutate”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.
