Todoist MCP Helper
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TODOIST_API_TOKEN | Yes | Your Todoist API Token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsA | List all projects in the user's Todoist account. Returns project names, IDs, and colors. |
| create_projectB | Create a new project. Args: name: Name of the project. color: Optional color (e.g. 'berry_red', 'blue', 'charcoal'). parent_id: Optional parent project ID to create as a sub-project. |
| update_projectB | Update an existing project. Args: project_id: ID of the project to update. name: New name for the project. color: New color for the project. is_favorite: Whether to mark as favorite. |
| delete_projectA | Delete a project and all its tasks. Args: project_id: ID of the project to delete. |
| get_project_overviewA | Get a comprehensive overview of all projects with their sections and task counts. Useful for understanding the full project structure before organizing tasks. |
| get_tasksA | Get all active tasks. Can filter by project, label, or Todoist filter string. Args: project_id: Optional project ID to filter tasks by. label: Optional label name to filter tasks by. filter_str: Optional Todoist filter string (e.g. 'today', 'overdue', 'p1'). |
| get_taskC | Get detailed information about a single task. Args: task_id: ID of the task. |
| create_taskA | Create a new task in Todoist. Args: content: The task title/content (required). description: Optional description text. project_id: Optional project ID to add the task to. section_id: Optional section ID within a project. parent_id: Optional parent task ID (for sub-tasks). due_string: Optional due date in natural language (e.g. 'tomorrow', 'every monday', 'Jan 23'). due_date: Optional due date in YYYY-MM-DD format. priority: Priority from 1 (normal) to 4 (urgent). Default is 1. labels: Optional comma-separated label names (e.g. 'work,urgent'). |
| update_taskB | Update an existing task. Args: task_id: ID of the task to update (required). content: New task title/content. description: New description. due_string: New due date in natural language. due_date: New due date in YYYY-MM-DD format. due_datetime: New due date and time in RFC3339 format. priority: New priority (1-4). labels: New comma-separated label names (replaces existing labels). assignee_id: ID of user to assign the task to. duration: Task duration in minutes or days (requires duration_unit). duration_unit: Unit for duration: 'minute' or 'day'. deadline_date: Deadline date in YYYY-MM-DD format. |
| move_taskB | Move a task to a different project, section, or under a parent task. This enables cross-project task organization. Args: task_id: ID of the task to move (required). project_id: ID of the target project to move the task to. section_id: ID of the target section to move the task to. parent_id: ID of the parent task to move the task under. |
| close_taskC | Close (complete) a task. Args: task_id: ID of the task to close. |
| reopen_taskB | Reopen a previously completed task. Args: task_id: ID of the task to reopen. |
| delete_taskB | Permanently delete a task. Args: task_id: ID of the task to delete. |
| list_sectionsB | List sections, optionally filtered by project. Args: project_id: Optional project ID to filter sections by. |
| create_sectionC | Create a new section within a project. Args: name: Name of the section. project_id: ID of the project to create the section in. |
| update_sectionB | Rename an existing section. Args: section_id: ID of the section to update. name: New name for the section. |
| delete_sectionA | Delete a section and move its tasks to the parent project. Args: section_id: ID of the section to delete. |
| list_labelsA | List all personal labels in the user's Todoist account. |
| create_labelB | Create a new personal label. Args: name: Name of the label. color: Optional color (e.g. 'berry_red', 'blue', 'charcoal'). |
| get_commentsB | Get comments for a task or project. Must provide either task_id or project_id. Args: task_id: ID of the task to get comments for. project_id: ID of the project to get comments for. |
| create_commentA | Add a comment to a task or project. Must provide either task_id or project_id. Args: content: The comment text. task_id: ID of the task to comment on. project_id: ID of the project to comment on. |
| search_task_by_nameA | Search for tasks by name using partial/fuzzy matching. Returns all tasks whose title contains the search query. Args: query: Search keyword to match against task titles (case-insensitive). |
| complete_task_by_nameA | Complete a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and complete. |
| delete_task_by_nameA | Delete a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and delete. |
| update_task_by_nameA | Update a task by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and update. content: New task title. description: New description. due_string: New due date in natural language (e.g. 'tomorrow', 'next Monday'). priority: New priority (1-4). |
| move_task_by_nameA | Move a task to a different project/section by searching for it by name. Uses partial name matching. If multiple tasks match, lists them for the user to choose. Args: task_name: Name/content of the task to find and move. project_id: ID of the target project to move the task to. section_id: ID of the target section to move the task to. parent_id: ID of the parent task to move the task under. |
| set_api_tokenA | Set or update the Todoist API Token at runtime. This allows switching accounts without restarting the server. The token will persist for the current session only. Args: token: Your Todoist API Token (get from https://app.todoist.com/app/settings/integrations). |
| get_current_configA | Show the current configuration status (whether API token is set, API base URL, etc). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 28 tools
Tools are clearly separated by action (create, read, update, delete, close, reopen, move) and input method (ID vs. name-based variants like `complete_task_by_name` vs `close_task`). Some overlap exists between name-based and ID-based tools for the same action, which may cause confusion if the agent doesn't check arguments, but descriptions clarify the distinction.
All tools use a consistent `verb_noun` pattern in snake_case (e.g., `create_task`, `list_projects`, `get_comments`). The `by_name` suffix is uniformly applied to name-based variants. Naming is predictable and easy to navigate.
With 28 tools, the count is above average but appropriate for a full-featured Todoist integration. The inclusion of both ID- and name-based variants for key operations slightly inflates the count, but each tool serves a distinct use case for agents that may or may not have IDs.
The tool surface covers all major Todoist entities (projects, sections, tasks, labels, comments, configuration) and supports core CRUD plus close/reopen/move operations. Minor gaps exist: no delete or update for labels, no update or delete for comments, and no project sharing functionality.