Nearly every write takes an items array, so moving a dozen tasks into a new section or relabelling a backlog is a single call, and because targets can be given by name, the usual lookup round trip disappears. get_tasks_by_filter carries Todoist's filter language, which is what makes everything overdue with a given label one query rather than a client-side scan. Completed history is the one hard boundary: the range tops out at 3 months.
36 tools over the Todoist API. Create, get, update and delete exist for tasks, projects, sections, labels and comments, each taking an items array, and most accept either an id or a name to identify what they act on.
- Tasks created, updated, closed, reopened, moved and deleted in batches, identified by task_id or task_name
- Todoist's own filter language for queries like today, overdue or P1, including date, label and project filters
- Completed tasks with a since and until window, over a range capped at 3 months
- Projects created, updated, deleted and moved under a new parent, plus the collaborators on one
- Sections listed per project and created, updated or deleted in bulk
- Personal labels created, updated and deleted, and shared labels renamed or removed across the account
- Comments on a task or project created, read, updated and deleted, and the colour set Todoist accepts
A Todoist account and its API token, read from API_KEY. Node on your PATH.
One command plus a key — npx -y todoist-mcp, then supply credentials
