Skip to main content
Glama

Store a memory

memory_store

Persist 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

TableJSON Schema
NameRequiredDescriptionDefault
titleYesShort human-readable title (1 line). Used as the search label and as the vault note filename when promoted.
contentYesThe memory body in markdown. Wrap sensitive substrings in `<private>...</private>` tags to redact them from default reads.
memory_typeNoCategory tag: `fact`, `decision`, `lesson`, `pattern`, `preference`, `command`, etc. Drives auto-promotion and importance defaults via project policy.fact
scopeNoVisibility scope: `project` (default, scoped to the project at `project_path`), `global` (all projects), or `team` (synced via git when sync is enabled).project
project_pathNoAbsolute filesystem path of the project this memory belongs to. Empty string defaults to the server's current working directory.
tagsNoFree-form tag list, e.g. `["auth", "oauth2"]`. Project policies may require certain tags or ban others.
importanceNoImportance score in [0, 1]. Higher values rank earlier in search and survive pruning longer. Default 0.5.
supersedes_idNoOptional id of an older memory that this one replaces. The older memory is marked superseded and de-prioritised in search.
pinNoIf true, pin the memory so it is exempt from automatic pruning and ranks higher.
persist_to_vaultNoIf true, also write an Obsidian vault note. If omitted, the project's policy decides based on `memory_type`.
vault_modeNo`create` fails if the note exists; `create_or_update` (default) overwrites an existing note with the same title.create_or_update
vault_kindNoOptional vault subtype (e.g. `architecture`, `runbook`) used to pick a folder per `vault.kindFolders` config.
vault_folderNoOptional explicit vault subfolder, relative to the vault root. Overrides `vault_kind` routing.
vault_note_titleNoOptional override for the vault note title. Defaults to `title` when empty.
dedupNoPer-call override for duplicate handling. Defaults to the server's `search.embeddings.dedupDefaultMode` when omitted.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
messageYesOn 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.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=false etc.), the description discloses that the tool writes one SQLite row, queues an embedding, and optionally creates/updates an Obsidian vault note. It also details dedup behavior and pin/pruning effects, adding significant behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences that front-load the core purpose and usage guidance, followed by a clear summary of internal operations. No redundancy; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 15 parameters with 100% schema coverage, plus an output schema (implied by context), the description covers all essential aspects: what it does, when to use it, side effects, and parameter variants. It is complete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for all 15 parameters. The description adds overarching context about dedup modes and vault interactions, but per-parameter details are already covered in the schema. Slight extra value justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool persists facts, decisions, lessons, or patterns for later recall, and distinguishes it from siblings like memory_search, memory_get, and memory_dedup_check by mentioning their specific roles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to use memory_dedup_check first for transient notes or duplicates, and explains the dedup parameter options (strict, warn, off) for handling duplicates, providing clear guidance on when to use this tool vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lfrmonteiro99/memento-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server