Skip to main content
Glama

Store fact

store_fact

Store a semantic fact: a (subject, predicate, value) statement about an entity that holds independently of when it was observed. For events use store_episode.

Fact confidence decays over time unless the fact is reaffirmed, except
for facts classified as 'evento'. The response includes
`contradicciones`: existing facts with the same subject and predicate but
a different value. Nothing is deleted or superseded automatically; mark
the incorrect one with `supersede_memory`.

Args:
    entity_id: UUID of the entity the fact is about.
    predicate: Free-form predicate, e.g. 'is_a', 'has_role',
        'located_in', 'depends_on'. Reuse predicates across calls.
    value: The fact value, as a string.
    confidence: Confidence in [0.0, 1.0]. When omitted, it is set to the
        ceiling for `epistemico`: 1.0 'medido', 0.8 'reportado',
        0.7 'inferido'. An explicit value is always kept.
    source: Optional identifier of where the fact came from.
    epistemico: How it is known: 'medido' (returned by a system: an HTTP
        response, a query, command output), 'inferido' (concluded by
        reasoning), 'reportado' (stated by someone else). Omitted or
        unrecognized values are classified automatically, falling back to
        'inferido'.
    volatilidad: Whether it can stop being true: 'evento' (something that
        happened; does not decay), 'estado' (how something is; expires if
        it changes), 'pendiente' (still to do; expires within days).
        Omitted or unrecognized values are classified automatically.
    fuente: Optional. How you came to know this, so it can be recalled
        with its source the way a person remembers who told them what.
        Who you were with and through which agent are NOT declared here:
        the server stamps them from your credential. Keys, all optional
        and free text except `modo`:
          modo: 'vivido' (I did or said it), 'conversado' (someone told
            me directly), 'leido' (a document, web page, another agent's
            message, a tool's output), 'pensado' (I inferred or
            concluded it).
          de: who said or originated it, e.g. "Cris" or
            {"nombre": "Cris", "tipo": "persona"}.
          con: who you were with, only if not your owner.
          para: who you did it for.
          canal: channel inside the agent, e.g. "whatsapp", "terminal".
          donde: scope or place: repo, project, file, URL.
    fecha: Optional. The date OF THE FACT, not of storing it: when it
        happened (evento) or since when it is true (estado). Accepts
        '2026' (year), '2026-03' (month), '2026-03-14' (day) or an
        ISO-8601 datetime; the precision is taken from the format. A
        datetime without offset is read in the user's time zone. Omitted:
        the time of storing it. Invalid returns 422.
    valid_until: Optional. Until when it is (or was) true, same formats;
        a month or year means its last day. Omit if unknown or still true.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "entity_id": "<entity_id>",
      "predicate": "<predicate>",
      "value": "<value>"
    },
    "name": "store_fact"
  }
}

Input Schema

NameRequiredDescriptionDefault
fechaNo
valueYes
fuenteNo
sourceNo
entity_idYes
predicateYes
confidenceNo
epistemicoNo
valid_untilNo
volatilidadNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / fecha
      Added value: +{
      +  "default": null,
      +  "title": "Fecha",
      +  "type": "string"
      +}
    • addedInput schema / properties / valid_until
      Added value: +{
      +  "default": null,
      +  "title": "Valid Until",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / fuente
      Added value: +{
      +  "additionalProperties": true,
      +  "default": null,
      +  "title": "Fuente",
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.4/5.0
Behavior4/5

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

Adds substantial behavior beyond annotations: confidence decays over time unless reaffirmed except for 'evento' facts, responses include `contradicciones`, nothing is deleted automatically, and omitted epistemico/volatilidad are auto-classified. Builds on the annotation safety profile rather than contradicting it (destructiveHint=false is consistent with 'nothing deleted').

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 organized per-argument; length is justified by 10 params and a nested object. A few passages (the fuente 'way a person remembers' phrasing) are slightly verbose but not wasteful.

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?

Covers a complex mutating tool well, explaining defaults, classification, decay, and the contradictions return. It notes the response includes `contradicciones` despite no output schema, leaving only minor detail about the full return shape.

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?

With 0% schema description coverage, the description fully compensates: it documents every one of the 10 parameters, including enum semantics for epistemico, volatilidad, and fuente.modo, confidence defaults keyed to epistemico, and fecha format/precision rules and 422 behavior.

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 and resource ('Store a semantic fact') and precisely defines the data shape as a (subject, predicate, value) statement that holds independently of observation time.

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?

Explicitly routes events to `store_episode` and corrections to `supersede_memory`, and explains that nothing is superseded automatically. Clear when-to-use and alternatives, though the exclusions are spread across the text rather than consolidated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources