Complete Task
complete_taskMark task as ready for review (in_review). A human will verify and move it to done. Pass skipReview: true to mark as done immediately (use when the human explicitly asks).
If the task is already in_review (put there by a previous complete_task call), calling this again will move it directly to done — no checklist required (already confirmed). Tasks put in review with request_review are the exception: wait for the reviewer, then resume with start_task.
Self-assessment (required): Pass selfAssessment reflecting on your session — what project knowledge was missing, what tools were confusing, what process gaps caused friction. Pass empty object {} if nothing to report. For non-trivial code work, include at least one concrete entry instead of an all-empty assessment. Also pass model and reasoningEffort when known; top-level values override nested selfAssessment metadata. You can also call review_task separately before this, but passing selfAssessment here is simpler.
Before calling:
Push all commits and open a pull request for the change — the PR is the primary deliverable
Link the PR with
link_pr, or pass it here via theprparameterCheck if project context docs need updating
Completion checklist: If the project has a completion checklist (shown in start_task response), load relevant branches with get_completion_checklist, then resolve each active item by itemId. Use status: "done" with structured proof, or status: "skipped" for not-applicable items. If the checklist uses scope dimensions, pass checklistScope with explicit appliesTo, changeKinds, and riskDomains as needed. If a task crosses surfaces or contracts, bias toward broader scope rather than narrower scope.
Pull request: Pass pr ({url, branch?, title?, state?}) if the PR is not yet linked. Commits are a secondary detail; the linked PR is what reviewers look at.
Delegations: If you delegated work to sub-agents during this session, report them via delegations ([{agent, model?, description?}]).
Commits: Pass commits array to log them at completion (convenience for final commits).
Completion receipt: Pass outcome (defaults to summary), deliveredScope (defaults to titles of done subtasks), and residualRisks to build the compact completion receipt shown by get_task. This is what future agents and reviewers see instead of re-reading the full history.
Review instructions: When sending to review (default), provide reviewInstructions — specific steps for the reviewer: what to test in UI, edge cases, areas of risk. Not a restatement of what was done. These are PUBLICLY VISIBLE on the roadmap while the item is in review, so write them for an external reader and keep credentials, internal paths, and private URLs out of them.
Review evidence: When the change scope (declared checklistScope, scope inferred from touchedPaths, and what prepare_completion recorded) matches the project policy — contract_changes → API examples (add_api_example), rendering_changes / public_output_changes → screenshots (add_screenshot), and diagrams (add_diagram) when the project requires them — the evidence must be attached first. Missing suggested evidence comes back as evidenceWarnings; missing required evidence blocks the hand-off (error code review_evidence_missing listing each missing kind and the change kinds/surfaces that need it) unless you pass evidenceNotApplicable with the reason. After a review round, only artifacts attached since the reviewer's decision count. prepare_completion reports what is missing ahead of time.
Preview: pass previewUrl when the change is running somewhere the reviewer can open (e.g. a Tailscale URL); internal only, never public.
Waiting: when the task lands in in_review, the response tells you how to wait with damper review wait <taskId> (exit 10 = needs work, 0 = approved, 2 = timed out, 1 = error) if your Damper CLI is 0.13.0 or newer (damper --version); with an older CLI, poll get_task.
Returns documentation update suggestions.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"projectId": "<projectId>",
"taskId": "<taskId>",
"summary": "<summary>"
},
"name": "complete_task"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pr | No | Pull request delivering this task, if not already linked via link_pr. Upserts by URL. | |
| model | No | Model identifier used for this task/session, e.g. claude-opus-4.8 or gpt-5.5. Overrides selfAssessment.model. | |
| taskId | Yes | ||
| commits | No | Optional: commits to log at completion | |
| outcome | No | One-line outcome for the completion receipt (defaults to `summary`). | |
| summary | Yes | Brief one-line summary of what was done, written for end users. Focus on the outcome, not the implementation. | |
| projectId | Yes | Project ID. Use list_projects to find available project IDs. | |
| previewUrl | No | Optional http(s) URL where the reviewer can open the running change, e.g. a Tailscale URL like http://laptop.tailnet.ts.net:5173. Private hosts are fine (it is never fetched by the server). INTERNAL: shown only to reviewers in the dashboard, never on public roadmaps. Pass null to clear. | |
| skipReview | No | Skip human review and mark task as done immediately (default: false, task goes to in_review) | |
| delegations | No | Sub-agent delegations that happened during this session | |
| touchedPaths | No | Repository-relative paths changed by the task. Git-aware clients should derive this list automatically when possible. | |
| confirmations | No | Completion checklist resolutions — resolve each active item by `itemId` with structured proof | |
| residualRisks | No | Known residual risks or follow-ups left after this completion, for the completion receipt. | |
| checklistScope | No | Required when the checklist uses scoped appliesTo / when / riskDomains rules | |
| deliveredScope | No | What was delivered, for the completion receipt (defaults to titles of done subtasks, else empty). | |
| selfAssessment | No | Self-review of your session. Object with optional keys: missingContext (string[]), toolIssues (string[]), processGaps (string[]), model, reasoningEffort. Reflect on what went well, what knowledge was missing, what caused friction. Pass {} if nothing to report. | |
| reasoningEffort | No | Reasoning effort used for this task/session, e.g. low, medium, high. Overrides selfAssessment.reasoningEffort. | |
| contextDisposition | No | Explicit disposition of context impact: updated, verified_current, not_applicable, or deferred. | |
| reviewInstructions | No | What the reviewer should test or verify (markdown). Recommended when sending to review (default behavior). Write specific, actionable steps: what to test in the UI, what edge cases to check, what areas might break. Not a restatement of the summary. PUBLICLY VISIBLE while the item is in review — write for an external reader and keep credentials, internal paths, and private URLs out of it. | |
| touchedPathEvidence | No | Provenance for touchedPaths. Agent-supplied evidence is accepted but labeled lower confidence. | |
| evidenceNotApplicable | No | Why review evidence the project expects for the change scope does not apply (e.g. "internal endpoint, no public contract change"). Recorded on the completion receipt and timeline. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| status | Yes | ||
| message | No | ||
| dashboardUrl | No | Full dashboard URL of the affected resource | |
| documentation | No | ||
| evidenceWarnings | No | ||
| completionReceipt | No | ||
| contextMaintenance | No |