# Todoist MCP connector

The Todoist connector brings your Todoist projects, tasks, comments, and labels to Claude, ChatGPT, Cursor, and the Elaichi Agent, so each person can review, add, and close work in Todoist by asking in plain language.

Source: https://elaichi.ai/connectors/todoist/

## Facts

| | |
| --- | --- |
| Application | Todoist |
| Category | Ticketing |
| AI tools | 34 |
| Authentication | OAuth or API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 34 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Todoist is connected

- Which Todoist tasks in Launch are overdue this week?
- Create a Todoist task in Onboarding due Friday.
- Summarize open tasks across my active Todoist projects.

## Connect Todoist in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Todoist.
2. Optionally set Share with, then press Connect.
3. Approve it in Todoist. Todoist's own window opens. Whoever approves it decides what this connection can reach.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Todoist tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Todoist to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Todoist to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Todoist to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Todoist to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Todoist tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Todoist through Elaichi

### Turn meeting notes into Todoist tasks

Operations. Paste the notes from a planning call and have the follow-ups created as tasks in the right Todoist project, each with a due date and the label your team uses.

### Catch the project up after a call

Sales. After a customer call, add the next steps to the account's Todoist project and close the tasks you already took care of on the call.

### Track escalations without leaving the chat

Support. When a customer issue needs engineering attention, create a Todoist task in the escalations project and add a comment with the details from the conversation.

### See what is overdue before the launch

Marketing. Ask which tasks in the campaign project are still open, reopen anything that was closed too early, and add a comment asking the owner for a status.

### Tidy finished projects at the end of a cycle

Product. List the projects that wrapped up this quarter, archive the ones that are done, and bring one back from the archive if work starts again.

### Keep recurring office chores organized

Office management. Set up a project for facilities work, create the tasks for the month, and relabel them as priorities shift so nothing gets lost.

## Frequently asked questions

### How do I connect Todoist to Claude?

Connecting Todoist to Claude takes two steps. In Elaichi, choose Todoist and either sign in with your Todoist account or paste an API key from your Todoist settings, whichever your organization prefers. Then in Claude, open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate.

### Does Todoist work with ChatGPT and Cursor as well as Claude?

Yes. Once Todoist is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Todoist once and every client you use picks it up.

### What can an AI agent actually do with my Todoist data?

With Todoist connected, an AI agent can list your projects and tasks, create new tasks in a specific project, update due dates and labels, close tasks you have finished, and reopen ones that were closed too soon. It can also read and add comments on tasks, create or archive projects, and manage the personal labels you sort work with. Because Todoist has many things it can do, short concrete asks such as "close the design review task in the launch project" work better than long paragraphs.

### Does connecting Todoist give the AI all of my projects and shared workspaces?

No. When you connect Todoist through Elaichi you sign in as yourself, so the AI can only see the Todoist projects, tasks, and comments your own account can see, including shared projects you have already been invited to. Elaichi can narrow that further, for example to reading only, but it can never widen access beyond what your Todoist account already has.

### Can my team share one Todoist connection?

Yes. One person connects Todoist in Elaichi and shares the connection with a team, and nobody else ever handles a Todoist API key or password. Each teammate still signs in to Elaichi as themselves, so every task created or closed in Todoist is recorded in the audit log under the name of the person who did it.

### Can I stop an agent from deleting or changing things in Todoist?

Yes. Restrictions in Elaichi apply per action, so you can allow an agent to read and create Todoist tasks while blocking it from deleting tasks, projects, or comments. A blocked action is never shown to Claude, ChatGPT, Cursor, or any other client at all, so no prompt, however worded, can reach it.

### What happens to a Todoist connection when someone leaves?

When you offboard someone in Elaichi, their access to Todoist through every connected client ends at once. A Todoist connection they shared with a team keeps working for everyone else on that team. If you want to remove Todoist entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client in the same step.

## All 34 Todoist tools

