Skip to main content
Glama

Remember a Fact

remember
DestructiveIdempotent

Persist a fact beyond the session by writing it to a .fafm file. Use a stable id to update or append facts for cross-session recall.

Instructions

Persist a fact past the session boundary — written to a .fafm file, not held in memory. Reusing an existing id replaces that fact's text in place (no duplicate); a new id appends. Facts are written verification_status: unverified.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesA stable key you choose for this fact — pass the same id later to recall or forget it. Exact match, case-sensitive, any string; keep it short and meaningful (e.g. "deploy-target", "db-url"). Reusing an id updates that fact rather than adding a second one.
textYesThe fact itself, as plain prose. Stored verbatim and returned as-is by recall.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.2
    • addedInput schema / properties / id / description
      Added value: +"A stable key you choose for this fact — pass the same id later to recall or forget it. Exact match, case-sensitive, any string; keep it short and meaningful (e.g. \"deploy-target\", \"db-url\"). Reusing an id updates that fact rather than adding a second one."
    • addedInput schema / properties / text / description
      Added value: +"The fact itself, as plain prose. Stored verbatim and returned as-is by recall."
  2. First observedv0.5.1

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description earns credit by explaining why: reusing an id overwrites that fact's text in place while a new id appends, and storage is a .fafm file rather than memory. It also discloses the side effect of tagging facts verification_status: unverified, which is not derivable from the schema or annotations.

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?

Three tight clauses, no padding, with the most decision-relevant information (persistence across sessions, overwrite-vs-append) front-loaded. Every sentence carries information an agent can act on.

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 a two-parameter, no-output-schema write tool with full annotation coverage, the description supplies storage location, overwrite semantics, and the unverified flag — enough to call it correctly. Return behavior is left unstated, but the tool plausibly returns nothing meaningful, so the gap is minor.

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 both id and text are already fully documented in the schema, including the id-reuse rule stated there as well. The description adds no new parameter-level detail (syntax, format, limits) beyond what the schema provides, so the baseline of 3 applies.

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?

States a specific verb and resource ('Persist a fact') plus the crucial scope distinction that it survives the session boundary via a .fafm file rather than memory. The id-reuse vs append semantics further pin down behavior. It does not name or contrast the related recall/forget siblings, so it falls short of the top mark.

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

Usage Guidelines3/5

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

Implies its place — persisting facts across sessions — but gives no explicit when-to-use vs when-not, and never references the sibling tools (recall, forget, save_context_card) that an agent must choose between. The id-reuse note is behavioral, not selection guidance.

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