Store a memory
memory_storePersist facts, decisions, lessons, or patterns for durable context retrieval. Writes to SQLite, optionally syncs to Obsidian vault. Handles duplicates via strict, warn, or off modes.
Instructions
Persist a fact, decision, lesson, or pattern so it can be recalled later by memory_search/memory_get or auto-injected into future sessions. Use for durable context (decisions, gotchas, preferences, recurring commands). For transient notes or duplicates, prefer memory_dedup_check first. Writes one SQLite row, queues an embedding (when enabled), and optionally creates/updates an Obsidian vault note. dedup="strict" refuses duplicates, "warn" stores with a warning, "off" bypasses.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short human-readable title (1 line). Used as the search label and as the vault note filename when promoted. | |
| content | Yes | The memory body in markdown. Wrap sensitive substrings in `<private>...</private>` tags to redact them from default reads. | |
| memory_type | No | Category tag: `fact`, `decision`, `lesson`, `pattern`, `preference`, `command`, etc. Drives auto-promotion and importance defaults via project policy. | fact |
| scope | No | Visibility scope: `project` (default, scoped to the project at `project_path`), `global` (all projects), or `team` (synced via git when sync is enabled). | project |
| project_path | No | Absolute filesystem path of the project this memory belongs to. Empty string defaults to the server's current working directory. | |
| tags | No | Free-form tag list, e.g. `["auth", "oauth2"]`. Project policies may require certain tags or ban others. | |
| importance | No | Importance score in [0, 1]. Higher values rank earlier in search and survive pruning longer. Default 0.5. | |
| supersedes_id | No | Optional id of an older memory that this one replaces. The older memory is marked superseded and de-prioritised in search. | |
| pin | No | If true, pin the memory so it is exempt from automatic pruning and ranks higher. | |
| persist_to_vault | No | If true, also write an Obsidian vault note. If omitted, the project's policy decides based on `memory_type`. | |
| vault_mode | No | `create` fails if the note exists; `create_or_update` (default) overwrites an existing note with the same title. | create_or_update |
| vault_kind | No | Optional vault subtype (e.g. `architecture`, `runbook`) used to pick a folder per `vault.kindFolders` config. | |
| vault_folder | No | Optional explicit vault subfolder, relative to the vault root. Overrides `vault_kind` routing. | |
| vault_note_title | No | Optional override for the vault note title. Defaults to `title` when empty. | |
| dedup | No | Per-call override for duplicate handling. Defaults to the server's `search.embeddings.dedupDefaultMode` when omitted. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | On success: `Memory stored with ID: <id>` (optionally followed by a vault-note path or a dedup `⚠` warning). On rejection: `Memory not stored: <reason>` explaining policy/dedup failure. |