Every tool below is callable through https://api.elaichi.ai/mcp once Todoist is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Todoist projects** (List). List all projects in Todoist. Returns array of projects with fields including id, name, comment_count, order, color, is_shared, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id.
- **Get single Todoist project by ID** (Get). Get a specific project in Todoist by id. Returns fields including id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id.
- **Create a Todoist project** (Create). Create a new project in Todoist. Requires name. Returns id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id in the response.
- **Update a Todoist project by ID** (Update). Update a project in Todoist by id. Returns id, name, comment_count, color, is_shared, order, is_favorite, is_inbox_project, is_team_inbox, view_style, url, and parent_id in the response.
- **Delete a Todoist project by ID** (Delete). Delete a project in Todoist with id. This also deletes all its sections and tasks. Returns empty body with status 204 on success.
- **Todoist projects archive** (Archive). Archive a project in Todoist. Requires id. Returns 204 No Content with an empty body after successfully hiding the project (for personal projects, hides for the user; for workspace projects, hides for all workspace users).
- **Todoist projects unarchive** (Action). Unarchive a project in Todoist. Requires id. Returns 204 No Content on success.
- **List all Todoist tasks** (List). Get all active tasks in Todoist. Returns fields including id, content, description, is_completed, due (date, datetime, string, timezone), deadline, project_id, section_id, labels, priority, order, url, and assignment details.
- **Get single Todoist task by ID** (Get). Get an active task in Todoist by id. Returns key fields including creator_id, assignee_id, content, description, due dates, deadline, labels, project_id, parent_id, and url.
- **Create a Todoist task** (Create). Create a new task in Todoist. Requires content. Returns fields including id (task identifier), content (task text), description, due (date, datetime, string, timezone), deadline (date), project_id, section_id, parent_id, priority, labels, is_completed, creator_id, created_at, and url.
- **Update a Todoist task by ID** (Update). Update a task in Todoist. Requires id. Returns content, description, labels, priority, due details, deadline, duration, and other task metadata in the response.
- **Delete a Todoist task by ID** (Delete). Delete a task in Todoist by id. Returns a 204 No Content response with an empty body upon success.
- **Todoist tasks close** (Close). Close a task in Todoist using id. Regular tasks are marked complete and moved to history with subtasks. Tasks with recurring due dates are scheduled to their next occurrence. Returns 204 No Content on success.
- **Todoist tasks reopen** (Action). Reopen a specific task in Todoist using id. Returns 204 No Content with an empty body. Any ancestor items or sections are also restored and appear at the end of their parent list.
- **List all Todoist comments** (List). List comments in Todoist for a given task_id or project_id. Requires one of task_id or project_id. Returns id, content, posted_at, project_id, task_id, and attachment details.
- **Get single Todoist comment by ID** (Get). Get a specific comment in Todoist by id. Returns id, content, posted_at, project_id or task_id, and attachment details including file_name, file_type, file_url, and resource_type.
- **Create a Todoist comment** (Create). Create a new comment in Todoist. Requires either task_id or project_id, and content. Returns the created comment including id, content, task_id or project_id, and related metadata.
- **Update a Todoist comment by ID** (Update). Update comment id in Todoist. Requires id and content. Returns id for identification, content for updated text, posted_at for timestamp, task_id or project_id for linkage, and attachment details if available.
- **Delete a Todoist comment by ID** (Delete). Delete a comment in Todoist by id. Requires id. Returns 204 No Content response indicating success.
- **List all Todoist personal label** (List). List all personal-labels in Todoist. Returns id, name, color, order, and is_favorite for each label.
- **Get single Todoist personal label by ID** (Get). Get a personal label in Todoist using id. Returns id, name, color, order, and is_favorite in the response.
- **Create a Todoist personal label** (Create). Create a new personal label in Todoist. Requires name. Returns id, name, color, order, and is_favorite fields.
- **Update a Todoist personal label by ID** (Update). Update a personal label in Todoist by id. Returns id, name, color, order, and is_favorite fields in the response.
- **Delete a Todoist personal label by ID** (Delete). Delete a personal label in Todoist using id. All instances of the label will be removed from tasks. Returns empty response with status 204 to indicate success.
- **List all Todoist shared labels** (List). List all shared labels in Todoist. Returns an array of label names currently assigned to tasks.
- **Todoist shared labels remove** (Delete). Remove a shared-label in Todoist by providing its name. This action deletes all instances of the label from associated tasks. Requires name. Returns 204 No Content on success.
- **Todoist shared labels rename** (Action). Rename all instances of a shared label in Todoist. Requires name and new_name. Returns empty response with status 204 indicating success.
- **List all Todoist collaborators** (List). List all collaborators in Todoist for a project. Requires project_id. Returns id (collaborator identifier), name (collaborator name), and email (collaborator email) for each collaborator.
- **List all Todoist sections** (List). List all sections in Todoist. Returns id, project_id, order, and name for each section.
- **Get single Todoist section by ID** (Get). Get a single section in Todoist by id. Returns id, project_id, order, and name. If the section id has changed due to moving to another project, returns 301 with new URL in Location header.
- **Create a Todoist section** (Create). Create a new section in Todoist. Requires project_id and name. Returns id, project_id, order, and name of the section.
- **Update a Todoist section by ID** (Update). Update a section in Todoist using id. Returns the updated section with fields such as id, project_id, and name.
- **Delete a Todoist section by ID** (Delete). Delete a section in Todoist by id along with all of its tasks. Requires id. Returns empty body with 204 No Content status on success.
- **Todoist attachment download** (Download). Use this endpoint to download an attachment file from the system.
