WRITE

tick_checklist_item

Ticks or unticks one entry of a work item's Definition of Ready or Definition of Done, stamped with the token's holder and the time, and answers the whole list with its tally; the entries come from get_work_item.

Tick the Definition of Done as you finish each part of the work, or the Definition of Ready as a story is refined, so the gate opens when you move the item. Give work_item_id, kind (definition_of_ready or definition_of_done), item_id (an entry id from the checklists of get_work_item) and done (true by default; false unticks). The answer is the whole list: kind, label, done_count, total, required_open, complete and the items with who ticked each and when. work_item.checklist_changed goes out; an entry already in the state asked for changes nothing and emits nothing. A move into done through move_work_item is refused with DEFINITION_INCOMPLETE while a required entry is unticked and the project requires the definition, so read required_open before you move. Adding or removing entries stays with people and the REST API. A client guest's token is refused.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Delivered to every endpoint subscribed to it once the change is made.

Annotations

Idempotent

Sending the same arguments twice changes nothing the second time.

Arguments

work_item_id*string

UUID of the work item.

kind*string

Which list the entry is on.

definition_of_readydefinition_of_done
item_id*string

UUID of the entry, from the list's items.

donebooleanoptional

True to tick the entry, false to untick it; true when left out.

What it returns

{  "data": {    "id": "9c1d2e3f-4a5b-4c6d-8e7f-0a1b2c3d4e5f",    "work_item_id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",    "kind": "definition_of_done",    "label": "Definition of Done",    "done_count": 2,    "total": 4,    "required_open": 1,    "complete": false,    "items": [      {        "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",        "position": 0,        "text": "The code is reviewed and merged",        "required": true,        "done": true,        "done_by": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b",        "done_by_name": "Dev Lead",        "done_at": "2026-11-02T09:10:00+00:00"      },      {        "id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",        "position": 1,        "text": "Every acceptance criterion is verified",        "required": true,        "done": false,        "done_by": null,        "done_by_name": null,        "done_at": null      },      {        "id": "3c4d5e6f-7a8b-4c9d-8e0f-2a3b4c5d6e7f",        "position": 2,        "text": "The automated tests cover the change and pass",        "required": true,        "done": true,        "done_by": "3f8a1c2e-7b4d-4e5f-9a6b-1c2d3e4f5a6b",        "done_by_name": "Dev Lead",        "done_at": "2026-11-02T09:12:00+00:00"      },      {        "id": "4d5e6f7a-8b9c-4d0e-9f1a-3b4c5d6e7f80",        "position": 3,        "text": "The documentation and the release notes are updated",        "required": false,        "done": false,        "done_by": null,        "done_by_name": null,        "done_at": null      }    ],    "created_at": "2026-11-01T08:00:00+00:00",    "updated_at": "2026-11-01T08:00:00+00:00"  }}

How it fails

VALIDATION_FAILED

kind is not one of the two definitions, or item_id is missing.

RESOURCE_NOT_FOUND

unknown work_item_id, an item outside the token's scope, or an item_id that is not an entry of that list.

FORBIDDEN

the holder's role on the project does not carry work-item:update, or the token is a client guest's.

TOKEN_MISSING_ABILITY

token lacks work-item:update.

How is this guide?

Last updated on