todoist-automation

Automate Todoist task management, projects, sections, filtering, and bulk operations via Rube MCP (Composio). Always search tools first for current schemas.

View Source
name:todoist-automationdescription:"Automate Todoist task management, projects, sections, filtering, and bulk operations via Rube MCP (Composio). Always search tools first for current schemas."requires:mcp:[rube]

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 MCP must be connected (RUBE_SEARCH_TOOLS available)

  • Active Todoist connection via RUBE_MANAGE_CONNECTIONS with toolkit todoist

  • Always call RUBE_SEARCH_TOOLS first to get current tool schemas
  • 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 RUBE_SEARCH_TOOLS responds

  • Call RUBE_MANAGE_CONNECTIONS with toolkit todoist

  • 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:

  • 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 Inbox

  • section_id: Alphanumeric section ID for placement within a project

  • parent_id: Task ID for creating subtasks

  • priority: 1 (normal) to 4 (urgent) -- note: Todoist UI shows p1=urgent, API p4=urgent

  • due_string: Natural language date like "tomorrow at 3pm", "every Friday at 9am"

  • due_date: Specific date YYYY-MM-DD format

  • due_datetime: Specific date+time in RFC3339 YYYY-MM-DDTHH:mm:ssZ

  • labels: Array of label name strings

  • duration + duration_unit: Task duration (e.g., 30 + "minute")
  • Pitfalls:

  • Only one due_* field can be used at a time (except due_lang which can accompany any)

  • Do NOT embed due dates in content or description -- use due_string field

  • Do NOT embed duration phrases like "for 30 minutes" in due_string -- use duration + duration_unit

  • priority in API: 1=normal, 4=urgent (opposite of Todoist UI display where p1=urgent)

  • Task IDs can be numeric or alphanumeric; use the format returned by the API

  • CLOSE_TASK marks complete; DELETE_TASK permanently removes -- they are different operations
  • 2. 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" layout

  • parent_id: Parent project ID for creating sub-projects

  • is_favorite / favorite: Boolean to mark as favorite

  • project_id: Required for update and get operations
  • Pitfalls:

  • Projects with similar names can lead to selecting the wrong project_id; always verify

  • CREATE_PROJECT uses favorite while UPDATE_PROJECT uses is_favorite -- different field names

  • Use the project id returned by API, not the v2_id, for downstream operations

  • 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:

  • 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 in

  • name: Section name (required for creation)

  • order: Integer position within the project (lower values appear first)

  • section_id: Required for update and delete operations
  • Pitfalls:

  • CREATE_SECTION requires project_id and name -- omitting project_id causes a 400 error

  • 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 id and v2_id; store and reuse the correct identifier consistently

  • 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:

  • 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 retrieve
  • Key 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 format

  • project_id, section_id, parent_id: Optional filters

  • cursor: Pagination cursor from previous response

  • limit: Max results per page (default 50)
  • Pitfalls:

  • GET_ALL_TASKS returns ONLY incomplete tasks; use GET_COMPLETED_TASKS_BY_COMPLETION_DATE for completed ones

  • Filter terms must reference ACTUAL EXISTING entities; arbitrary text causes HTTP 400 errors

  • Do NOT use completed, !completed, or completed after in GET_ALL_TASKS filter -- causes 400 error

  • GET_COMPLETED_TASKS_BY_COMPLETION_DATE limits date range to approximately 3 months between since and until

  • Search uses search: keyword syntax within the filter, not a separate parameter
  • 5. 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 content

  • Each task object supports: content, description, project_id, section_id, parent_id, priority, labels, due (object with string, date, or datetime), duration, order
  • Pitfalls:

  • Each task in the array must have at least the content field

  • The due field in bulk create is an object with nested fields (string, date, datetime, lang) -- different structure from CREATE_TASK's flat fields

  • 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: TODOIST_GET_ALL_PROJECTS, match by name field

  • Section name -> Section ID: TODOIST_GET_ALL_SECTIONS with project_id

  • Task content -> Task ID: TODOIST_GET_ALL_TASKS with filter or search: keyword
  • Pagination


  • 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 results

  • TODOIST_GET_ALL_PROJECTS and TODOIST_GET_ALL_SECTIONS: Return all results (no pagination)
  • Due Date Handling


  • Natural language: Use due_string (e.g., "tomorrow at 3pm", "every Monday")

  • Specific date: Use due_date in YYYY-MM-DD format

  • Specific datetime: Use due_datetime in RFC3339 format (YYYY-MM-DDTHH:mm:ssZ)

  • Only use ONE due field at a time (except due_lang which can accompany any)

  • Recurring tasks: Use natural language in due_string (e.g., "every Friday at 9am")
  • Known Pitfalls

    ID Formats


  • Task IDs can be numeric ("2995104339") or alphanumeric ("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 id via GET_PROJECT

  • Response objects may contain both id and v2_id; use id for API operations
  • 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

  • #NonExistentProject or @NonExistentLabel will cause HTTP 400

  • Use search: keyword for text search, not bare keywords

  • Combine with & (AND), | (OR), ! (NOT)

  • completed filters do NOT work on GET_ALL_TASKS endpoint
  • Rate Limits


  • Todoist API has rate limits; batch operations should use BULK_CREATE_TASKS where possible

  • Space out rapid sequential requests to avoid throttling
  • Quick Reference

    TaskTool SlugKey Params
    List all projectsTODOIST_GET_ALL_PROJECTS(none)
    Get projectTODOIST_GET_PROJECTproject_id
    Create projectTODOIST_CREATE_PROJECTname, color, view_style
    Update projectTODOIST_UPDATE_PROJECTproject_id, name, color
    List sectionsTODOIST_GET_ALL_SECTIONSproject_id
    Create sectionTODOIST_CREATE_SECTIONproject_id, name, order
    Update sectionTODOIST_UPDATE_SECTIONsection_id, name
    Delete sectionTODOIST_DELETE_SECTIONsection_id
    Get all tasksTODOIST_GET_ALL_TASKSfilter, ids
    Get taskTODOIST_GET_TASKtask_id
    Create taskTODOIST_CREATE_TASKcontent, project_id, due_string, priority
    Bulk create tasksTODOIST_BULK_CREATE_TASKStasks (array)
    Update taskTODOIST_UPDATE_TASKtask_id, content, due_string
    Complete taskTODOIST_CLOSE_TASKtask_id
    Reopen taskTODOIST_REOPEN_TASKtask_id
    Delete taskTODOIST_DELETE_TASKtask_id
    Completed tasksTODOIST_GET_COMPLETED_TASKS_BY_COMPLETION_DATEsince, until
    List filtersTODOIST_LIST_FILTERSsync_token

      todoist-automation - Agent Skills