Memos
What it does
Provides full CRUD operations on a self-hosted Memos instance through 5 MCP tools. Agents can create quick notes, search existing memos, update content or visibility, and delete memos they no longer need.
Inputs needed
- For creating: content (required), visibility (optional, defaults to PRIVATE)
- For listing: filter expression (optional), page size (optional)
- For get/update/delete: memo ID (required)
Prerequisites
openclaw-memos-mcp MCP server
This skill requires the openclaw-memos-mcp MCP server to be running. Before
using any memos_* tool, check if the tools are available. If not, tell the
user they need to add the MCP server to their configuration:
{
"mcpServers": {
"memos": {
"command": "npx",
"args": ["openclaw-memos-mcp"],
"env": {
"MEMOS_API_URL": "http://localhost:5230",
"MEMOS_TOKEN": "<your-access-token>"
}
}
}
}
Tell the user to:
- Replace
MEMOS_API_URLwith their Memos instance URL - Get an access token from Memos: Settings > Access Tokens > Create
- Replace
<your-access-token>with the token - Restart their MCP client after saving the configuration
Workflow
Creating a memo
Call memos_create with the content and optional visibility.
content: Markdown text. Supports#hashtagswhich Memos auto-extracts as tags.visibility:PRIVATE(default),PROTECTED(logged-in users), orPUBLIC(everyone).
Listing memos
Call memos_list to browse or search memos.
pageSize: Number of results (default 20).pageToken: For pagination, use thenextPageTokenfrom a previous response.filter: CEL filter expression. Examples:tag == "work"— memos tagged #workvisibility == "PUBLIC"— public memos onlycreator == "users/1"— memos by a specific user
Reading a specific memo
Call memos_get with the memo ID. The ID is the part after memos/ in the
resource name (e.g., if the name is memos/abc123, the ID is abc123).
Updating a memo
Call memos_update with the memo ID and the fields to change. Only specify
fields you want to update — unspecified fields remain unchanged.
content: New Markdown contentvisibility: New visibility levelpinned:trueto pin,falseto unpin
Deleting a memo
Call memos_delete with the memo ID. This is irreversible. Always confirm
with the user before deleting.
Guardrails
- Default visibility to
PRIVATE— never create public memos unless explicitly asked - Validate content is non-empty before creating
- Confirm with the user before deleting any memo
- On 401/403 errors, tell the user to check their
MEMOS_TOKEN - On connection errors, tell the user to check their
MEMOS_API_URL - When listing returns empty results, suggest the user check their filter or confirm the Memos instance has data