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.
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
Your user grants Todoist access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
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
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.