Tools · Planning and checking

todo

Can wait for approval

Maintain a live, replace-on-write checklist of tasks for a multi-step job so progress is observable. Pass the full updated list each call; mark exactly one item in_progress and flip items to completed as you finish them.

When to use: Use a checklist for work with three or more distinct steps; skip it for a single, simple change or a question and just do the work. Write all the steps first, keep exactly one 'in_progress', and mark each 'completed' as soon as it is done. An item is a step, not a file: for one change made across many files, update the list when the step is done, not after each file. Each call replaces the whole list, so pass every item as {content, status}, status being 'pending', 'in_progress' or 'completed'.

Example

Run for real by scripts/tool-examples.py in a small demo project, with Haiku 5.5 where the tool calls a model. The output is exactly what the tool returned.

The call

tool call
{
  "tool": "todo",
  "arguments": {
    "todos": [
      {
        "content": "Read the pricing module",
        "status": "completed"
      },
      {
        "content": "Add the enterprise plan",
        "status": "in_progress"
      },
      {
        "content": "Write a test for it",
        "status": "pending"
      }
    ]
  }
}

Real output

☑ Read the pricing module
▶ Add the enterprise plan
☐ Write a test for it
(1/3 completed, 1 in progress, 1 pending)

Parameters

NameTypeDescription
todos*arrayThe FULL updated checklist. Replaces any previous list.

* required

Plan the work, weigh options, and check results before answering.