Tools
The MCP tool surface
Every connected copilot gets the same 19 tools, reading and writing the same AI memory graph.
save_memory
Save a fact/preference/decision/task/reference, optionally linked to entities
search_memory
Semantic (vector) search over memories
save_episode
Record a raw interaction/event that memories can be derived from
list_episodes
List recorded episodes, filterable by time range/source
save_skill
Save a reusable procedure, optionally linked to entities
search_skills
Semantic (vector) search over skills, by task/situation (descriptions only)
list_skills
List saved skills, filterable by tag/source (descriptions only)
get_skill
Look up a skill by exact name or id
forget_skill
Soft-archive (default) or permanently delete a skill
save_adr
Record an architectural decision, optionally superseding an earlier one
search_adrs
Semantic (vector) search over ADRs, by problem or area
list_adrs
List the ADR log, filterable by status/tag/source
get_adr
Look up one ADR in full, by number or id
forget_adr
Soft-archive (default) or permanently delete an ADR
get_entity
Look up an entity plus everything that mentions or relates to it
relate_entities
Create a graph relation between two entities
forget_memory
Soft-archive (default) or permanently delete a memory
export_library
Export this library to a portable .memport.json bundle
import_library
Import a .memport.json bundle, merging or overwriting
The nine read tools — search_memory, list_episodes, search_skills, list_skills, get_skill, search_adrs, list_adrs, get_adr, get_entity — render their results as cards in hosts that support MCP Apps, instead of showing you the JSON your copilot reads. Lists come back as result cards, get_* as a detail view, paginated five at a time. The panel reads the host's own style variables and fonts, so its colors and typeface come from the client rather than an approximation of it. Claude Desktop, VS Code Copilot, Cursor and Goose render them; Claude Code isn't an MCP Apps host, so results stay as text there. The text block is unchanged and always first, so a host that doesn't render MCP Apps behaves exactly as it did. It's on by default; turn it off per client with an mcp-apps: 0 header next to library-id, or daemon-wide with MCP_APPS=0. The table itself hasn't changed since the ADR log brought it to 19, and it doesn't change with the storage engine either: a cross-driver test seeds the same fixture through embedded SurrealDB and through Postgres and asserts every read tool returns byte-identical output.
Configuration
- MEM_PORT_PORT
- 8787
- HTTP port
- MEM_PORT_HOST
- 127.0.0.1
- Interface to bind. Loopback is a security boundary, not a preference — binding anything else turns authentication on
- MEM_PORT_DATA_DIR
- OS app-data dir
- Where the embedded store and cached embedding model live
- MEM_PORT_DB_URL
- surrealkv://<data-dir>
- Embedded by default. A ws:// or wss:// URL selects hosted SurrealDB (server 3.0+); a postgres:// URL selects Postgres with pgvector
- MEM_PORT_DB_USER / MEM_PORT_DB_PASS
- none
- Credentials for a hosted SurrealDB server, which must be a root- or namespace-level user
- MEM_PORT_AUTH
- follows the bind
- off or required. Unset, it tracks MEM_PORT_HOST: off on loopback, required on any other interface
- MEM_PORT_ADMIN_USER / MEM_PORT_ADMIN_PASSWORD
- none
- Creates the first admin, and only while no admin exists. These are the credentials you sign in to /admin with
- MEM_PORT_PUBLIC_URL
- the Host header
- The URL the admin panel's docs page hands out in client config, for when a proxy rewrites Host to something internal
- MEM_PORT_EMBEDDING_MODEL
- Xenova/all-MiniLM-L6-v2
- Local embedding model id (reserved for future use)
- MEM_PORT_MODEL_CACHE_DIR
- <data-dir>/models
- Override the embedding model cache location
- MCP_APPS / MEM_PORT_MCP_APPS
- on
- Set to 0 to stop the read tools declaring an MCP Apps UI