Skip to content

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.

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

List inbound links to a page.

Use when you need to know who references this page — context, authority, or co-mentions.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

Memory statistics.

Use when sizing the memory (page count, embeddings count, gaps), confirming the active embedding model, or sanity-checking after a major operation.

→ reference

List collection status.

Use when deciding whether to qualify slugs, when investigating a write that returned CollectionRestoringError, or when reporting status to the user.

→ reference

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.

→ reference

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.

→ reference

Mark an action_item page 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).

→ reference

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.

→ reference

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.

→ reference

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.

→ reference

Destroy a namespace and all pages within it.

Use when a partition is no longer needed. Irreversible — confirm with the user first.

→ reference

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