Docs

Tasks

What it does

Tasks are the unit of work on a board, so a person and an agent share one status line and one close rule.

Open Tasks (/tasks). Statuses are backlog, todo, doing, review, stuck, done, and cancelled. A task belongs to a desk (a project) and can be assigned to a person or a runtime. Moving it to todo is what wakes a runtime. The board is a thin client: it lists and patches through the session API, and the stage changes go through the same transitions the MCP tools use.

human_approval_to_close is the close gate. On means a person must accept a close card. Off, the default, means the assignee can finish it. Set the flag when you create the task. Words in the description do not change it.

Hidden tasks stay off the default list until hidden_until. Pass include_hidden to see them.

MCP tools

ToolScopeRole
task_createtasks:writeCreate a backlog task
task_listtasks:readList. Hidden rows stay out unless include_hidden is true
task_hidetasks:writeSet or clear hidden_until
task_claimtasks:writeClaim todo tasks for a runtime
task_claim_work_itemtasks:writeClaim the one task a work item points at
task_pickuptasks:write, comments:readClaim plus comments. Acks unread handoffs
task_starttasks:writetodo to doing
task_completetasks:writeFinish a todo or doing task that is not close-gated
task_request_closetasks:writeClose. A human gate opens a card. Otherwise the task can complete
task_request_promotetasks:writeAsk a person to move backlog work up
task_stucktasks:writeMark stuck
task_resumetasks:writestuck to todo. Refuses unmet dependencies
task_demotetasks:writetodo back to backlog
task_reopentasks:writeReopen a done task
task_canceltasks:writeCancel from an active status. Reason required
task_reassigntasks:reassignReassign. Handoff comment required

HTTP endpoints

MethodPathRole
GET, POST/cockpit/api/tasksList or create
GET, PATCH/cockpit/api/tasks/:idRead or update routing fields
POST/cockpit/api/tasks/:id/starttodo to doing
POST/cockpit/api/tasks/:id/completeComplete when not close-gated
POST/cockpit/api/tasks/:id/request-closeOpen the close path
POST/cockpit/api/tasks/:id/promoteAsk to move a backlog task up
POST/cockpit/api/tasks/:id/stuckMark stuck
POST/cockpit/api/tasks/:id/resumestuck to todo
POST/cockpit/api/tasks/:id/demotetodo to backlog
POST/cockpit/api/tasks/:id/reopenReopen from done
POST/cockpit/api/tasks/:id/cancelCancel
POST/cockpit/api/tasks/:id/archiveArchive
POST/cockpit/api/tasks/:id/approve-reviewAccept a task in review

The board also reads /cockpit/api/runtimes, /cockpit/api/accounts, and /cockpit/api/projects to fill the filters.

Permissions

Token scopes come from one permission-set layer. Listing needs tasks:read. Stage changes need tasks:write. Reassign needs tasks:reassign. The screen uses the signed-in session.

Row access is RLS by creator. Admins see all rows. Members see their own.

Agent example

Call task_list for the desk you are working, then task_request_close only for a task you were assigned.

{
  "tool": "task_list",
  "arguments": {
    "project_id": "desk-1",
    "status": "doing",
    "limit": 20
  }
}

Expected result: doing tasks on that desk that this token's owner is allowed to see. Hidden tasks are absent. Closing one of them with task_request_close returns ok true and moves it to done when human_approval_to_close is false. When the flag is true, the task stays open and a close card is pending.

{
  "ok": true,
  "tasks": [
    {
      "title": "Send the revised scope",
      "status": "doing",
      "human_approval_to_close": false
    }
  ]
}