Todoist integrationTodoist logo

Todoist integration for AI agents.

Todoist integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Todoist tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Todoist actions, managed and audited.

Your user connects Todoist once; your agent can then secure AI-agent actions — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Todoist access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Todoist tools.

103 tools are generated from the published Todoist catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 103 tools. All published catalog entries are included in this page's server-rendered HTML.

Accept Invitation
Accept a workspace invitation. Usable by authenticated users only.
Workspace
Active Projects
Returns all active workspace projects, including those visible but not joined by the user. _For guests, returns all joined workspace projects only._
Workspace
All Invitations
Return a list containing details of all pending invitation to a workspace. This list is not paginated. All workspace members can access this list.
Workspace
Archive Project
Marks a project as archived. For personal projects, this will archive it just for the initiating user (leaving it visible to any other collaborators). For workspace projects, this will archive it for all workspace users, removing it from view.
Projects
Archive Section
Marks a section as archived.
Sections
Archived Projects
Return archived projects in a workspace. Workspace guests cannot list archived projects and receive a `FORBIDDEN` error. Results are paginated by `cursor` and `limit`.
Workspace
Cancel Plan With Redirect To Stripe
Start a hosted cancellation flow and return the redirect URL.
Billing
Close Task
Closes a task. The command performs in the same way as our official clients: Regular tasks are marked complete and moved to history, along with their subtasks. Tasks with [recurring due dates](https://todoist.com/help/articles/introduction-to-recurring-dates-YUYVJJAV) will be scheduled to their next occurrence.
Tasks
Create Comment
Creates a new comment on a project or task and returns it. Exactly one of `task_id` or `project_id` arguments is required. Providing neither or both will return an error.
Comments
Create Folder
Create a new folder in the given workspace.
Folders
Create Label
Create a personal label. Premium limits apply to personal label creation. Free users who exceed the plan limit receive a premium-only error.
Labels
Create Location Reminder
Create a new location reminder for a task.
Location reminders
Create Project
Creates a new project and returns it
Projects
Create Project From File
A template can be imported in an existing project, or in a newly created one. Upload a file suitable to be passed as a template to be imported into a project.
Templates
Create Reminder
Create a new reminder for a task. For **relative** reminders, provide `minute_offset` (minutes before the task's due time). For **absolute** reminders, provide a `due` dictionary with a specific date/time. Supported `due` keys are `date` or `string`, with optional `lang`, `timezone`, and `is_recurring`.
Reminders
Create Section
Create a new section
Sections
Create Task
Create a new task.
Tasks
Create Workspace
Creates a new workspace and returns it.
Workspace
Delete Comment
Delete a comment by ID
Comments
Delete Folder
Delete a folder. Projects in the folder will be moved out of it.
Folders
Delete Invitation
Deletes a workspace invitation. Only admins can delete invitations.
Workspace
Delete Label
Deletes a personal label. All instances of the label will be removed from tasks
Labels
Delete Location Reminder
Delete a location reminder by ID.
Location reminders
Delete Project
Deletes a project and all of its sections and tasks.
Projects
Delete Reminder
Delete a reminder by ID.
Reminders
Delete Section
Delete the section and all of its tasks
Sections
Delete Task
Delete a task and all of its subtasks. Returns `NOT_FOUND` when the task does not exist and `FORBIDDEN` when the authenticated user cannot modify the task.
Tasks
Delete Upload
Delete an uploaded file. The file must belong to the authenticated user. Returns `FILE_NOT_FOUND` when the upload cannot be found.
Uploads
Delete Workspace
Deletes a workspace.
Workspace
Download Backup
Download a backup archive. This endpoint requires the `data:read_write` scope. The `backups:read` scope only grants access to `GET /api/v1/backups`. Validates that the requested backup belongs to the authenticated user and redirects to a signed CloudFront URL that expires after one minute.
Backups
Email Disable
Disable the current email to a Todoist object
Emails
Email Get Or Create
Get or create an email to a Todoist object, currently only projects and tasks are supported.
Emails
Export As File
Get a template for a project as a CSV file
Templates
Export As Url
Get a template for a project as a shareable URL. The URL can then be passed to `https://todoist.com/api/v1/import/project_from_url?t_url=<url>` to make a shareable template.
Templates
Get Activity Logs
Get activity logs. Returns a paginated list of activity events for the user. Events can be filtered by object type (project, item, note, section), event type, and other criteria. Uses cursor-based pagination for efficient navigation through results.
Activity
Get Archived
Get the user's archived projects.
Projects
Get Backups
Todoist creates a backup archive of users' data on a daily basis. Backup archives can also be accessed from the web app (Todoist Settings -> Backups). This endpoint accepts the `backups:read` scope, the `data:read_write` scope, or a personal API token. The `backups:read` scope bypasses MFA and only grants access to `GET /api/v1/backups`. When using `data:read_write` or a personal API token for an account with MFA enabled, the MFA token is required.
Backups
Get Comment
Returns a single comment by ID
Comments
Get Comments
Get all comments for a given task or project. Exactly one of `task_id` or `project_id` arguments is required. Providing neither or both will return an error. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Comments
Get Folder
Return the folder for the given folder ID.
Folders
Get Folders
Get all folders for a workspace. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Folders
Get Label
Return a personal label by ID. Returns `NOT_FOUND` when the label does not exist or the ID is invalid.
Labels
Get Labels
Get all user labels. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Labels
Get Location Reminder
Return a single location reminder by ID.
Location reminders
Get Location Reminders
Get all active location reminders. Optionally filter by `task_id` to return only location reminders for a specific task. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Location reminders
Get Productivity Stats
Get comprehensive productivity statistics for the authenticated user. This endpoint is used to display information about the [Karma system](https://www.todoist.com/help/articles/introduction-to-karma-OgWkWy). Returns detailed completion statistics including: - Daily completion counts with per-project breakdowns for the last 7 days - Weekly completion counts with per-project breakdowns for the last 4 weeks - Total completed task count - Karma score, trend, graph data, and update history - Goal settings (daily/weekly goals, ignore days, vacation mode) - Streak information (current, last, and maximum daily and weekly streaks) - Project color mappings for visualization
User
Get Project
Returns a project object related to the given ID
Projects
Get Project Collaborators
Get all collaborators for a given project. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Projects
Get Projects
Get all active user projects, optionally filtered by folder or workspace. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Projects
Get Reminder
Return a single reminder by ID.
Reminders
Get Reminders
Get all active reminders. Optionally filter by `task_id` to return only reminders for a specific task. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Reminders
Get Section
Return the section for the given section ID
Sections
Get Sections
Get all active sections for the user, optionally filtered by project. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Sections
Get Subscription Info
Return the current user's subscription state.
Billing
Get Task
Returns a single active (non-completed) task by ID
Tasks
Get Tasks
Get all active tasks for the user. All provided parameters are used to narrow down the list of tasks. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Tasks
Get Tasks By Filter
Get all tasks matching the filter. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Tasks
Get Workspace
Returns a workspace by ID.
Workspace
Get Workspaces
Returns all workspaces where the user is a member.
Workspace
Get Workspaces Users
Returns all workspace_users for a given workspace if workspace_id is provided. Otherwise, returns all workspace_users for all workspaces that the requesting user is part of. _Not accessible by guests._
Workspace
Id Mappings
Translates IDs from v1 to v2 or vice versa. IDs are not unique across object types, hence the need to specify the object type. When V1 ids are provided, the function will return the corresponding V2 ids, if they exist, and vice versa. When no objects are found, an empty list is returned.
Ids
Import Into Project From File
A template can be imported in an existing project, or in a newly created one. Upload a file suitable to be passed as a template to be imported into a project.
Templates
Import Into Project From Template Id
Import a saved template into an existing project. The target project must exist and must not be frozen. The response includes the imported objects so clients can update local state immediately.
Templates
Invitations
Return a list of user emails who have a pending invitation to a workspace. The list is not paginated. All workspace members can access this list.
Workspace
Invite Workspace Users
Invites users to a workspace by email.
Workspace
Join
_Only used for workspaces_ This endpoint is used to join a workspace project by a workspace_user and is only usable by the workspace user.
Projects
Join
Join a workspace via link or via workspace ID, if the user can auto-join the workspace by domain. ## Joining by Domain This is possible if: - The user is verified - The user has a user e-mail belonging to a domain that is set as a domain name for a workspace - That workspace has the auto-join by domain feature enabled
Workspace
Migrate Personal Token
Tokens obtained via the old email/password authentication method can be migrated to the new OAuth access token. Migrating your users' personal tokens will allow users to see your app in their Todoist Settings page and give them the ability to manage their app authorization. A successful response has `200 OK` status and `application/json` Content-Type.
Authorization
Move Task
Moves task to another project, section or parent.
Tasks
Permissions
Returns a list of all the available roles and the associated actions they can perform in a project.
Projects
Plan Details
Lists details of the workspace's current plan and usage
Workspace
Quick Add
Add a new task using Quick Add with natural language processing. Quick Add allows creating tasks with rich metadata using natural language text. This endpoint uses the same parsing engine as Todoist's official clients, supporting dates, projects, labels, priorities, assignees, and more in a single text string. ## Basic Syntax Overview - **Due dates**: Natural language like `today`, `tomorrow at 5pm`, `next Monday` - **Projects**: `#ProjectName` (use `#My\\ Project` for names with spaces) - **Sections**: `/SectionName` (requires a project to be specified) - **Labels**: `@labelname` (multiple labels supported) - **Priority**: `p1` to `p4`, `P1` to `P4`, or `!!1` to `!!4` - **Assignees**: `+Name` (requires a project to be specified) - **Deadlines**: `{date expression}` (e.g., `{tomorrow}`, `{in 3 days}`) - **Reminders**: `!30m` (30 min before), `!1h` (1 hour before), `!0mb` (at due time), `!14:00` (absolute time), `!30 min before` (verbose, English only) - **Descriptions**: ` // description text` (must be at the end) ## Examples - `"Buy milk today at 5pm #Shopping @groceries p1"` - `"Team meeting next Monday at 10am #Work +JohnDoe !30m"` - `"Review PR {Friday} // Check the new authentication flow"` - `"Submit report tomorrow #Work /Urgent @important // Include Q3 metrics"` ## Important Notes - Natural language date parsing supports multiple languages based on account settings - If parsing fails for any element, the task is still created (with unparsed text remaining in the content) - Use the `meta` parameter to see detailed parsing results for debugging For comprehensive documentation including all supported date formats, language support, and advanced syntax, see the [Quick Add help article](https://www.todoist.com/help/articles/use-task-quick-add-in-todoist-va4Lhpzz).
Tasks
Reactivate Plan
Reactivate a previously canceled subscription. Returns the fresh `SubscriptionInfo` after reactivation so callers can avoid a follow-up fetch. Raises `NO_CANCELABLE_SUBSCRIPTION` if there is no active subscription to reactivate.
Billing
Reject Invitation
Reject a workspace invitation. Usable by authenticated users only.
Workspace
Remove Workspace User
Removes a user from a workspace.
Workspace
Reopen Task
Reopens a task. Any ancestor tasks or sections will also be marked as uncomplete and restored from history. The reinstated tasks and sections will appear at the end of the list within their parent, after any previously active tasks.
Tasks
Revoke Access Token Api
Revoke the access tokens obtained via OAuth
Authorization
Revoke Token Rfc7009 Compliant
Revoke an access token according to RFC 7009 OAuth Token Revocation. This endpoint accepts form-encoded data and follows the OAuth 2.0 Token Revocation specification. The client must authenticate using HTTP Basic authentication with their client credentials. Authentication is performed via the Authorization header with the format: Authorization: Basic base64(client_id:client_secret)
Authorization
Search Labels
Search user labels by name. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Labels
Search Projects
Search active user projects by name. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Projects
Search Sections
Search active sections by name, optionally filtered by project. This is a paginated endpoint. See the [Pagination guide](#tag/Pagination) for details on using cursor-based pagination.
Sections
Shared Labels
Returns a set of unique strings containing [shared labels](https://www.todoist.com/help/articles/introduction-to-labels-dSo2eE#h_01HE1NNWMV8MCXNVF10GT13ZEX) from active tasks.
Labels
Shared Labels Remove
Remove the given shared label from all active tasks
Labels
Shared Labels Rename
Rename the given shared label from all active tasks
Labels
Tasks Completed By Completion Date
Retrieves a list of completed tasks strictly limited by the specified completion date range (up to 3 months). It can retrieve completed items: - From all the projects the user has joined in a workspace - From all the projects of the user - That match many [supported filters](https://todoist.com/help/articles/introduction-to-filters-V98wIH) By default, the response is limited to a page containing a maximum of 50 items (configurable using `limit`). Subsequent pages of results can be fetched by using the `next_cursor` value from the response as the `cursor` value for the next request.
Tasks
Tasks Completed By Due Date
Retrieves a list of completed items strictly limited by the specified due date range (up to 6 weeks). It can retrieve completed items: - From within a project, section, or parent item - From all the projects the user has joined in a workspace - From all the projects of the user - That match many [supported filters](https://todoist.com/help/articles/introduction-to-filters-V98wIH) By default, the response is limited to a page containing a maximum of 50 items (configurable using `limit`). Subsequent pages of results can be fetched by using the `next_cursor` value from the response as the `cursor` value for the next request.
Tasks
Unarchive Project
Marks a previously archived project as active again. For personal projects, this will make the project visible again for the initiating user. For workspace projects, this will make the project visible again for all applicable workspace users.
Projects
Unarchive Section
Marks a section as active again.
Sections
Update Comment
Update a comment by ID and returns its content
Comments
Update Folder
Update an existing folder.
Folders
Update Label
Update a personal label. At least one mutable field must be provided. Passing `null` for an optional field keeps the existing value unchanged.
Labels
Update Location Reminder
Update an existing location reminder.
Location reminders
Update Logo
Upload an image to be used as the workspace logo. Similar to a user’s avatar. If `delete` is set to true, it removes the logo completely and does not return any `logo_*` attribute.
Workspace
Update Notification Setting
Update a notification delivery preference. The API accepts the legacy `dont_notify` flag and stores the inverse as the user's delivery preference for the requested notification type and channel.
User
Update Project
Updates a project and returns it.
Projects
Update Reminder
Update an existing reminder.
Reminders
Update Section
Update a section.
Sections
Update Task
Updates an existing task.
Tasks
Update Workspace
Updates an existing workspace and returns it.
Workspace
Update Workspace User
Updates a workspace user's role.
Workspace
Upload File
Upload a file to Todoist. This endpoint accepts file uploads via two methods: 1. **Multipart form-data** (recommended): - Send the file as a form field with the actual file content - Optionally include `project_id` as another form field - The filename will be extracted from the Content-Disposition header 2. **Raw binary stream**: - Send the file content directly in the request body - Set `Content-Type` header to the file's MIME type - Set `X-File-Name` header with the desired filename - Optionally include `project_id` as a query parameter The optional `project_id` parameter can be used to apply workspace-specific upload limits when uploading to a workspace project.
Uploads
Usage Billing Top Up
Create a hosted Stripe Checkout session for an Automations credits top-up.
Billing
User Info
Get information about the currently authenticated user. This is the OIDC userinfo endpoint. OAuth tokens of any product audience are accepted as long as they carry the `user:read` scope (implied by `data:read`).
User
FAQ

Todoist integration, answered

How do AI agents use Todoist through Open Connector?
Your user connects Todoist once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Todoist tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Todoist MCP server?
Yes. Open Connector can serve Todoist as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Todoist actions with credentials injected server-side.
Where do Todoist credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Todoist — keep the keys.

Open source, self-hostable, with Todoist credentials that never leave your infrastructure. Run it from source today.