Skip to main content
Glama

remember_fact

Save a durable training fact (constraint, preference, goal, or observation) to coaching memory, with options to scope, expire, or supersede older facts.

Instructions

Save ONE durable training fact (max 600 characters — split longer ones; nothing is truncated) and tell the user you saved it. kind: constraint (a rule a workout must obey — needs severity: hard = never violate, soft = avoid if possible) | preference (a weight on exercise choice) | goal (a target) | observation (a dated finding, no forward authority). category: injury | equipment | schedule | body | nutrition | note. scope: optional context such as "location:tampa-hotel". supersedes: ids this fact replaces (they are archived in the same write) — use it for corrections and updates instead of adding a second version. expires_days: only for temporary things ("travelling next week" ~7). source: "user" when the user stated it directly, else "inferred" (default). If a near-identical active fact exists nothing is saved and the near-match comes back (saved=false): re-send with supersedes=[its id] if the new one replaces it. Don't store bodyweight/unit (Speediance knows) or load numbers (use set_preferences).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYes
textYes
scopeNo
sourceNoinferred
categoryYes
severityNo
supersedesNo
expires_daysNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

No annotations, so the description carries the behavioral burden and does well: it discloses the 600-char cap with no truncation, the silent-no-save dedup behavior with saved=false, in-write archival of superseded facts, and expiry for temporary facts. Remaining gaps are the response payload shape and any auth/permission requirements, which are not stated.

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 the core action and cap, then structured parameter-by-parameter with no filler sentences. It is dense and long, but nearly every clause carries required semantic content given the zero schema coverage.

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, no-annotation, no-output-schema tool this is close to complete: it covers every parameter's meaning plus dedup, archival, and expiry behavior. The only shortfall is that the success response contents beyond saved=false and the returned near-match are left implicit.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and it does: it enumerates kind values (constraint/preference/goal/observation) with the severity rule, category values (injury/equipment/schedule/body/nutrition/note), and defines scope, supersedes, expires_days, and source with its default. All 8 parameters are given meaning beyond their bare titles.

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?

States a specific verb+resource ('save ONE durable training fact') and defines the exact kinds/categories the fact can take. It also distinguishes itself from the sibling set_preferences by declaring what it must not store (bodyweight/load numbers), so an agent can route correctly.

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 (durable facts), when-not (bodyweight/unit and load numbers, route to set_preferences), and a correction path via supersedes rather than adding a second version. The dedup fallback ('re-send with supersedes=[its id]') tells the agent exactly what to do on the near-match branch.

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