Update Memory
vault_update_memoryAppend a dated entry to a memory file section. Records user preferences, principles, opinions, or facts with newest-first ordering and idempotent writes.
Instructions
Append a dated entry to a section of a About Me/ memory file. The server prefixes the date automatically ("- YYYY-MM-DD: entry text") and inserts newest-first by default. Idempotent — an exact duplicate (same date + text in the same section) is a no-op, so retrying a timed-out call is safe. Memory files are append-only by default: when a preference changes, append the new state (newest wins) rather than deleting the old one. A file may declare entry-policy: living in frontmatter (surfaced by vault_list_memory_files) — a current-state file where pruning expired entries is expected maintenance rather than a violation.
Example: vault_update_memory({ file: "Opinions", section: "Code patterns (newest first)", entry: "Prefer immutable data structures" })
When to use: Recording a new preference, principle, opinion, or fact about the user. Call vault_list_memory_files first and reuse existing file and section names so entries stay grouped. Prefer vault_write_note for creating non-memory notes. A missing file or section is created automatically (new sections get "(newest first)" appended; new files get a placeholder scope callout to fill in via vault_replace_in_note).
Parameters:
options.date — ISO YYYY-MM-DD, defaults to today (server timezone).
options.position — "top" (default, newest-first) inserts above existing entries; "bottom" appends below them.
Obsidian syntax: Entry text is Obsidian Flavored Markdown. Watch for: #word = tag, [[ = wikilink. Escape with # or backticks when unintentional.
Errors:
"refusing memory write: … would shrink content" — safety guard for diverged on-disk content. Re-read with vault_get_memory before retrying.
"entry must be a single line" — memory entries are single dated bullets; collapse newlines or append multiple entries.
"section must be a single line" — section names become H2 headings; remove line breaks.
"date must be a real ISO calendar date" — options.date only accepts an existing calendar date in bare YYYY-MM-DD form (e.g. "2026-07-02"), not a timestamp.
Returns: Confirmation message (notes when an identical entry already existed and nothing was written).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Memory file name without .md (e.g. "Principles") | |
| entry | Yes | Raw entry text — a single line (newlines are rejected); the server prepends "- **YYYY-MM-DD**: " automatically. Do not include the date or bullet prefix. | |
| options | No | Optional date and position overrides | |
| section | Yes | H2 section heading (e.g. "Decision heuristics (newest first)"). Matched case-insensitively, with or without the "(newest first)" suffix. |