What it does
Propose *how* you intend to tackle a task before doing the work, and wait for a human to approve it. Posts your plan (markdown) as a comment and sets status to plan_proposed, which drops the task out of your ready queue (list_my_tasks) until a human approves (→ back to in_progress, with plan_approved_at stamped as your go-ahead) or rejects (→ back to not_started, with feedback to re-plan) it in the app. Use this for substantial or ambiguous work where the human should sign off on the approach before you spend effort — the pre-execution counterpart to propose_completion. Pass steps to materialize the plan as real subtasks right away (same mechanism as decompose_task) instead of leaving it as prose only a human has to manually turn into tasks later — render_plan and the app both read these subtasks, so this is what makes the checklist/progress view work. A step's assignee defaults to unset (nobody's queue) even if you write "I'll do this" in the plan text — set assignee:"claude" explicitly on the steps you intend to execute yourself, otherwise get_task/list_my_tasks won't know they're yours.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | |
plan | string | Required | The plan (markdown) — the approach, steps, and anything you need the human to confirm |
steps | object[] | Optional | Optional concrete action steps — created as real subtasks under this task immediately, so the human can review the actual breakdown (not just prose) before approving.
|
steps[].title | string | Required |
|
steps[].assignee | string | Optional | Set to claude if you'll execute this step yourself; omit for a step that's on the human. Allowed values claude |
Annotations
The hints the server sends with this tool. A host reads them to decide whether to ask you before a call.
- Read-only
readOnlyHint: false - Changes data in your Done account.
- Destructive
destructiveHint: false - Only adds or reads; nothing already there is removed or overwritten.
- Idempotent
idempotentHint: false - Each call can add something new, such as a comment, a run or a task.
- Open world
openWorldHint: false - Touches only your own Done account.
Which tokens can call it
A connection made with OAuth has full access. A token from Settings → Agent access → Extra MCP tokens can be narrowed, and a narrowed token never sees beyond its project or workspace.
- Full accessAllowed
- Read-only tokenRefused
- Single-project tokenRefused
- Single-workspace tokenAllowed
Try it
With Done connected, ask your assistant something like:
“Before you start the migration, propose a plan and wait for my go-ahead.”
Connect Done to your assistant
One MCP endpoint per account, over OAuth or a token. Step-by-step setup for each client: