← All tools

Memory

Writing, reading, searching and tagging what Muninn remembers. The core of the system: everything else is built on these.

14Tools
47Parameters
2026-09-03Generated

muninn_memory_add

Writes 5 parameters

Store a new memory with text content and tags. Returns a compact {success, memoryId, length} — length is the stored character count, your self-verify signal (the full body is never echoed; you just sent it). Pass occurredAt only when logging something that happened at a different time than now (e.g. backfilling a past conversation) — otherwise it defaults to now.

ParameterTypeRequiredDescription
text string Required The memory content to store
tags string[] default [] Tags for categorization e.g. ['session-state'], ['person-log', 'sarah']
occurredAt string ISO 8601 datetime of when the event actually happened, if different from now. Used for chronological ordering of logs. Defaults to now.
project string Project slug to scope this memory (e.g. 'writing-article'). Omit for user-global memories that apply in all projects.
preview string 1–2 sentence summary of this memory written by Claude before calling this tool. If omitted, falls back to an 80-char text truncation.

muninn_memory_anchor_replace

Writes 5 parameters

Replace the span between beginAnchor and endAnchor (inclusive) with newText. Cheaper than resending the whole body when editing a large block — send only the two anchors and the replacement. Both anchors must appear EXACTLY ONCE in the current body; the server rejects if either is missing or appears more than once (never guesses). beginAnchor must precede endAnchor. To delete a span: pass newText as empty string. Returns {id, length} as self-verify. memoryId accepts a short-form 8-char prefix. Works on artifacts too (artifactId IS memoryId) — a published artifact's public link is refreshed automatically. Optional `expectedRev`: the `rev` from the read you based these anchors on — the write is REJECTED (nothing written) if the body moved since. Omit for a read-then-immediately-write.

ParameterTypeRequiredDescription
memoryId string Required Memory ID to edit (full UUID or unique 8-char prefix)
expectedRev integer The `rev` from the read you based this edit on. Rejects the write if the body has changed since. Omit to skip the check.
beginAnchor string Required Exact string marking the START of the span to replace — must appear exactly once
endAnchor string Required Exact string marking the END of the span to replace — must appear exactly once and after beginAnchor
newText string Required Replacement text for the entire span (beginAnchor through endAnchor inclusive). Pass empty string to delete the span.

muninn_memory_append

Writes 4 parameters

Append text to the END of a memory's body. Cheaper than resending the whole body — only send what's new. Use for growing changelogs, journals, session-state, or any memory that accumulates by accretion. separator defaults to '\n\n' (a blank line). Returns {id, length} as self-verify. memoryId accepts a short-form 8-char prefix. Works on artifacts too (artifactId IS memoryId) — a published artifact's public link is refreshed automatically. Optional `expectedRev`: the `rev` from your last read of this memory — the append is REJECTED (nothing written) if the body moved since, rather than landing on top of someone else's entry. Omit for a read-then-immediately-write, or when appending blind.

ParameterTypeRequiredDescription
memoryId string Required Memory ID to append to (full UUID or unique 8-char prefix)
expectedRev integer The `rev` from the read you based this append on. Rejects the write if the body has changed since. Omit to skip the check.
text string Required Text to append
separator string default "\n\n" String inserted between the existing body and the new text. Default: '\n\n' (blank line).

muninn_memory_delete

Writes Destructive 1 parameter

Permanently delete a memory by ID from all storage layers.

ParameterTypeRequiredDescription
memoryId string Required The memory ID to delete

muninn_memory_get

Read only 1 parameter

Retrieve a single memory by its ID. Accepts a short-form ID (a prefix of the full UUID) — it is resolved to the full ID first. Also returns `rev`, the body's revision number (null if never indexed): pass it back as `expectedRev` on a later muninn_memory_update / _anchor_replace / _append and that write FAILS instead of clobbering an edit someone made in between. Only worth carrying when you read now and write later; a read-then-immediately-write needs nothing.

ParameterTypeRequiredDescription
memoryId string Required The memory ID to retrieve (full UUID or a unique prefix of it)

muninn_memory_list

Read only 3 parameters

List all memories for the current user with optional pagination. Use muninn_memory_list_by_tag for tag filtering or muninn_memory_search for semantic search.

ParameterTypeRequiredDescription
limit integer default 50 Maximum number of memories to return
cursor string Pagination cursor from a previous response
project string Project slug to filter results. Returns global + project-scoped memories. Omit to return all memories.

muninn_memory_list_by_tag

Read only 3 parameters

Find memories by exact tag match using the D1 tag index. All specified tags must be present (AND logic). Use for session-state, carryover, person profiles, project logs etc.

ParameterTypeRequiredDescription
tags string[] Required Tags to filter by — all must match e.g. ['carryover'] or ['person-log', 'sarah']
limit integer default 100 Maximum number of results
project string Project slug to filter results. Returns global + project-scoped memories. Omit to return all memories.

muninn_memory_list_tags

Read only 1 parameter

List every distinct tag for the current user with how many memories carry it, most-used first. The vocabulary/discovery counterpart to tag search — answers 'was it github-mirror or mirror-github?' in one call. Pass a project to scope counts to that project (plus global).

