How to connect Todoist to Hermes Agent
Connect Todoist to Hermes Agent with ClawLink: no API token in your shell profile, no token to regenerate when it breaks. 76 Todoist tools your agent calls from chat.


Create and manage tasks and projects. Once connected, Hermes Agent can read and act on Todoist from chat — pairing, token refresh, and tool wiring handled for you.
Most guides for giving Hermes Agent Todoist access start with registering your own OAuth app or pasting API keys into env files, then leave the token refresh and tool wiring to you. ClawLink gives Hermes a more practical Todoist setup: pair once in the browser and your always-on Hermes agent can act on Todoist for you, reading and doing real work on your behalf with no auth, token refresh, or tool wiring to build yourself.
Copy this prompt into Hermes to install the plugin and pair your account.
Set up ClawLink for Hermes and tell me when it's ready.
1. Install the plugin:
hermes plugins install ClawLink-HQ/hermes-plugin --enable
2. Start pairing. It prints an approval link, so show me the link and stop, don't wait:
hermes clawlink begin
3. I'll approve it in my browser, then reply "approved".
4. When I say approved, finish setup:
hermes clawlink finish
5. Then run `hermes clawlink test` and tell me whether ClawLink is ready.Setup
It takes three steps to connect Hermes to Todoist.
1Install and pair
Install the ClawLink plugin, then pair Hermes with a one-time browser approval:
hermes plugins install ClawLink-HQ/hermes-plugin --enable- 2
Connect Todoist
One-click OAuth in the dashboard.
- 3
Use it from chat
Ask Hermes Agent: "What can you do with Todoist?"
Install by command
The prompt above walks Hermes through this. By hand, it is four commands and a browser approval:
hermes plugins install ClawLink-HQ/hermes-plugin --enable
hermes clawlink begin # prints an approval link — open it and approve
hermes clawlink finish # after approving in the browser
hermes clawlink testThen connect Todoist in the ClawLink dashboard — a one-click OAuth approval, no API keys.
Verify the connection by asking Hermes:
Use todoist_quick_add_task to add these, one call each, keeping my syntax intact: "Renew domain tomorrow 9am #Admin p2", "Draft Q3 update Friday #Marketing", "Call the accountant next Monday p1". Confirm what Todoist parsed for each.
Using a different agent?
The Hermes plugin is one client of ClawLink's MCP server. Claude Code, Cursor, Codex, or any agent that can run a shell command pairs with the same ClawLink account through the CLI:
npx -y @useclawlink/cli loginlogin opens the same browser approval and stores a credential locally. Once Todoist is connected in the dashboard, that agent calls the same 76 Todoist tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Todoist MCP for Hermes
Looking for a Todoist MCP server for Hermes Agent? ClawLink connects Todoist to Hermes Agent and exposes 76 Todoist tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Todoist integration works the same way.
The advice you will find for this is to copy your API token out of Todoist's settings and add an export line to your shell profile. It works, and it is also why the most common Todoist integration question is what to do when authentication starts failing: the token was regenerated, or it was copied with a trailing space, or it lives on a machine you are no longer using. ClawLink connects through Todoist's OAuth flow, so no token is copied anywhere and nothing is written to your shell profile. You approve access once in the browser and the 76 tools below work from Hermes chat. The connection appears in Todoist's integrations settings, where you can revoke it.
What the Hermes Agent Todoist integration can do
76 Todoist tools are ready for Hermes Agent once the account is connected. The 30 below are the ones people reach for most; your agent can call all 76.
30 of 76 Todoist tools for Hermes
| Tool | What it does |
|---|---|
Add workspace todoist_add_workspace | Create a new workspace in Todoist |
Archive project2 todoist_archive_project2 | Archive a project in Todoist |
Bulk create tasks todoist_bulk_create_tasks | Create many tasks in one request |
Close task v1 todoist_close_task_v1 | Close (complete) a task in Todoist |
Filter tasks todoist_filter_tasks | Get all tasks matching a filter |
Get all comments todoist_get_all_comments | Retrieve all comments for a task or project |
Get all projects todoist_get_all_projects | Get all projects from a Todoist account |
Get all tasks todoist_get_all_tasks | Fetches all incomplete tasks from Todoist |
Export template as file todoist_export_template_as_file | Export a Todoist project as a CSV template file |
Export template as URL todoist_export_template_as_url | Export a Todoist project as a shareable template URL |
Get backups todoist_get_backups | List all available backup archives for the user |
Get comment v1 todoist_get_comment_v1 | Retrieve a single comment by ID using the v1 API |
Get completed tasks by completion date todoist_get_completed_tasks_by_completion_date | Retrieve completed tasks within a specified completion date window |
Get ID mappings todoist_get_id_mappings | Translate IDs between Todoist API v1 and v2 |
Get personal label todoist_get_personal_label | Retrieve a personal label by its ID |
Get productivity stats todoist_get_productivity_stats | Retrieve comprehensive productivity statistics for the authenticated user |
Get project todoist_get_project | Retrieve a specific project by its ID using Todoist API v1 |
Get project full todoist_get_project_full | Retrieve full project data including all sections, tasks, and collaborators |
Get project permissions todoist_get_project_permissions | Retrieve all available roles and their associated actions in Todoist projects |
Get section v1 todoist_get_section_v1 | Retrieve a specific section by its ID using Todoist v1 API |
Get special backups todoist_get_special_backups | List special backup archives for the authenticated user's projects |
Get task2 todoist_get_task2 | Retrieve a single active (non-completed) task by ID using API v1 |
Get user todoist_get_user | Retrieve information about the currently authenticated user |
Get workspace plan details todoist_get_workspace_plan_details | Retrieve details about a workspace's current plan and usage |
List activities todoist_list_activities | Get activity logs from Todoist |
List all invitations workspaces todoist_list_all_invitations_workspaces | Return a list containing details of all pending invitations to a workspace |
List archived projects todoist_list_archived_projects | Get all archived projects from Todoist |
List archived sections todoist_list_archived_sections | Retrieve all archived sections for a specific project in Todoist |
List archived workspace projects todoist_list_archived_workspace_projects | List all archived projects in a workspace |
List completed tasks todoist_list_completed_tasks | Retrieve all completed tasks with optional project filtering |
Try it: find the Todoist tool you need
Browse the 30 Todoist tools
Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.
Example prompts
Use todoist_quick_add_task to add these, one call each, keeping my syntax intact: "Renew domain tomorrow 9am #Admin p2", "Draft Q3 update Friday #Marketing", "Call the accountant next Monday p1". Confirm what Todoist parsed for each.
Run todoist_filter_tasks with the filter "overdue | today" and show me everything, grouped by project. Suggest which five matter most this week and why. Do not change any due dates until I say so.
Create a project called "Website relaunch" with todoist_create_project2, add sections for Design, Content, and Build with todoist_create_section_v1, then use todoist_bulk_create_tasks to add the action items from the notes I paste next into the right sections.
Use todoist_list_completed_tasks for the last 7 days and todoist_get_productivity_stats. Tell me how many tasks I closed, which project took the most, and whether my completion rate moved compared to the week before.
How the Todoist tools behave
Naming and argument detail from the manifest. The first point is the one that breaks prompts.
- Several tool names end in a digit and that is correct.
todoist_get_task2,todoist_create_project2,todoist_update_project2,todoist_reopen_task2,todoist_update_section2, andtodoist_archive_project2are the real names. Others carry a_v1suffix, such astodoist_create_comment_v1andtodoist_create_label_v1. Neither is a typo. todoist_quick_add_taskandtodoist_create_tasksolve different problems. Quick-add parses Todoist's own syntax, so dates, projects, labels, and priorities come from the sentence.todoist_create_tasktakes explicit arguments, which is what you want when the agent is generating tasks in bulk and you do not want its phrasing interpreted.- Completing and deleting are not the same.
todoist_close_task_v1completes a task andtodoist_reopen_task2undoes that.todoist_delete_taskremoves it. "Clear these off my list" is ambiguous across both. - Filters are Todoist's query language.
todoist_filter_tasksaccepts filter strings such asoverdue | todayor@waiting & #Work, which is more precise than pulling everything withtodoist_get_all_tasksand sorting it afterwards. - Bulk creation exists.
todoist_bulk_create_taskstakes many tasks in one call, which is the difference between turning a meeting into a project in one step and watching thirty sequential writes. - Completed tasks have two lookups.
todoist_get_completed_tasks_by_completion_dateandtodoist_list_completed_tasks_by_due_dateanswer different questions: what got finished in a window, versus what was due in one. - Productivity data is available directly.
todoist_get_productivity_statsreturns karma and streak information without the agent counting tasks itself.
ClawLink vs. building it yourself
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Todoist working from chat.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register a Todoist app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Todoist through the hosted browser flow and ClawLink keeps the token lifecycle out of your app code. |
| Ongoing maintenance | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Todoist. | ClawLink handles the repetitive integration plumbing so your team can focus on the workflow instead of the infrastructure. |
| Agent usability | You still need to expose the right Todoist actions to the runtime in a format your agent can reliably use. | 76 tools for Todoist are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Todoist to AI agents. It is developer infrastructure: Python and TypeScript SDKs, an MCP server, and a catalog past 1,000 apps, aimed at teams shipping agent products. ClawLink is built for Hermes Agent users instead. You install the plugin once, connect Todoist in the browser, and the 76 tools above work from chat. There is no SDK, no config file, and no API key handling. Choosing between them? Read the full Composio alternatives comparison.
Troubleshooting
Hermes paired but still can't use Todoist
Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.
Connection succeeds but no tools appear
Reconnect Todoist from the dashboard, then start a fresh chat if the runtime still has the old tool catalog loaded.
"Tool schema not loaded yet" error when calling Todoist tools
Todoist tool schemas load on demand the first time a tool runs and are cached after that, so this error usually clears on its own: wait a few seconds and retry the same request. If every Todoist call keeps failing with it in a fresh chat, reconnect from the dashboard, and contact support if it still persists — that pattern points to a configuration problem on our side, not something you can fix by reconnecting again.
Todoist returns 403 or "permission denied" on one action while others work
Two usual causes. The connected account may not have access to the specific workspace, inbox, store, or project in the request — check that first. If access looks right, the agent may have sent a placeholder value (like "YOUR_ID" or an example id from documentation) instead of a real one: ask it to run a list or search tool first, then retry the action with a real id from those results. Most failures at this stage are one of these two, not ClawLink bugs.
Todoist returns 401 Unauthorized, "Invalid token", or the agent reports an authentication error on a connection that shows as connected
The standard advice for this phrase is to check your Authorization: Bearer header, delete and regenerate your API token, and make sure you are not calling a deprecated endpoint. None of it applies here, because there is no token in your possession and no header you control. What this means on a hosted connection is that the stored authorization is no longer valid on Todoist's side, and there are only a few ways that happens: you revoked the connection in Todoist's integrations settings, you changed your Todoist password in a way that invalidated existing sessions, or the account itself changed. The fix is to reconnect Todoist from the ClawLink dashboard, which replaces the authorization. If it fails again immediately after reconnecting, the problem is on the Todoist account rather than the connection, and signing in to Todoist directly in a browser will usually show what it is.
Ask the agent to diagnose it:
Run todoist_get_user and tell me exactly which Todoist account is connected, or report the exact error body if it fails. Do not retry the other Todoist calls.Todoist returns 403 or 404 on a project or task that exists
Two causes, and they are easy to separate. The first is a placeholder id: Todoist project and task ids are numeric strings, and an agent that has not listed anything yet will invent one that is structurally valid enough to reach the API, so the answer comes back as forbidden or missing rather than as a bad argument. Run todoist_get_all_projects or todoist_filter_tasks first, then retry with a real id. The second is scope of the account: a project owned by someone else and not shared with you is not visible, and a task in an archived project is not where the agent is looking. todoist_list_archived_projects is the tool for the second case.
Ask the agent to diagnose it:
Run todoist_get_all_projects and show me the project ids and names you can see. Then tell me which one you were trying to use. Do not retry the failing call yet.A Todoist tool returns "tool not found" or the agent asks for a tool with a version suffix like todoist_get_task2
If the name looks ordinary, the tool catalog had not loaded when the first call went out; schemas load on demand and retrying once usually clears it. The confusing case is version suffixes, which are real: several tools in this integration genuinely end in a digit, including todoist_get_task2, todoist_create_project2, todoist_reopen_task2, and todoist_update_section2. Those are correct names rather than typos, so an agent that strips the digit to make the name look tidier will get a not-found error. The failures most search results describe for this phrase, involving absolute paths in claude_desktop_config.json and missing environment variables, belong to locally run MCP servers and do not apply here.
Ask the agent to diagnose it:
List the Todoist tools you actually have available that match what I asked for, including any trailing digits, and use the exact name.OAuth finished in the browser but the account is still missing
Try reconnecting Todoist and complete the consent flow in the same browser session. Partial OAuth approvals or switching accounts mid-flow can leave the connection incomplete.
FAQ
Is there a Hermes Agent Todoist integration?
Yes. ClawLink is the fastest way to connect Hermes to Todoist: link your Todoist account once in the browser and Hermes Agent can call the Todoist API through 76 ready-made tools — no custom code or token handling.
How do I connect Todoist to Hermes with ClawLink?
Install the plugin with hermes plugins install ClawLink-HQ/hermes-plugin --enable, then pair once: run hermes clawlink begin, approve the link in your browser, and run hermes clawlink finish. Connect Todoist in the dashboard and Hermes can use it from the next message — no config files or API keys to manage.
How long does it take to connect Todoist to Hermes Agent?
About two minutes. Sign in, click Connect next to Todoist in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.
Why use ClawLink instead of wiring Todoist up myself?
The alternative to ClawLink is usually manual OAuth app setup plus your own token handling, permission troubleshooting, and tool plumbing for Hermes Agent. That is fine if you want to build and maintain the integration yourself. Most teams just want Todoist working from chat.
Do I need a Todoist API token for this?
No. A Todoist API token is a single string that grants full access to your account, does not expire on its own, and has to be stored somewhere your agent can read it. That is why so much troubleshooting advice ends with regenerating it: when it stops working, the fix is to replace it everywhere you put it. This connection uses OAuth instead, so there is no string for you to hold, and revoking access is a button in Todoist rather than a hunt through config files.
Does this work with a free Todoist account?
Yes for the core task, project, label, comment, and section tools. Some of the 76 tools reach features that Todoist itself gates by plan, including workspace management, project collaborators, activity logs, and backups. Those tools exist in the catalog and will return an error from Todoist rather than from ClawLink if your plan does not include the feature, which is worth knowing so you can tell a plan limit from a broken connection.
Can the agent add tasks in natural language, the way Quick Add does?
Yes, through todoist_quick_add_task, which accepts Todoist's own quick-add syntax. That means "Pay invoice tomorrow at 5pm #Finance p1" is parsed by Todoist for the date, project, and priority rather than by the agent guessing at fields. For anything where you want explicit control over due dates, labels, or parent tasks, todoist_create_task takes them as separate arguments instead.
Will the agent see my shared or team projects?
It sees what your Todoist account sees, so shared projects you are a collaborator on are included. todoist_get_all_projects lists everything reachable, and todoist_list_project_collaborators shows who else is on a given project. Bear in mind that a task the agent creates or completes in a shared project is visible to your collaborators and attributed to you, so a bulk change is a change other people will notice.
Hermes paired but still can't use Todoist
Pairing is a two-step handshake: run hermes clawlink begin, approve the link in your browser, then run hermes clawlink finish. If you ran finish before approving, or the approval link expired, run hermes clawlink begin again to get a fresh link. Confirm the plugin was installed with --enable, then verify with hermes clawlink test.