{% extends "settings_base.html" %}{% block title %}mcp{% endblock %} {% block heading %}Connect over MCP{% endblock %} {% block lede %}Point an agent at this workspace and it reads memory the way it reads a filesystem — no export, no copy, no separate index.{% endblock %} {% block settings %}
Mint a token on the tokens page, then:
uv tool install opendiff # once
claude mcp add opendiff -e OPENDIFF_TOKEN=<your token> -- \
opendiff mcp --remote {{ api_base }}
| tool | what it does |
|---|---|
| ls | list a directory; ls('') gives the roots · paged |
| cat | read one item, latest version or a pinned one |
| stat | metadata for any path |
| history | every version of one item, newest first |
| find | full-text search with customer / type / date filters · paged |
| read_many | batched read with partial success |
| unrouted | the routing queue · paged |
| sources | connector sync status |
Paged tools return {items, next_cursor}. A
next_cursor that is not null means the result is incomplete — pass
it back to get the next page.
publish_artifact appends a derived-memory document — an account
brief, a breach alert — to this workspace's home page,
and artifacts lists what is already there. Publishing the same
slug twice appends a version rather than overwriting, so a reviewer can always
see what moved.
This is a stand-in. The shape it is standing in for is a skill, published from MCP, running on a schedule over memory and writing its result here on its own. When that lands it calls the same endpoint, and the by-hand tool goes away.