For agents
Tool catalog
All twenty-six memory_* tools, annotated with "use when" guidance for agents.
This is a curated index over the MCP tool reference, shaped for agents deciding which tool to call. Each entry has a one-line purpose, the trigger conditions, and the failure modes you’ll encounter.
For the exact parameter schemas, follow the link in each section.
Reading
Section titled “Reading”memory_get
Section titled “memory_get”Read a page by slug.
Use when the user names a page directly, or when you need the canonical content of a slug another tool returned.
Failure modes NotFound (slug doesn’t exist), Ambiguity (multiple collections have it). Resolve ambiguity by qualifying the slug.
memory_search
Section titled “memory_search”FTS5 keyword search.
Use when you have exact tokens. Faster than memory_query. The right call when the user uses a proper noun, a code identifier, or a quoted phrase.
Failure modes none specific; an empty result set is not an error.
memory_query
Section titled “memory_query”Hybrid semantic + FTS5 query.
Use when the user asks a natural-language question, when paraphrase tolerance matters, or when the right page might be worded differently from the query.
Pass depth: "auto" when you need assembled context to drop into an LLM prompt. Otherwise leave depth unset for raw ranked results.
memory_rehydrate
Section titled “memory_rehydrate”Reverse outbound redaction tokens back to originals (this session).
Use when a redacted read returned tokens like <EMAIL_1> and you need the original value to act on (e.g. to actually send that email). Reversal uses this connection’s in-memory session map and stays entirely local; unknown tokens pass through untouched. Pairs with the redact option on memory_query / memory_search / memory_get.
memory_list
Section titled “memory_list”List pages with filters.
Use when you want everything of a type (page_type: "person"), everything in a wing (wing: "companies"), or a sample of an attached collection.
Failure modes none.
memory_timeline
Section titled “memory_timeline”Show timeline entries for a page.
Use when you need history (when did X happen?), evidence for an assertion, or to understand how the compiled truth was synthesized.
memory_backlinks
Section titled “memory_backlinks”List inbound links to a page.
Use when you need to know who references this page — context, authority, or co-mentions.
memory_graph
Section titled “memory_graph”N-hop neighbourhood graph.
Use when the user asks “who’s connected to X?” or you want to find pages two hops away that you wouldn’t otherwise retrieve. Default depth: 2. Set temporal: "all" to include closed intervals.
Writing
Section titled “Writing”memory_put
Section titled “memory_put”Create or update a page.
Use when you have material to commit. Always read first if updating; pass expected_version to avoid lost updates.
Failure modes Conflict (OCC mismatch — re-fetch and rebase), CollectionReadOnlyError, CollectionRestoringError, InvalidParams for slug or content validation.
memory_link
Section titled “memory_link”Create a typed temporal link.
Use when you’ve found or established a relationship between two pages. Use valid_from and valid_until whenever the relationship has a time bound — this is what makes graph traversal time-aware.
Failure modes NotFound (one endpoint doesn’t exist), collection write-gates.
memory_link_close
Section titled “memory_link_close”Close a temporal link interval.
Use when a relationship ends (someone left a company, a project closed). Prefer this over removing the link — closed intervals are still queryable history.
memory_tags
Section titled “memory_tags”List, add, remove tags.
Use when you want to mark a page for later retrieval by category. add and remove are repeatable arrays; an empty call (no add/remove) lists current tags.
memory_raw
Section titled “memory_raw”Store raw structured data (API responses, JSON).
Use when running an enrich workflow — store the upstream API’s response intact, then extract facts into compiled truth and assertions in a separate write. One row per (slug, source) unless overwrite: true.
Intelligence
Section titled “Intelligence”memory_check
Section titled “memory_check”Run contradiction detection.
Use when you’ve just written new material that may conflict with existing assertions, or as a periodic maintenance pass. Pass slug to check one page; omit to scan globally.
memory_gap
Section titled “memory_gap”Log a knowledge gap (privacy-safe).
Use when memory_query returns weak results, or when the user asks something the memory demonstrably cannot answer. By default stores only the SHA-256 hash. See Sensitivity contract before escalating.
memory_gaps
Section titled “memory_gaps”List knowledge gaps.
Use when triaging the user’s open questions, or as the work queue for a research skill. resolved: false (default) returns unresolved gaps only.
memory_gap_resolve
Section titled “memory_gap_resolve”Mark a knowledge gap resolved by the page that answered it.
Use when you’ve answered a previously-logged gap (from memory_gaps) by writing or finding the page that covers it. Pass the gap id and the answering slug; the gap flips to resolved and drops out of the work queue.
Stats and collections
Section titled “Stats and collections”memory_stats
Section titled “memory_stats”Memory statistics.
Use when sizing the memory (page count, embeddings count, gaps), confirming the active embedding model, or sanity-checking after a major operation.
memory_collections
Section titled “memory_collections”List collection status.
Use when deciding whether to qualify slugs, when investigating a write that returned CollectionRestoringError, or when reporting status to the user.
Conversation capture
Section titled “Conversation capture”memory_add_turn
Section titled “memory_add_turn”Append a turn to a conversation session.
Use when capturing live conversation content for later extraction. Batch turns under a stable session_id; content may contain Markdown horizontal rules safely.
memory_close_session
Section titled “memory_close_session”Close a session and queue it for knowledge extraction.
Use when the conversation is over and its turns should be distilled into pages. Idempotent: calling it again reports the current queue position without re-enqueuing.
memory_close_action
Section titled “memory_close_action”Mark an
action_itempage as done or cancelled.
Use when the user completes or drops a tracked action item.
Failure modes KindError (page is not an action_item), Conflict (OCC violation).
memory_correct
Section titled “memory_correct”Start a guided fact-correction dialogue on a page.
Use when the user says a stored fact is wrong. Returns a correction_id plus a confirmation prompt; do not write the change directly with memory_put.
memory_correct_continue
Section titled “memory_correct_continue”Advance or abandon an open correction dialogue.
Use when responding to the prompt returned by memory_correct. Set abandon: true to discard the dialogue without writing changes.
Namespaces
Section titled “Namespaces”memory_namespace_create
Section titled “memory_namespace_create”Create an isolated namespace scope.
Use when partitioning memory per project or per client. An optional ttl_hours auto-destroys the namespace and its pages after the TTL elapses.
memory_namespace_destroy
Section titled “memory_namespace_destroy”Destroy a namespace and all pages within it.
Use when a partition is no longer needed. Irreversible — confirm with the user first.
Decision flowchart
Section titled “Decision flowchart”A rough decision tree for “which tool should I call first?”:
User intent → tool
"Find a thing" → memory_search (exact) | memory_query (semantic)"Know about X" → memory_get (if slug known) | memory_query"What's connected" → memory_graph | memory_backlinks"What changed" → memory_timeline | memory_check"Capture this" → memory_put (always after a memory_get for updates)"Note a relationship" → memory_link"I can't find Y" → memory_gap (then memory_gaps to confirm logged)"How big / what model" → memory_stats