todoist-automation
通过Rube MCP(Composio)实现Todoist任务管理、项目、分区、筛选及批量操作的自动化。始终优先使用工具搜索当前架构。
Todoist 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_MANAGE_CONNECTIONS with toolkit todoistRUBE_SEARCH_TOOLS first to get current tool schemasSetup
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.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit todoistCore Workflows
1. Create and Manage Tasks
When to use: User wants to create, update, complete, reopen, or delete tasks
Tool sequence:
TODOIST_GET_ALL_PROJECTS - List projects to find the target project ID [Prerequisite]TODOIST_GET_ALL_SECTIONS - List sections within a project for task placement [Optional]TODOIST_CREATE_TASK - Create a single task with content, due date, priority, labels [Required]TODOIST_BULK_CREATE_TASKS - Create multiple tasks in one request [Alternative]TODOIST_UPDATE_TASK - Modify task properties (content, due date, priority, labels) [Optional]TODOIST_CLOSE_TASK - Mark a task as completed [Optional]TODOIST_REOPEN_TASK - Restore a previously completed task [Optional]TODOIST_DELETE_TASK - Permanently remove a task [Optional]Key parameters for CREATE_TASK:
content: Task title (supports markdown and hyperlinks)description: Additional notes (do NOT put due dates here)project_id: Alphanumeric project ID; omit to add to Inboxsection_id: Alphanumeric section ID for placement within a projectparent_id: Task ID for creating subtaskspriority: 1 (normal) to 4 (urgent) -- note: Todoist UI shows p1=urgent, API p4=urgentdue_string: Natural language date like "tomorrow at 3pm", "every Friday at 9am"due_date: Specific date YYYY-MM-DD formatdue_datetime: Specific date+time in RFC3339 YYYY-MM-DDTHH:mm:ssZlabels: Array of label name stringsduration + duration_unit: Task duration (e.g., 30 + "minute")Pitfalls:
due_* field can be used at a time (except due_lang which can accompany any)content or description -- use due_string fielddue_string -- use duration + duration_unitpriority in API: 1=normal, 4=urgent (opposite of Todoist UI display where p1=urgent)CLOSE_TASK marks complete; DELETE_TASK permanently removes -- they are different operations2. Manage Projects
When to use: User wants to list, create, update, or inspect projects
Tool sequence:
TODOIST_GET_ALL_PROJECTS - List all projects with metadata [Required]TODOIST_GET_PROJECT - Get details for a specific project by ID [Optional]TODOIST_CREATE_PROJECT - Create a new project with name, color, view style [Optional]TODOIST_UPDATE_PROJECT - Modify project properties [Optional]Key parameters:
name: Project name (required for creation)color: Todoist palette color (e.g., "blue", "red", "green", "charcoal")view_style: "list" or "board" layoutparent_id: Parent project ID for creating sub-projectsis_favorite / favorite: Boolean to mark as favoriteproject_id: Required for update and get operationsPitfalls:
CREATE_PROJECT uses favorite while UPDATE_PROJECT uses is_favorite -- different field namesid returned by API, not the v2_id, for downstream operations3. Manage Sections
When to use: User wants to organize tasks within projects using sections
Tool sequence:
TODOIST_GET_ALL_PROJECTS - Find the target project ID [Prerequisite]TODOIST_GET_ALL_SECTIONS - List existing sections to avoid duplicates [Prerequisite]TODOIST_CREATE_SECTION - Create a new section in a project [Required]TODOIST_UPDATE_SECTION - Rename an existing section [Optional]TODOIST_DELETE_SECTION - Permanently remove a section [Optional]Key parameters:
project_id: Required -- the project to create the section inname: Section name (required for creation)order: Integer position within the project (lower values appear first)section_id: Required for update and delete operationsPitfalls:
CREATE_SECTION requires project_id and name -- omitting project_id causes a 400 errorid and v2_id; store and reuse the correct identifier consistently4. 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:
TODOIST_GET_ALL_TASKS - Fetch incomplete tasks with optional filter query [Required]TODOIST_GET_TASK - Get full details of a specific task by ID [Optional]TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE - Retrieve completed tasks within a date range [Optional]TODOIST_LIST_FILTERS - List user's custom saved filters [Optional]Key parameters for GET_ALL_TASKS:
filter: Todoist filter syntax string- Keywords:
today, tomorrow, overdue, no date, recurring, subtask- Priority:
p1 (urgent), p2, p3, p4 (normal)- Projects:
#ProjectName (must exist in account)- Labels:
@LabelName (must exist in account)- Date ranges:
7 days, -7 days, due before: YYYY-MM-DD, due after: YYYY-MM-DD- Search:
search: keyword for content text search- Operators:
& (AND), | (OR), ! (NOT)ids: List of specific task IDs to retrieveKey parameters for GET_COMPLETED_TASKS_BY_COMPLETION_DATE:
since: Start date in RFC3339 format (e.g., 2024-01-01T00:00:00Z)until: End date in RFC3339 formatproject_id, section_id, parent_id: Optional filterscursor: Pagination cursor from previous responselimit: Max results per page (default 50)Pitfalls:
GET_ALL_TASKS returns ONLY incomplete tasks; use GET_COMPLETED_TASKS_BY_COMPLETION_DATE for completed onescompleted, !completed, or completed after in GET_ALL_TASKS filter -- causes 400 errorGET_COMPLETED_TASKS_BY_COMPLETION_DATE limits date range to approximately 3 months between since and untilsearch: keyword syntax within the filter, not a separate parameter5. Bulk Task Creation
When to use: User wants to scaffold a project with multiple tasks at once
Tool sequence:
TODOIST_GET_ALL_PROJECTS - Find target project ID [Prerequisite]TODOIST_GET_ALL_SECTIONS - Find section IDs for task placement [Optional]TODOIST_BULK_CREATE_TASKS - Create multiple tasks in a single request [Required]Key parameters:
tasks: Array of task objects, each requiring at minimum contentcontent, description, project_id, section_id, parent_id, priority, labels, due (object with string, date, or datetime), duration, orderPitfalls:
content fielddue field in bulk create is an object with nested fields (string, date, datetime, lang) -- different structure from CREATE_TASK's flat fieldsCommon Patterns
ID Resolution
Always resolve human-readable names to IDs before operations:
TODOIST_GET_ALL_PROJECTS, match by name fieldTODOIST_GET_ALL_SECTIONS with project_idTODOIST_GET_ALL_TASKS with filter or search: keywordPagination
TODOIST_GET_ALL_TASKS: Returns all matching incomplete tasks (no pagination needed)TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE: Uses cursor-based pagination; follow cursor from response until no more resultsTODOIST_GET_ALL_PROJECTS and TODOIST_GET_ALL_SECTIONS: Return all results (no pagination)Due Date Handling
due_string (e.g., "tomorrow at 3pm", "every Monday")due_date in YYYY-MM-DD formatdue_datetime in RFC3339 format (YYYY-MM-DDTHH:mm:ssZ)due_lang which can accompany any)due_string (e.g., "every Friday at 9am")Known Pitfalls
ID Formats
"2995104339") or alphanumeric ("6X4Vw2Hfmg73Q2XR")id via GET_PROJECTid and v2_id; use id for API operationsPriority Inversion
Filter Syntax
#NonExistentProject or @NonExistentLabel will cause HTTP 400search: keyword for text search, not bare keywords& (AND), | (OR), ! (NOT)completed filters do NOT work on GET_ALL_TASKS endpointRate Limits
BULK_CREATE_TASKS where possibleQuick Reference
| Task | Tool Slug | Key Params |
|---|---|---|
| List all projects | TODOIST_GET_ALL_PROJECTS | (none) |
| Get project | TODOIST_GET_PROJECT | project_id |
| Create project | TODOIST_CREATE_PROJECT | name, color, view_style |
| Update project | TODOIST_UPDATE_PROJECT | project_id, name, color |
| List sections | TODOIST_GET_ALL_SECTIONS | project_id |
| Create section | TODOIST_CREATE_SECTION | project_id, name, order |
| Update section | TODOIST_UPDATE_SECTION | section_id, name |
| Delete section | TODOIST_DELETE_SECTION | section_id |
| Get all tasks | TODOIST_GET_ALL_TASKS | filter, ids |
| Get task | TODOIST_GET_TASK | task_id |
| Create task | TODOIST_CREATE_TASK | content, project_id, due_string, priority |
| Bulk create tasks | TODOIST_BULK_CREATE_TASKS | tasks (array) |
| Update task | TODOIST_UPDATE_TASK | task_id, content, due_string |
| Complete task | TODOIST_CLOSE_TASK | task_id |
| Reopen task | TODOIST_REOPEN_TASK | task_id |
| Delete task | TODOIST_DELETE_TASK | task_id |
| Completed tasks | TODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATE | since, until |
| List filters | TODOIST_LIST_FILTERS | sync_token |