ParameterTypeRequiredDescription
project string Project slug to scope counts. Returns global + project-scoped. Omit for all.

muninn_memory_query

Read only 3 parameters

Query memories with composable filters: fetch by specific IDs, OR-tag match, AND-tag match, and tag exclusion. id and tag clauses are intersected — a memory must satisfy all provided clauses. Use for bundle content audits, convention checks, or any multi-condition fetch. IDs accept full UUIDs or unique 8-char prefixes; ambiguous/missing prefixes are reported in errors[], never silently dropped.

ParameterTypeRequiredDescription
id string[] Fetch these specific memory IDs (full UUIDs or unique 8-char prefixes).
tag object
limit integer default 100

muninn_memory_search_tags

Read only 3 parameters

Find memories by PARTIAL tag match — each pattern matches any tag CONTAINING it (substring, case-insensitive). Semantics: OR within a pattern, AND across patterns — e.g. ['brd','mirror'] finds memories that have some brd-ish tag AND some mirror-ish tag. Use when you don't recall the exact tag ('mirror' → github-mirror, gdrive-mirror). For exact tags use muninn_memory_list_by_tag; to see the tag vocabulary use muninn_memory_list_tags.

ParameterTypeRequiredDescription
patterns string[] Required Substring patterns, e.g. ['mirror'] or ['brd', 'mirror']. Each matches any tag containing it.
limit integer default 100 Maximum number of results
project string Project slug to filter results. Returns global + project-scoped memories. Omit to search all.

muninn_memory_tag

Writes 3 parameters

Add and/or remove tags on a memory WITHOUT touching its text. Pass deltas, not the full list: add:[...] inserts (deduped), remove:[...] strips. NEVER regenerates the embedding (text is untouched), and you don't resend the existing tags or the body — so this is far cheaper than muninn_memory_update for a tag-only change. Returns compact {id, tags} with the resulting tag list. Use muninn_memory_update instead only when you also need to change text/project/decay, or to REPLACE the whole tag list wholesale. memoryId accepts a short-form 8-char prefix.

ParameterTypeRequiredDescription
memoryId string Required The memory ID to retag (full UUID or unique 8-char prefix)
add string[] Tags to add (deduped against existing). Omit if only removing.
remove string[] Tags to remove. Omit if only adding.

muninn_memory_tag_many

Writes 3 parameters

Apply tag adds and/or removes across MANY memories in one call. Body and embeddings are untouched. Use for project renames, bulk re-tagging, or applying a convention to a whole set. memoryIds accept full UUIDs or unique 8-char prefixes. Returns per-id results and any resolution errors.

ParameterTypeRequiredDescription
memoryIds string[] Required Memory IDs to retag (full UUIDs or unique 8-char prefixes)
add string[] Tags to add to each memory (deduped against existing)
remove string[] Tags to remove from each memory

muninn_memory_update

Writes 9 parameters

Update an existing memory's text, tags, decay score, occurredAt, or project. memoryId may be a short-form (8-char) prefix. Two ways to change text: pass `text` to replace the WHOLE body, OR pass `replacements:[{old,new}]` for surgical find-and-replace — each `old` must match EXACTLY ONCE or the whole update is rejected atomically (nothing is written), so a two-line edit to a long memory costs one pair instead of resending thousands of words. Regenerates the embedding ONLY if text actually changes. tags REPLACES the whole list. Returns a compact {id, tags, project, updatedAt, embeddingRegenerated, length} — length is the stored char count, your self-verify signal (the body is never echoed back). When you used replacements, the result also carries replacements:<count> so you can confirm how many spots were hit. For a tags-only edit, prefer muninn_memory_tag. This is also how you EDIT AN ARTIFACT'S BODY — an artifact's artifactId IS its memoryId; there is no separate muninn_artifact_update. If the artifact is currently published, its public link is refreshed automatically. Optional `expectedRev`: pass the `rev` your last muninn_memory_get / muninn_artifact_get returned and the write is REJECTED (nothing written) if someone changed the body since you read it, instead of silently overwriting them. Omit it when you read and write in the same breath.

ParameterTypeRequiredDescription
memoryId string Required The memory ID to update (full UUID or unique 8-char prefix)
expectedRev integer The `rev` from the read you based this edit on. Rejects the write if the body has changed since. Omit to skip the check.
text string New text content — replaces the WHOLE body. Mutually exclusive with replacements.
replacements object[] Surgical find-and-replace pairs applied in order. Each `old` must match exactly once or the entire update is rejected (atomic). Use instead of `text` to edit a few lines of a long memory cheaply.
tags string[] New tags (replaces existing tags)
decayScore number New decay score between 0 and 1
occurredAt string Corrected ISO 8601 datetime of when the event actually happened. Used for chronological ordering.
project string New project slug. Pass empty string '' to clear back to global. Omit to leave unchanged.
preview string Updated 1–2 sentence summary. Pass when text changed. If omitted, existing preview is preserved.

← Back to all 70 tools