How to connect Notion to Hermes Agent
Connect Notion to Hermes with ClawLink in one click — 45 tools your AI agent can call from chat via hosted OAuth. No API keys, no manual setup.


Manage pages, databases, and blocks. Once connected, Hermes Agent can read and act on Notion from chat — pairing, token refresh, and tool wiring handled for you.
Most guides for giving Hermes Agent Notion 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 Notion setup: pair once in the browser and your always-on Hermes agent can act on Notion 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 Notion.
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 Notion
One-click OAuth in the dashboard.
- 3
Use it from chat
Ask Hermes Agent: "What can you do with Notion?"
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 Notion in the ClawLink dashboard — a one-click OAuth approval, no API keys.
Verify the connection by asking Hermes:
Use notion_search_notion_page to find the page titled Meeting notes for Q3, then call notion_get_page_markdown on the result and summarize the key decisions in plain English.
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 Notion is connected in the dashboard, that agent calls the same 45 Notion tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Notion MCP for Hermes
Looking for a Notion MCP server for Hermes Agent? ClawLink connects Notion to Hermes Agent and exposes 45 Notion tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Notion integration works the same way.
Hermes Agent, the Nous Research agent runtime, has two ways to reach Notion and the walkthroughs you will find first teach the older one: create an internal integration in Notion settings, copy the secret token, share every page you care about from the Share menu, then paste NOTION_API_KEY into ~/.hermes/.env. ClawLink replaces that whole sequence with one browser consent: connect Notion in the dashboard, and the 45 tools below are callable from chat with no token in any file on the machine running Hermes. Notion's own Custom Agents are the other alternative and they are a different product: they run inside Notion on Business and Enterprise plans with the AI add-on, billed through Notion credits, and they are not an API surface an external runtime can call. This page is about the hosted connection instead.
What the Hermes Agent Notion integration can do
45 Notion 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 45.
30 of 45 Notion tools for Hermes
| Tool | What it does |
|---|---|
Create comment notion_create_comment | Create a comment on a Notion page or discussion |
Create database notion_create_database | Create a new Notion database |
Duplicate page notion_duplicate_page | Duplicate a Notion page |
Query database notion_query_database | Query a Notion database |
Retrieve page notion_retrieve_page | Retrieve a Notion page by ID |
Update block notion_update_block | Update a Notion block |
Update page notion_update_page | Update properties on a Notion page |
Fetch all block contents notion_fetch_all_block_contents | Fetch all child blocks for a given Notion block |
Fetch block contents notion_fetch_block_contents | Retrieves a paginated list of direct, first-level child block objects along with contents for a |
Fetch block metadata notion_fetch_block_metadata | Fetches metadata for a Notion block (including pages, which are special blocks) using its UUID |
Fetch comments notion_fetch_comments | Fetches unresolved comments for a specified Notion block or page ID |
Fetch data notion_fetch_data | Fetches Notion items (pages and/or databases) from the Notion workspace, use this to get |
Fetch database notion_fetch_database | Fetches a Notion database's structural metadata (properties, title, etc.) via its |
Fetch row notion_fetch_row | Retrieves a Notion database row's properties and metadata; use fetch_block_contents for page |
Get about user notion_get_about_user | Retrieves detailed information about a specific Notion user, such as their name, avatar, and |
Get page markdown notion_get_page_markdown | Retrieve a Notion page's full content rendered as Notion-flavored Markdown in a single API call |
Get page property action notion_get_page_property_action | Call this to get a specific property from a Notion page when you have a valid page_id and |
List data source templates notion_list_data_source_templates | List all templates for a Notion data source |
List file uploads notion_list_file_uploads | Retrieve file uploads for the current bot integration, sorted by most recent first |
List users notion_list_users | Retrieves a paginated list of users (excluding guests) from the Notion workspace; the number of |
Query data source notion_query_data_source | Query a Notion data source |
Query database with filter notion_query_database_with_filter | Query a Notion database with server-side filtering, sorting, and pagination |
Retrieve comment notion_retrieve_comment | Retrieve a specific comment by its ID |
Retrieve database property notion_retrieve_database_property | Retrieve a specific property object of a Notion database |
Retrieve file upload notion_retrieve_file_upload | Retrieve details of a Notion File Upload object by its identifier |
Search notion page notion_search_notion_page | Searches Notion pages and databases by title |
Add multiple page content notion_add_multiple_page_content | Bulk-add content blocks to Notion |
Append code blocks notion_append_code_blocks | Append code and technical blocks (code, quote, equation) to a Notion page |
Append layout blocks notion_append_layout_blocks | Append layout blocks (divider, TOC, breadcrumb, columns) to a Notion page |
Append media blocks notion_append_media_blocks | Append media blocks (image, video, audio, file, pdf, embed, bookmark) to a Notion page |
Try it: find the Notion tool you need
Browse the 30 Notion tools
Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.
Example prompts
Use notion_search_notion_page to find the page titled Meeting notes for Q3, then call notion_get_page_markdown on the result and summarize the key decisions in plain English.
Use notion_query_database_with_filter on the database I link, filter rows where the Status property is In progress, and list the titles with their owners and due dates.
Use notion_create_comment on the page I linked to post: Approved, with a note that the deadline moved to Friday. Confirm the comment was created.
Use notion_add_multiple_page_content to append three checklist items under the Next steps heading on the page I linked: ship the draft, update the tracker, notify the team.
What the 45 Notion tools cover
The behaviour below is checked against the live tool manifest; the parts that surprise people are called out.
- Search is the first call, not a convenience.
notion_search_notion_pagefinds pages and databases by title, and the manifest flags that search indexing is not immediate, so a page shared moments ago may not appear yet. Running it before any action also avoids the placeholder-id failures in the troubleshooting cards. - Two ways to read a database.
notion_query_databasereturns rows;notion_query_database_with_filterdoes server-side filtering, sorting, and pagination, which is the one to use when the agent needs a subset by status, date, or property value. - Page content in one call.
notion_get_page_markdownreturns a page's full content as Notion-flavored Markdown in a single API call, so agents do not need to walk block children.notion_fetch_all_block_contentsexists for block-level work with optional recursive expansion. - Writes behave differently than they look.
notion_add_multiple_page_contentbulk-adds blocks and auto-splits text over 2,000 characters, and content lands as children of the parent block id, not inline after a heading, unless the after parameter is used.notion_create_commentposts to a page or an existing discussion thread, and cannot open a new inline thread on a specific block. - Workspace context.
notion_fetch_datalists pages and databases in the workspace with minimal data, andnotion_list_userslists workspace members excluding guests. Both are useful when the agent needs to discover what exists before acting.
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 Notion working from chat.
| Manual | ClawLink | |
|---|---|---|
| Connection flow | Register a Notion app, configure redirect URLs, manage consent details, and reconnect users when auth settings drift. | Users connect Notion 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 Notion. | 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 Notion actions to the runtime in a format your agent can reliably use. | 45 tools for Notion are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Notion 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 Notion in the browser, and the 45 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 Notion
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 Notion 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 Notion tools
Notion 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 Notion 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.
Notion 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.
Notion API returns 403 "insufficient permissions" on a connected account
The AI Overviews answer this query with the token-world fix: share the page with the integration from the Share menu. On a hosted connection there is no integration to invite, so work through the causes that do apply. First, the authenticated account: if the account used at consent cannot see the page or database in its own Notion workspace, no connection fixes that. Second, capabilities: Notion integrations need read and write capabilities on the resource, and a page restricted to read blocks a write. Third, the placeholder trap, which is the most common cause when some tools work: the agent may have used an example id like YOUR_ID from documentation instead of a real one. Ask it to run notion_search_notion_page or notion_query_database first, then retry with a real id. Reconnecting does not change any of these.
Notion API returns 404 "page not found" or object_not_found
404 has one dominant cause in Notion's own help: the resource is not accessible to the integration. In the token world the fix is sharing the page, and the most useful tip from the AIO is to share the top-level parent page so children inherit access. For a hosted connection, check the id the agent sent first: a 404 on an id from documentation or a placeholder means the id itself is wrong, and listing or searching first fixes it. If the id is real, the resource is outside what the authenticated account can reach, and that is a permissions question in Notion, not a connection problem. One more source: Notion file urls expire after an hour, so a stored url from an old run returns 404 when used later.
Notion returns a permission error even though the account is connected
This is the shape ChatGPT has been citing us for, so here is the checklist in order. One: the runtime may still hold the old tool catalog, and a fresh chat is the fastest fix. Two: the resource may not be visible to the authenticated account, which no reconnect changes. Three: the agent may be sending placeholder ids; make it run a list or search tool first and use ids from the results. Four: if none of those apply, reconnect Notion from the dashboard and complete the consent in the same browser session, because a partial OAuth approval can leave a connection that looks healthy but has no working token.
OAuth finished in the browser but the account is still missing
Try reconnecting Notion 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 Notion integration?
Yes. ClawLink is the fastest way to connect Hermes to Notion: link your Notion account once in the browser and Hermes Agent can call the Notion API through 45 ready-made tools — no custom code or token handling.
How do I connect Notion 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 Notion 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 Notion to Hermes Agent?
About two minutes. Sign in, click Connect next to Notion in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.
Why use ClawLink instead of wiring Notion 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 Notion working from chat.
Why use ClawLink instead of creating a Notion internal integration?
The manual path is: create an internal integration in Notion, copy the secret_ token, share each page from the Share menu, and put NOTION_API_KEY in ~/.hermes/.env. ClawLink removes every one of those steps. You connect Notion in the browser once, the consent happens at workspace level through Notion's OAuth flow, and the tools work from the next message. There is no token to copy, no .env file to edit, and no page-level setup in the ClawLink dashboard.
Why not just use Notion's own Custom Agents?
Notion's built-in Custom Agents handle the no-API-key story on Notion's side, but they are not a substitute for this connection. They require a Business or Enterprise plan plus the AI add-on, run on Notion credits, and stay inside Notion: there is no external trigger and no API surface for a runtime like Hermes Agent to call from chat. ClawLink connects the Notion API itself, so your Hermes agent can act on the same workspace while also calling your other tools.
Is it safe to connect Notion to an AI agent?
The connection uses Notion's OAuth consent, so it inherits the permissions of the account you authenticate with at the workspace level. You can revoke it any time from the ClawLink dashboard, and no token is stored in a file on the machine running Hermes. The ecosystem's safety discussions concentrate on prompt injection and over-broad permissions, which is worth knowing: an agent with access to a full workspace should be given instructions about what it may read and write, the same way you would constrain any tool.
Do I need to share pages with the integration the way token setups do?
With an internal or public integration, Notion requires sharing each page from the Share menu using Connect to, and the AI Overviews teach that step for every error. A hosted OAuth connection is established during browser consent instead: there is no per-page Connect to step in this flow. If a tool still cannot see a page, the practical check is what the authenticated account can see in the workspace, because the agent cannot reach beyond that account's own permissions.
How many Notion tools does the Hermes integration expose?
45 tools, counted from the generated manifest on 2026-08-02. The page shows 30 of the most-used ones, and the agent can call all 45. Reads outnumber writes: querying databases, fetching pages and block content, and searching the workspace are the bulk of the surface, with create, update, and append operations available for the rest.
Hermes paired but still can't use Notion
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.