Learn-skills.dev todoist-automation
Automate Todoist task management, projects, sections, filtering, and bulk operations via Rube MCP (Composio). Always search tools first for current schemas.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aaaaqwq/claude-code-skills/todoist-automation" ~/.claude/skills/neversight-learn-skills-dev-todoist-automation-e093db && rm -rf "$T"
data/skills-md/aaaaqwq/claude-code-skills/todoist-automation/SKILL.mdTodoist Automation via Rube MCP
Automate Todoist operations including task creation and management, project organization, section management, filtering, and bulk task workflows through Composio's Todoist toolkit.
Prerequisites
- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)
- Active Todoist connection via
with toolkitRUBE_MANAGE_CONNECTIONStodoist - Always call
first to get current tool schemasRUBE_SEARCH_TOOLS
Setup
Get Rube MCP: Add
https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
- Verify Rube MCP is available by confirming
respondsRUBE_SEARCH_TOOLS - Call
with toolkitRUBE_MANAGE_CONNECTIONStodoist - If connection is not ACTIVE, follow the returned auth link to complete Todoist OAuth
- Confirm connection status shows ACTIVE before running any workflows
Core Workflows
1. Create and Manage Tasks
When to use: User wants to create, update, complete, reopen, or delete tasks
Tool sequence:
- List projects to find the target project ID [Prerequisite]TODOIST_GET_ALL_PROJECTS
- List sections within a project for task placement [Optional]TODOIST_GET_ALL_SECTIONS
- Create a single task with content, due date, priority, labels [Required]TODOIST_CREATE_TASK
- Create multiple tasks in one request [Alternative]TODOIST_BULK_CREATE_TASKS
- Modify task properties (content, due date, priority, labels) [Optional]TODOIST_UPDATE_TASK
- Mark a task as completed [Optional]TODOIST_CLOSE_TASK
- Restore a previously completed task [Optional]TODOIST_REOPEN_TASK
- Permanently remove a task [Optional]TODOIST_DELETE_TASK
Key parameters for CREATE_TASK:
: Task title (supports markdown and hyperlinks)content
: Additional notes (do NOT put due dates here)description
: Alphanumeric project ID; omit to add to Inboxproject_id
: Alphanumeric section ID for placement within a projectsection_id
: Task ID for creating subtasksparent_id
: 1 (normal) to 4 (urgent) -- note: Todoist UI shows p1=urgent, API p4=urgentpriority
: Natural language date likedue_string
,"tomorrow at 3pm""every Friday at 9am"
: Specific datedue_date
formatYYYY-MM-DD
: Specific date+time in RFC3339due_datetimeYYYY-MM-DDTHH:mm:ssZ
: Array of label name stringslabels
+duration
: Task duration (e.g.,duration_unit
+30
)"minute"
Pitfalls:
- Only one
field can be used at a time (exceptdue_*
which can accompany any)due_lang - Do NOT embed due dates in
orcontent
-- usedescription
fielddue_string - Do NOT embed duration phrases like "for 30 minutes" in
-- usedue_string
+durationduration_unit
in API: 1=normal, 4=urgent (opposite of Todoist UI display where p1=urgent)priority- Task IDs can be numeric or alphanumeric; use the format returned by the API
marks complete;CLOSE_TASK
permanently removes -- they are different operationsDELETE_TASK
2. Manage Projects
When to use: User wants to list, create, update, or inspect projects
Tool sequence:
- List all projects with metadata [Required]TODOIST_GET_ALL_PROJECTS
- Get details for a specific project by ID [Optional]TODOIST_GET_PROJECT
- Create a new project with name, color, view style [Optional]TODOIST_CREATE_PROJECT
- Modify project properties [Optional]TODOIST_UPDATE_PROJECT
Key parameters:
: Project name (required for creation)name
: Todoist palette color (e.g.,color
,"blue"
,"red"
,"green"
)"charcoal"
:view_style
or"list"
layout"board"
: Parent project ID for creating sub-projectsparent_id
/is_favorite
: Boolean to mark as favoritefavorite
: Required for update and get operationsproject_id
Pitfalls:
- Projects with similar names can lead to selecting the wrong project_id; always verify
usesCREATE_PROJECT
whilefavorite
usesUPDATE_PROJECT
-- different field namesis_favorite- Use the project
returned by API, not theid
, for downstream operationsv2_id - Alphanumeric/URL-style project IDs may cause HTTP 400 in some tools; use numeric ID if available
3. Manage Sections
When to use: User wants to organize tasks within projects using sections
Tool sequence:
- Find the target project ID [Prerequisite]TODOIST_GET_ALL_PROJECTS
- List existing sections to avoid duplicates [Prerequisite]TODOIST_GET_ALL_SECTIONS
- Create a new section in a project [Required]TODOIST_CREATE_SECTION
- Rename an existing section [Optional]TODOIST_UPDATE_SECTION
- Permanently remove a section [Optional]TODOIST_DELETE_SECTION
Key parameters:
: Required -- the project to create the section inproject_id
: Section name (required for creation)name
: Integer position within the project (lower values appear first)order
: Required for update and delete operationssection_id
Pitfalls:
requiresCREATE_SECTION
andproject_id
-- omitting project_id causes a 400 errorname- HTTP 400 "project_id is invalid" can occur if alphanumeric ID is used; prefer numeric ID
- Deleting a section may move or regroup its tasks in non-obvious ways
- Response may include both
andid
; store and reuse the correct identifier consistentlyv2_id - Always check existing sections first to avoid creating duplicates
4. Search and Filter Tasks
When to use: User wants to find tasks by criteria, view today's tasks, or get completed task history
Tool sequence:
- Fetch incomplete tasks with optional filter query [Required]TODOIST_GET_ALL_TASKS
- Get full details of a specific task by ID [Optional]TODOIST_GET_TASK
- Retrieve completed tasks within a date range [Optional]TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE
- List user's custom saved filters [Optional]TODOIST_LIST_FILTERS
Key parameters for GET_ALL_TASKS:
: Todoist filter syntax stringfilter- Keywords:
,today
,tomorrow
,overdue
,no date
,recurringsubtask - Priority:
(urgent),p1
,p2
,p3
(normal)p4 - Projects:
(must exist in account)#ProjectName - Labels:
(must exist in account)@LabelName - Date ranges:
,7 days
,-7 days
,due before: YYYY-MM-DDdue after: YYYY-MM-DD - Search:
for content text searchsearch: keyword - Operators:
(AND),&
(OR),|
(NOT)!
- Keywords:
: List of specific task IDs to retrieveids
Key parameters for GET_COMPLETED_TASKS_BY_COMPLETION_DATE:
: Start date in RFC3339 format (e.g.,since
)2024-01-01T00:00:00Z
: End date in RFC3339 formatuntil
,project_id
,section_id
: Optional filtersparent_id
: Pagination cursor from previous responsecursor
: Max results per page (default 50)limit
Pitfalls:
returns ONLY incomplete tasks; useGET_ALL_TASKS
for completed onesGET_COMPLETED_TASKS_BY_COMPLETION_DATE- Filter terms must reference ACTUAL EXISTING entities; arbitrary text causes HTTP 400 errors
- Do NOT use
,completed
, or!completed
in GET_ALL_TASKS filter -- causes 400 errorcompleted after
limits date range to approximately 3 months betweenGET_COMPLETED_TASKS_BY_COMPLETION_DATE
andsinceuntil- Search uses
syntax within the filter, not a separate parametersearch: keyword
5. Bulk Task Creation
When to use: User wants to scaffold a project with multiple tasks at once
Tool sequence:
- Find target project ID [Prerequisite]TODOIST_GET_ALL_PROJECTS
- Find section IDs for task placement [Optional]TODOIST_GET_ALL_SECTIONS
- Create multiple tasks in a single request [Required]TODOIST_BULK_CREATE_TASKS
Key parameters:
: Array of task objects, each requiring at minimumtaskscontent- Each task object supports:
,content
,description
,project_id
,section_id
,parent_id
,priority
,labels
(object withdue
,string
, ordate
),datetime
,durationorder
Pitfalls:
- Each task in the array must have at least the
fieldcontent - The
field in bulk create is an object with nested fields (due
,string
,date
,datetime
) -- different structure from CREATE_TASK's flat fieldslang - All tasks can target different projects/sections within the same batch
Common Patterns
ID Resolution
Always resolve human-readable names to IDs before operations:
- Project name -> Project ID:
, match byTODOIST_GET_ALL_PROJECTS
fieldname - Section name -> Section ID:
withTODOIST_GET_ALL_SECTIONSproject_id - Task content -> Task ID:
withTODOIST_GET_ALL_TASKS
orfiltersearch: keyword
Pagination
: Returns all matching incomplete tasks (no pagination needed)TODOIST_GET_ALL_TASKS
: Uses cursor-based pagination; followTODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE
from response until no more resultscursor
andTODOIST_GET_ALL_PROJECTS
: Return all results (no pagination)TODOIST_GET_ALL_SECTIONS
Due Date Handling
- Natural language: Use
(e.g.,due_string
,"tomorrow at 3pm"
)"every Monday" - Specific date: Use
indue_date
formatYYYY-MM-DD - Specific datetime: Use
in RFC3339 format (due_datetime
)YYYY-MM-DDTHH:mm:ssZ - Only use ONE due field at a time (except
which can accompany any)due_lang - Recurring tasks: Use natural language in
(e.g.,due_string
)"every Friday at 9am"
Known Pitfalls
ID Formats
- Task IDs can be numeric (
) or alphanumeric ("2995104339"
)"6X4Vw2Hfmg73Q2XR" - Project IDs similarly vary; prefer the format returned by the API
- Some tools accept only numeric IDs; if 400 error occurs, try fetching the numeric
via GET_PROJECTid - Response objects may contain both
andid
; usev2_id
for API operationsid
Priority Inversion
- API priority: 1 = normal, 4 = urgent
- Todoist UI display: p1 = urgent, p4 = normal
- This is inverted; always clarify with the user which convention they mean
Filter Syntax
- Filter terms must reference real entities in the user's account
or#NonExistentProject
will cause HTTP 400@NonExistentLabel- Use
for text search, not bare keywordssearch: keyword - Combine with
(AND),&
(OR),|
(NOT)!
filters do NOT work on GET_ALL_TASKS endpointcompleted
Rate Limits
- Todoist API has rate limits; batch operations should use
where possibleBULK_CREATE_TASKS - Space out rapid sequential requests to avoid throttling
Quick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List all projects | | (none) |
| Get project | | |
| Create project | | , , |
| Update project | | , , |
| List sections | | |
| Create section | | , , |
| Update section | | , |
| Delete section | | |
| Get all tasks | | , |
| Get task | | |
| Create task | | , , , |
| Bulk create tasks | | (array) |
| Update task | | , , |
| Complete task | | |
| Reopen task | | |
| Delete task | | |
| Completed tasks | | , |
| List filters | | |