Skip to main content
Glama

store_memory

Save durable memories—stable preferences, identity facts, project entities, reusable patterns, and solved cases—so agents can recall them across future sessions.

Instructions

Store a durable memory when the user shares a stable preference, identity fact, project entity, reusable pattern, or solved case that should survive future windows. Do not use this for transient task state; use it only for memory worth keeping.

Input Schema

NameRequiredDescriptionDefault
tagsNoOptional tags
textYesMemory text to store
scopeYesRequired scope such as project:recallnest or session:abc123
sourceNoHow this memory was capturedmanual
categoryNoDurable memory categoryevents
topicTagNoOptional topic tag for intra-scope partitioning (e.g. 'auth', 'deploy', 'testing'). Auto-detected if omitted.
triggersNo写入时预演触发器:这条记忆「她以后会怎么问起」的 2–5 句口语问法,各说一个角度、别互为变体、别复述正文。只参与召回、不进正文。scope 为 memory:pivot 时必填(§5.3)。例:["那个跑分要不要再跑一次", "别人的榜我们要不要也去排个名"]
dependsOnNoOptional freshness dependencies (borrowed). Declare what this memory depends on so recall shows a cheap validity verdict (exact/compatible/uncertain/invalid). Items: {kind:'file'|'git-rev', ref, expected?}. file → ref=path, expected=mtime-ms string; git-rev → ref=repo path, expected=commit hash (short ok). expected may be an array: first=exact, rest=compatible set. Omit expected for existence-only checks.
eventTimeNoOptional event time: when the event actually happened (ISO date or ms), distinct from storage time.
confidenceNoOptional confidence override: number (0-1) or {score, reliability}. Auto-assigned from source if omitted.
importanceNoImportance score from 0 to 1
validUntilNoOptional expiration: ISO date string or ms timestamp. Memory will be deprioritized after this time.
privacyTierNoPrivacy tier: ephemeral (auto-expire, no KG), private (persist, no KG), durable (default), shared (cross-scope)durable
canonicalKeyNoOptional stable key for merge/update semantics

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv4.0.0
    • addedInput schema / properties / triggers
      Added value: +{
      +  "description": "写入时预演触发器:这条记忆「她以后会怎么问起」的 2–5 句口语问法,各说一个角度、别互为变体、别复述正文。只参与召回、不进正文。scope 为 memory:pivot 时必填(§5.3)。例:[\"那个跑分要不要再跑一次\", \"别人的榜我们要不要也去排个名\"]",
      +  "items": {
      +    "maxLength": 200,
      +    "minLength": 2,
      +    "type": "string"
      +  },
      +  "maxItems": 6,
      +  "type": "array"
      +}
  2. Addedv2.6.0
  3. Removedv2.5.4
  4. Changed6 schema fields changedv2.3.0
    • addedInput schema / properties / confidence
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 1,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "reliability": {
      +          "enum": [
      +            "direct",
      +            "inferred",
      +            "hearsay"
      +          ],
      +          "type": "string"
      +        },
      +        "score": {
      +          "maximum": 1,
      +          "minimum": 0,
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "score"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "description": "Optional confidence override: number (0-1) or {score, reliability}. Auto-assigned from source if omitted."
      +}
    • addedInput schema / properties / eventTime
      Added value: +{
      +  "description": "Optional event time: when the event actually happened (ISO date or ms), distinct from storage time.",
      +  "type": [
      +    "string",
      +    "number"
      +  ]
      +}
    • addedInput schema / properties / privacyTier
      Added value: +{
      +  "default": "durable",
      +  "description": "Privacy tier: ephemeral (auto-expire, no KG), private (persist, no KG), durable (default), shared (cross-scope)",
      +  "enum": [
      +    "ephemeral",
      +    "private",
      +    "durable",
      +    "shared"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / source / enum
      Previous value: -[
      -  "manual",
      -  "agent",
      -  "api"
      -]New value: +[
      +  "manual",
      +  "agent",
      +  "api",
      +  "session_distill",
      +  "conversation_import"
      +]
    • addedInput schema / properties / topicTag
      Added value: +{
      +  "description": "Optional topic tag for intra-scope partitioning (e.g. 'auth', 'deploy', 'testing'). Auto-detected if omitted.",
      +  "maxLength": 60,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / validUntil
      Added value: +{
      +  "description": "Optional expiration: ISO date string or ms timestamp. Memory will be deprioritized after this time.",
      +  "type": [
      +    "string",
      +    "number"
      +  ]
      +}
  5. First observedv1.0.0

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it delivers only the durability/retention intent ("should survive future windows", "memory worth keeping"). It says nothing about deduplication or merge behavior, what a scope collision does, or how storage affects shared/cross-scope readers — meaningful gaps for a write tool. The persistence signal is real but partial.

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

Conciseness4/5

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

Two sentences, tightly written, with the positive use case front-loaded and the negative case in second position — good ordering. Nothing is padded, though the enumerated trigger list is slightly long relative to the space given to operational concerns.

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

Completeness3/5

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

The 100%-covered schema carries the parameter documentation, so the description does not need to restate field meanings, and it correctly captures the central when-to-store decision. But for a 14-parameter tool with no annotations and no output schema, the description is silent on scope semantics, privacy tiers, and the triggers/enum conditions that materially change how a call succeeds.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all 14 parameters. The description's categories (preferences, identity facts, entities, patterns, cases) loosely foreshadow the category enum, adding a little interpretive value, but it never clarifies scope syntax, importance, privacyTier, or the conditional triggers requirement that only the schema documents.

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

Purpose4/5

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

The description pairs a specific verb ("Store") with a specific resource ("durable memory") and enumerates the kinds of content it holds: stable preferences, identity facts, project entities, patterns, and solved cases. An agent can tell this creates a persistent record, but the definition never names the closest siblings (store_case, store_workflow_pattern, auto_capture, batch_store) that also write memory, so differentiation relies on inference.

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

Usage Guidelines4/5

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

It gives both a positive trigger list (what qualifies as memory-worthy) and an explicit exclusion ("Do not use this for transient task state"), which is more than most definitions offer. However, it stops short of routing to alternatives — an agent choosing among store_memory, store_case, store_workflow_pattern, and auto_capture gets no comparative guidance.

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