Skip to main content
Glama

sage_remember

Store durable facts or session observations in persistent agent memory, and correct outdated entries by passing the old memory ID.

Instructions

Store a memory in SAGE. When domain is omitted, app-v23 uses this agent's approved owned home domain (older nodes retain the legacy general default); an explicit domain is never remapped. For a correction, pass replaces_memory_id here instead of calling sage_forget first: SAGE stores and verifies the replacement before it challenges the old memory, so interruption can leave both records but can never leave neither. IMPORTANT: Use type='fact' (confidence 0.95) for durable knowledge that should persist long-term and be visible across all agents — infrastructure details (IPs, hostnames, SSH commands, URLs, ports), architecture decisions, verified configurations, credentials paths, and server specs. Use type='observation' for ephemeral session context. Facts survive confidence decay and cross provider boundaries; observations do not.

Input Schema

NameRequiredDescriptionDefault
tagsNoUser-defined labels for this memory (e.g. 'important', 'project-x')
typeNoMemory type. When omitted, a new memory defaults to observation and a correction inherits the original type. fact (0.95+): verified durable knowledge — IPs, hostnames, architecture decisions, configs, infrastructure. observation (0.80): session-level context — what happened, what was discussed. inference (0.60): hypotheses and conclusions. task: actionable items.
domainNoDomain tag. When omitted, a correction inherits its source domain and a new memory uses this app-v23 agent's owned home domain (legacy nodes use general). Explicit values are never silently remapped.
contentYesThe memory content to store
evidenceNoOptional source text this memory is based on (a quote, log line or document excerpt, up to 32 KiB). It stays on this node and never enters the chain; a node running the memory gate checks that it supports the memory as stated. Not for tasks.
confidenceNoConfidence score 0-1. When omitted, defaults to 0.90 for tasks (including inherited correction types), otherwise 0.80. Explicit values are preserved.
replacement_reasonNoOptional audit reason recorded when the replaced memory is challenged.
replaces_memory_idNoOptional committed memory ID this content corrects. The replacement is committed first; only then is the old memory challenged.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv11.23.24
    • removedInput schema / properties / confidence / default
      Removed value: -0.8
    • changedInput schema / properties / confidence / description
      Previous value: -"Confidence score 0-1"New value: +"Confidence score 0-1. When omitted, defaults to 0.90 for tasks (including inherited correction types), otherwise 0.80. Explicit values are preserved."
    • addedInput schema / properties / confidence / maximum
      Added value: +1
    • addedInput schema / properties / confidence / minimum
      Added value: +0
    • removedInput schema / properties / type / default
      Removed value: -"observation"
    • changedInput schema / properties / type / description
      Previous value: -"Memory type. A correction inherits the original type when omitted. fact (0.95+): verified durable knowledge — IPs, hostnames, architecture decisions, configs, infrastructure. observation (0.80): session-level context — what happened, what was discussed. inference (0.60): hypotheses and conclusions. task: actionable items."New value: +"Memory type. When omitted, a new memory defaults to observation and a correction inherits the original type. fact (0.95+): verified durable knowledge — IPs, hostnames, architecture decisions, configs, infrastructure. observation (0.80): session-level context — what happened, what was discussed. inference (0.60): hypotheses and conclusions. task: actionable items."
  2. Changed1 schema field changedv11.23.11
    • addedInput schema / properties / evidence
      Added value: +{
      +  "description": "Optional source text this memory is based on (a quote, log line or document excerpt, up to 32 KiB). It stays on this node and never enters the chain; a node running the memory gate checks that it supports the memory as stated. Not for tasks.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changedv11.16.2
    • removedInput schema / properties / domain / default
      Removed value: -"general"
    • changedInput schema / properties / domain / description
      Previous value: -"Domain tag (e.g. general, security, code). A correction inherits the original domain when omitted."New value: +"Domain tag. When omitted, a correction inherits its source domain and a new memory uses this app-v23 agent's owned home domain (legacy nodes use general). Explicit values are never silently remapped."
  4. Addedv11.14.2
  5. Removedv11.13.8
  6. Addedv11.13.0
  7. Removedv11.9.2
  8. Addedv8.1.0
  9. Removedv8.0.0
  10. Addedv7.6.1
  11. Removedv7.5.9
  12. Changed1 schema field changedv6.6.9
    • addedInput schema / properties / type / description
      Added value: +"Memory type. fact (0.95+): verified durable knowledge — IPs, hostnames, architecture decisions, configs, infrastructure. observation (0.80): session-level context — what happened, what was discussed. inference (0.60): hypotheses and conclusions. task: actionable items."
  13. First observedv4.5.2

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden and does so richly: it discloses the commit-then-challenge ordering and the interruption invariant ('can leave both records but can never leave neither'), domain defaulting rules, confidence-decay survival, and the fact that evidence stays node-local and never enters the chain. These are non-obvious operational traits an agent could not infer from the schema.

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?

Front-loaded with purpose, then scoping, then the replacement workflow, with the type guidance clearly marked IMPORTANT. It is long but nearly every sentence carries operational meaning; the only mild cost is duplication of domain and replacement-ordering details that already live in the schema.

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

Completeness4/5

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

For an 8-parameter mutation tool with no output schema, the description covers defaults, replacement safety, domain resolution, and type/confidence guidance thoroughly. The one gap is that it never indicates what is returned (e.g., the committed memory ID an agent would need to later reference), which matters for a tool that feeds replaces_memory_id.

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% and the schema already documents defaults, the enum semantics, domain inheritance, and the replacement ordering, so the baseline is 3. The description mostly restates this, adding only the routing nuance for replaces_memory_id and example categories for type, which is marginal added meaning over structured data.

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?

Opens with a specific verb+resource ('Store a memory in SAGE') and immediately differentiates itself from the sibling sage_forget by prescribing replaces_memory_id instead of a forget-first workflow. An agent can tell exactly what this tool does versus its siblings without opening any schema.

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?

Gives explicit when-to-use rules: type='fact' for durable infrastructure knowledge vs type='observation' for ephemeral session context, with the consequence (facts survive decay and cross provider boundaries; observations do not). It also names the alternative path for corrections ('instead of calling sage_forget first'), which is precisely a routing decision.

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