How to connect Mem0 to Hermes Agent
Connect Mem0 to Hermes with ClawLink: paste your Mem0 key once and 47 tools work from chat. No MCP server to run, nothing stored on your machine.


Store and retrieve user memories and context for AI agents. Once connected, Hermes Agent can read and act on Mem0 from chat — pairing, token refresh, and tool wiring handled for you.
Most guides for giving Hermes Agent Mem0 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 Mem0 setup: pair once in the browser and your always-on Hermes agent can act on Mem0 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 Mem0.
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 Mem0
Paste your API key in the dashboard.
- 3
Use it from chat
Ask Hermes Agent: "What can you do with Mem0?"
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 Mem0 in the ClawLink dashboard — paste your Mem0 API key once.
Verify the connection by asking Hermes:
Call mem0_get_projects and mem0_fetch_detailed_list_of_organizations, then tell me which orgs and projects this connection can reach and which of them I own.
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 Mem0 is connected in the dashboard, that agent calls the same 47 Mem0 tools over MCP. Full setup for MCP clients and shell agents: connect apps to any AI agent.
Mem0 MCP for Hermes
Looking for a Mem0 MCP server for Hermes Agent? ClawLink connects Mem0 to Hermes Agent and exposes 47 Mem0 tools your agent can call over MCP, with hosted auth and nothing to run or maintain yourself. Using OpenClaw instead? The OpenClaw Mem0 integration works the same way.
Every search result and answer engine teaches the same Mem0 flow: run hermes memory setup, choose mem0, paste an API key into a ~/.hermes/.env file, and you get the memory tools Hermes ships natively, three of them. This page is a different question. The key goes to a hosted setup page once, Hermes Agent pairs with hermes clawlink begin and hermes clawlink finish, and the agent gets the full Mem0 platform API, 47 tools: organizations, projects, members, webhooks, agents and agent runs, memory records, semantic search, memory events, and exports. Nothing is written to an env file on your machine, and the key lives server-side where rotating it means changing one thing.
What the Hermes Agent Mem0 integration can do
47 Mem0 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 47.
30 of 47 Mem0 tools for Hermes
| Tool | What it does |
|---|---|
Add member to project mem0_add_member_to_project | Adds an existing user to a project (identified by project_id within organization org_id), assigning a valid system role. |
Add new memory records mem0_add_new_memory_records | Stores new memory records from a list of messages, optionally inferring structured content; requires association via agent_id, user_id, app_id, or run_id. |
Add organization member mem0_add_organization_member | Adds a new member, who must be a registered user, to an organization, assigning them a specific role. |
Create a new agent mem0_create_a_new_agent | Creates a new agent with a unique agent_id and an optional name; additional metadata may be assigned by the system. |
Create a new agent run mem0_create_a_new_agent_run | Creates a new agent run in the mem0.ai system. |
Create a new application mem0_create_a_new_application | Creates a new application, allowing metadata to be passed in the request body (not an explicit field in this action's request model); ensure app_id is unique to avoid potential errors or unintended updates. |
Create a new organization entry mem0_create_a_new_organization_entry | Creates a new organization entry using the provided name and returns its details. |
Create a new user mem0_create_a_new_user | Creates a new user with the specified unique user_id and supports associating metadata (not part of the request schema fields). |
Create memory entry mem0_create_memory_entry | Lists/searches existing memory entries with filtering and pagination; critically, this action retrieves memories and does not create new ones, despite its name. |
Create project mem0_create_project | Creates a new project with a given name within an organization that must already exist. |
Create webhook mem0_create_webhook | Creates a new webhook for a specific project to receive real-time notifications. Use when you need to set up event-driven integrations that trigger on memory operations. |
Fetch detailed list of organizations mem0_fetch_detailed_list_of_organizations | Retrieves a summary list of organizations for administrative oversight; returns summary data |
Fetch details of a specific organization mem0_fetch_details_of_a_specific_organization | Fetches comprehensive details for an organization using its org_id; the org_id must be |
Fetch list of entity filters mem0_fetch_list_of_entity_filters | Retrieves predefined filter definitions for entities (e.g., by type, creation/modification |
Fetch specific entity details with optional filters mem0_fetch_specific_entity_details_with_optional_filters | Fetches detailed information for an existing entity (user, agent, app, or run) identified by |
Get event status by event ID mem0_get_event_status_by_event_id | Retrieves a single async event by ID to check its current status and results |
Get memories by entity mem0_get_memories_by_entity | Retrieve all memories associated with a specific entity (user, agent, app, or run) |
Get memory export mem0_get_memory_export | Retrieves the status and results of a memory export job by its ID |
Get organization members mem0_get_organization_members | Fetches a list of members for a specified, existing organization |
Get project details mem0_get_project_details | Fetches comprehensive details for a specified project within an organization |
Get project members mem0_get_project_members | Retrieves all members for a specified project within an organization |
Get project webhooks mem0_get_project_webhooks | Retrieves all webhooks configured for a specific project |
Get projects mem0_get_projects | Retrieves all projects for a given organization org_id to which the caller has access |
Get user memory stats mem0_get_user_memory_stats | Retrieves a summary of the authenticated user's memory activity, including total memories |
List entities with optional org and project filters mem0_list_entities_with_optional_org_and_project_filters | Retrieves a list of entities, optionally filtered by organization or project (prefer |
Perform semantic search on memories mem0_perform_semantic_search_on_memories | Searches memories semantically using a natural language query and metadata filters |
Retrieve all events for the currently logged in user mem0_retrieve_all_events_for_the_currently_logged_in_user | Retrieves a paginated list of events for the authenticated user, filterable and paginable via |
Retrieve list of memory events mem0_retrieve_list_of_memory_events | Retrieves a chronological list of all memory events (e.g., user inputs, AI responses) from the |
Retrieve memory by unique identifier mem0_retrieve_memory_by_unique_identifier | Retrieves a complete memory entry by its unique identifier; memory_id must be valid and for |
Retrieve memory history by ID mem0_retrieve_memory_history_by_id | Retrieves the complete version history for an existing memory, using its unique memory_id, to |
Try it: find the Mem0 tool you need
Browse the 30 Mem0 tools
Click any tool to see exactly what Hermes can do and copy a ready-to-use prompt.
Example prompts
Call mem0_get_projects and mem0_fetch_detailed_list_of_organizations, then tell me which orgs and projects this connection can reach and which of them I own.
Use mem0_perform_semantic_search_on_memories across <project> for <topic> and summarise what the stored memories say, flagging anything that looks contradictory.
Use mem0_get_memory_export for <project> and tell me what format it returns, how large the set is, and whether anything predates this month.
Call mem0_get_project_webhooks for <project> and list what events are wired up, then tell me which events are not covered.
How the Mem0 tools behave
Details that decide whether a Mem0 prompt is a fast answer or a quota-burning sweep.
- Memory and platform are different surfaces. The memory tools (add records, semantic search, get memories by entity) sit alongside org, project, member, webhook, agent, and run tools, so "what can this agent do" is answered by listing both, not just the memory ones.
- Almost everything is addressed by id. Organizations, projects, agents, and entities are ids from the list tools; an id from documentation fails like a 403 or a not-found depending on the endpoint.
- Memory is add and retrieve, with events on top.
mem0_add_new_memory_recordsandmem0_perform_semantic_search_on_memoriesare the pair;mem0_retrieve_list_of_memory_eventsandmem0_get_event_status_by_event_idcover what changed and why. - Exports are one call.
mem0_get_memory_exportpulls the set for portability instead of paging through searches. - Writes are account-scoped and quota-charged. Creating projects, webhooks, and agents lands in your Mem0 account and consumes its monthly add quota, so reads-first prompts are the safe shape.
ClawLink vs. building it yourself
The alternative to ClawLink is usually manual API key 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 Mem0 working from chat.
| Manual | ClawLink | |
|---|---|---|
| Credential handling | Collect, validate, store, and rotate the Mem0 API key yourself, then make sure every tool call uses the right account. | Users complete the hosted ClawLink setup once and the connected Mem0 account becomes available to the agent without you building credential management. |
| Ongoing maintenance | You own refresh logic, permission debugging, environment config, and every provider-specific edge case for Mem0. | 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 Mem0 actions to the runtime in a format your agent can reliably use. | 47 tools for Mem0 are already exposed through ClawLink, so the agent can read and act from chat immediately. |
ClawLink vs. Composio
Composio also exposes Mem0 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 Mem0 in the browser, and the 47 tools above work from chat. There is no SDK and no config file, and the Mem0 key you paste at setup is stored server-side rather than kept in your environment. Choosing between them? Read the full Composio alternatives comparison.
Troubleshooting
Hermes paired but still can't use Mem0
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 Mem0 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 Mem0 tools
Mem0 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 Mem0 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.
Mem0 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.
Mem0 returns 403 although the account shows as connected
The engines teach the cause list for this error and it is mostly account state, not connection state: a plan tier that does not include the endpoint, an expired or rotated key killing every consumer at once, a key pasted from the wrong environment, and an org or scope mismatch between the key's account and the resource. ChatGPT adds the shape that bites here: a user_id or agent_id scope mismatch, where the call carries an id the key's account does not own. The cause no engine teaches is the placeholder: an org, project, or agent id from documentation instead of from mem0_get_projects, which Mem0 answers as a permission error because the object is not in the connected scope. Have the agent list what the account can see before reconnecting.
Ask the agent to diagnose it:
Call mem0_get_projects and mem0_fetch_detailed_list_of_organizations. Tell me which orgs and projects this connection can reach, then quote the exact error and the id from the failed call. Do not retry it yet.Mem0 starts returning rate-limit or quota errors partway through a run
Mem0's limits are monthly add and retrieval caps per plan, so an agent doing a bulk import in one session is exactly the traffic shape that meets the add cap mid-run: everything succeeds, then the cap hits and further writes fail until the month resets or the plan changes. This is not a throttle to wait out. Have the agent report which calls failed and how many adds it has made this month, then decide whether the work can spread across the billing month or needs the plan raised. Reads and writes count separately, so a retrieval-heavy prompt is not helped by the add quota and vice versa.
Ask the agent to diagnose it:
Tell me which Mem0 calls failed, whether they were add or retrieval calls, and how many of each you have made in the current billing month. Quote the exact error text from the last failure.Mem0 tools are missing, or one tool name is not found
The fixes search results teach for this symptom assume a local MCP server: the old local mem0-mcp-server is deprecated in favor of the hosted mcp.mem0.ai/mcp, run npx mcp-add or hand-edit claude_desktop_config.json, then restart the client. None of that applies here, because there is no local config file in this setup. Two hosted-flow causes cover it: schemas load on demand, so the opening Mem0 call in a fresh session can arrive before the catalog and needs one retry, and the tool names here are the platform API's mem0_ names, not the MCP's names, so a name from the MCP docs fails as not-found even though the capability exists.
Ask the agent to diagnose it:
List the Mem0 tools you actually have access to. If there are none, retry once and tell me whether the second call worked. If some are missing, name one and I will give you the platform-API name for it.API key setup works but results look incomplete
Double-check that the API key for Mem0 has the right scopes or account access. A valid key can still be too limited for some reads or writes.
FAQ
Is there a Hermes Agent Mem0 integration?
Yes. ClawLink is the fastest way to connect Hermes to Mem0: link your Mem0 account once in the browser and Hermes Agent can call the Mem0 API through 47 ready-made tools — no custom code or token handling.
How do I connect Mem0 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 Mem0 in the dashboard and Hermes can use it from the next message — no config files, and the Mem0 key you paste is stored server-side instead of in your environment.
How long does it take to connect Mem0 to Hermes Agent?
About two minutes. Sign in, click Connect next to Mem0 in the dashboard, authenticate, and Hermes Agent can use it from the next chat message.
Why use ClawLink instead of wiring Mem0 up myself?
The alternative to ClawLink is usually manual API key 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 Mem0 working from chat.
What is the difference from `hermes memory setup`?
The flow every engine teaches stores a key in ~/.hermes/.env with config in ~/.hermes/mem0.json and exposes the memory tools Hermes ships natively: mem0_profile, mem0_search, and mem0_conclude. This connection is the Mem0 platform API instead: 47 tools covering organizations, projects, members, webhooks, agents and agent runs, memory records, semantic search, events, and exports, through the same Mem0 account. The key is not in any environment file because there is no local config file in this setup at all.
Does this still make sense now that Mem0 has Agent Mode and its own hosted MCP?
Honestly: mem0 init --agent self-provisions an API key in about five seconds, and Mem0's hosted MCP at mcp.mem0.ai/mcp exists, so keyless and serverless are no longer ours to claim. What neither of those gives you is the platform surface: Agent Mode answers the "without managing a key" intent with memory tools only, and the hosted MCP exposes Mem0's tools through one server. Here the same hosted model runs under your own Mem0 account and the agent gets 47 tools, the platform-API surface, with the pairing flow the only client-side setup. Pick on surface, not on keylessness.
What can the agent do beyond memory?
The memory tools are the core: mem0_add_new_memory_records, mem0_perform_semantic_search_on_memories, mem0_get_memories_by_entity, and mem0_get_memory_export. Around them sits the platform surface the engines never mention: mem0_get_projects and mem0_fetch_detailed_list_of_organizations for structure, mem0_get_project_members and mem0_add_organization_member for access, mem0_get_project_webhooks and mem0_create_webhook for plumbing, and mem0_create_a_new_agent and mem0_get_event_status_by_event_id for agent runs and their outcomes. That is the difference from the three-tool manual flow: the agent can administer the account it remembers through.
Which Mem0 plan limits apply to this connection?
Mem0's limits are monthly caps on add and retrieval requests, not per-minute throttles. The current tiers on mem0.ai/pricing: Hobby is 10,000 add and 1,000 retrieval requests per month, Starter is 50,000 and 5,000, and Pro is 500,000 add and 50,000 retrieval. The connection uses your Mem0 account's plan, so an agent bulk-writing memories in one session can meet the monthly add cap mid-run; the failure is a quota error, not a connection failure, and the fix is spreading the work or raising the plan, not reconnecting.
What should I be careful about with AI memory?
Retrieval surfaces stored memories into prompts, so the engines' safety answers all converge on the same rule: only store what you would let the model see. Memory poisoning and prompt injection via retrieved content are the taught risks, and redaction of sensitive values before storage is the taught practice. The connection's write surface matters here, mem0_add_new_memory_records writes into your account from chat, so a prompt that asks for an inventory of what is stored is a good first call rather than a scary one.
Hermes paired but still can't use Mem0
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.
Related
DataRobot
DataRobot is a machine learning platform that automates model building, deployment, and monitoring, enabling organizations to derive predictive insights from large datasets.
Chatbotkit tools
ChatBotKit is a platform that enables developers to build and manage AI-powered chatbots, offering comprehensive APIs and SDKs for seamless integration into applications.
ElevenLabs tools
Generate speech and voice cloning