What it does
Park a question for the human and MOVE ON — the one way to involve them without ending your run. Use this the moment you hit something you shouldn't decide alone: spending money, anything outward-facing (an email, a post, a reply to a customer), anything irreversible, or a genuine fork where guessing wrong is expensive. Everywhere else, decide it yourself and say what you decided in your run summary — an ask for every ambiguity turns this into the comment feed it replaced. recommendation is REQUIRED: say what you'd do absent an answer, so answering is one keystroke rather than an essay. Give 2-4 options when the answer is a choice; omit them for free text. blocking:true (the default) parks the task as needs_input and drops it out of your queue — go work something else, and read the answer next run via list_open_decisions or get_task. blocking:false leaves the task in your queue so you keep working and pick the answer up later. Only ONE open blocking question per task. This is NOT an approval and never completes anything.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string | Required | The task id |
question | string | Required | The question, in one sentence |
kind | string | Optional | question = a fork; permission = may I do this outward-facing/irreversible thing; input = a value only they have Allowed values questionpermissioninput |
context | string | Optional | Why you're asking and what hangs on it — what you already ruled out, and the cost of each way |
options | string[] | Optional | 2-4 concrete choices. Omit for a free-text answer. |
recommendation | string | Required | Required, and the most useful field here — a bare label is not enough. Name the option you'd take AND why, in a sentence or two: what tipped it, and what the cost of the other way is. "Reuse existing ID — a new one re-triggers install review for every connected workspace, and the payload flag is backward compatible." beats "Reuse existing ID". Lead with the option's exact wording so the UI can highlight it. |
blocking | boolean | Optional | True (default) parks the task until answered; false keeps working |
agent | string | Optional | Which agent is asking |
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:
“If you need me to choose between the two vendors, ask me and carry on with other work.”
Connect Done to your assistant
One MCP endpoint per account, over OAuth or a token. Step-by-step setup for each client: