Skip to main content
Glama

correct_fact

DestructiveIdempotent

Edit recall(source)'s record_id via changes; use returned record_id. Dependents may change.

Input Schema

NameRequiredDescriptionDefault
changesYesReplacements; other fields unchanged.
record_idNomr_ answer key from recall(source).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / changes / description
      Previous value: -"Replacement fields; others unchanged."New value: +"Replacements; other fields unchanged."
    • changedInput schema / properties / changes / properties / target / description
      Previous value: -"New value, including status/name/amount."New value: +"New value (status/name/amount)."
    • changedInput schema / properties / record_id / description
      Previous value: -"Copy an mr_ answer key from recall(source)."New value: +"mr_ answer key from recall(source)."
  2. Changed4 schema fields changed
    • addedInput schema / properties / changes / description
      Added value: +"Replacement fields; others unchanged."
    • addedInput schema / properties / changes / properties / target / description
      Added value: +"New value, including status/name/amount."
    • removedInput schema / properties / fact
      Removed value: -{
      -  "additionalProperties": true,
      -  "description": "Exact old values; retrieve first if missing.",
      -  "properties": {
      -    "relation": {
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "source": {
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "target": {
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "source",
      -    "relation",
      -    "target"
      -  ],
      -  "type": "object"
      -}
    • addedInput schema / properties / record_id
      Added value: +{
      +  "description": "Copy an mr_ answer key from recall(source).",
      +  "type": "string"
      +}
  3. Changed42 schema fields changed
    • changedInput schema / additionalProperties
      Previous value: -falseNew value: +true
    • changedInput schema / oneOf
      Previous value: -[
      -  {
      -    "required": [
      -      "record_id"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "client_record_id"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "fact"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "required": [
      +      "fact"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "record_id"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "client_record_id"
      +    ]
      +  }
      +]
    • changedInput schema / properties / changes / additionalProperties
      Previous value: -falseNew value: +true
    • removedInput schema / properties / changes / properties / confidence
      Removed value: -{
      -  "maximum": 1,
      -  "minimum": 0.01,
      -  "type": "number"
      -}
    • removedInput schema / properties / changes / properties / context
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "domain_id": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "qualifiers": {
      -      "description": "Conditions: JSON scalars/lists, no nested objects.",
      -      "maxProperties": 64,
      -      "type": "object"
      -    },
      -    "scope": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "subdomain_id": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "subject_version": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [],
      -  "type": "object"
      -}
    • removedInput schema / properties / changes / properties / entity_id
      Removed value: -{
      -  "description": "Canonical subject ID across evidence sources.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / evidence_refs
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "claim_hash": {
      -        "maxLength": 64,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "content_hash": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "excerpt": {
      -        "maxLength": 10000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "locator": {
      -        "maxLength": 500,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "observed_at": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "recorded_at": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "role": {
      -        "maxLength": 80,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "source_id": {
      -        "maxLength": 200,
      -        "minLength": 1,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "source_id",
      -      "locator"
      -    ],
      -    "type": "object"
      -  },
      -  "maxItems": 64,
      -  "minItems": 0,
      -  "type": "array"
      -}
    • removedInput schema / properties / changes / properties / evidence_source
      Removed value: -{
      -  "description": "Evidence label, not subject identity.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / polarity
      Removed value: -{
      -  "enum": [
      -    1,
      -    -1
      -  ],
      -  "type": "integer"
      -}
    • removedInput schema / properties / changes / properties / position
      Removed value: -{
      -  "maximum": 1000000,
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedInput schema / properties / changes / properties / property_type
      Removed value: -{
      -  "enum": [
      -    "single",
      -    "set",
      -    "ordered",
      -    "rules"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / provenance
      Removed value: -{
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / relation
      Removed value: -{
      -  "description": "Property; custom properties default to single-valued.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / search_aliases
      Removed value: -{
      -  "items": {
      -    "description": "Field aliases for recall, not evidence or answer text.",
      -    "maxLength": 80,
      -    "minLength": 1,
      -    "type": "string"
      -  },
      -  "maxItems": 16,
      -  "minItems": 0,
      -  "type": "array"
      -}
    • removedInput schema / properties / changes / properties / source
      Removed value: -{
      -  "description": "Subject name/ID.",
      -  "maxLength": 10000,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / source_kind
      Removed value: -{
      -  "description": "Subject type; disambiguates names.",
      -  "maxLength": 80,
      -  "minLength": 2,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / target / description
      Removed value: -"Value/object, distinct from source."
    • removedInput schema / properties / changes / properties / target / maxLength
      Removed value: -10000
    • removedInput schema / properties / changes / properties / target / minLength
      Removed value: -1
    • removedInput schema / properties / changes / properties / target_kind
      Removed value: -{
      -  "description": "Value type; disambiguates names.",
      -  "maxLength": 80,
      -  "minLength": 2,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / unit
      Removed value: -{
      -  "description": "Value unit, e.g. hour or bed/nurse.",
      -  "maxLength": 100,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / changes / properties / validity
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "kind": {
      -      "enum": [
      -        "persistent",
      -        "interval"
      -      ],
      -      "type": "string"
      -    },
      -    "observed_at": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "recorded_at": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "valid_from": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "valid_to": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [],
      -  "type": "object"
      -}
    • removedInput schema / properties / client_record_id
      Removed value: -{
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • changedInput schema / properties / fact / additionalProperties
      Previous value: -falseNew value: +true
    • addedInput schema / properties / fact / description
      Added value: +"Exact old values; retrieve first if missing."
    • removedInput schema / properties / fact / properties / context
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "domain_id": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "qualifiers": {
      -      "description": "Conditions: JSON scalars/lists, no nested objects.",
      -      "maxProperties": 64,
      -      "type": "object"
      -    },
      -    "scope": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "subdomain_id": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "subject_version": {
      -      "maxLength": 200,
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [],
      -  "type": "object"
      -}
    • removedInput schema / properties / fact / properties / entity_id
      Removed value: -{
      -  "description": "Canonical subject ID across evidence sources.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / evidence_source
      Removed value: -{
      -  "description": "Evidence label, not subject identity.",
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / polarity
      Removed value: -{
      -  "enum": [
      -    1,
      -    -1
      -  ],
      -  "type": "integer"
      -}
    • removedInput schema / properties / fact / properties / position
      Removed value: -{
      -  "maximum": 1000000,
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedInput schema / properties / fact / properties / property_type
      Removed value: -{
      -  "enum": [
      -    "single",
      -    "set",
      -    "ordered",
      -    "rules"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / relation / description
      Removed value: -"Property; custom properties default to single-valued."
    • removedInput schema / properties / fact / properties / relation / maxLength
      Removed value: -200
    • removedInput schema / properties / fact / properties / source / description
      Removed value: -"Subject name/ID."
    • removedInput schema / properties / fact / properties / source / maxLength
      Removed value: -10000
    • removedInput schema / properties / fact / properties / source_kind
      Removed value: -{
      -  "description": "Subject type; disambiguates names.",
      -  "maxLength": 80,
      -  "minLength": 2,
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / target / description
      Removed value: -"Value/object, distinct from source."
    • removedInput schema / properties / fact / properties / target / maxLength
      Removed value: -10000
    • removedInput schema / properties / fact / properties / target_kind
      Removed value: -{
      -  "description": "Value type; disambiguates names.",
      -  "maxLength": 80,
      -  "minLength": 2,
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / unit
      Removed value: -{
      -  "description": "Value unit, e.g. hour or bed/nurse.",
      -  "maxLength": 100,
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / fact / properties / validity
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "kind": {
      -      "enum": [
      -        "persistent",
      -        "interval"
      -      ],
      -      "type": "string"
      -    },
      -    "observed_at": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "recorded_at": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "valid_from": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    },
      -    "valid_to": {
      -      "maxLength": 100,
      -      "minLength": 1,
      -      "type": "string"
      -    }
      -  },
      -  "required": [],
      -  "type": "object"
      -}
    • removedInput schema / properties / record_id
      Removed value: -{
      -  "maxLength": 200,
      -  "minLength": 1,
      -  "type": "string"
      -}
  4. Changed15 schema fields changed
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "required": [
      +      "record_id"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "client_record_id"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "fact"
      +    ]
      +  }
      +]
    • changedInput schema / properties / changes / properties / context / properties / qualifiers / description
      Previous value: -"Conditions accepted by normalize_context: JSON scalars or lists, no nested objects."New value: +"Conditions: JSON scalars/lists, no nested objects."
    • changedInput schema / properties / changes / properties / entity_id / description
      Previous value: -"Explicit canonical subject ID, shared across its evidence sources."New value: +"Canonical subject ID across evidence sources."
    • addedInput schema / properties / changes / properties / evidence_refs / items / properties / recorded_at
      Added value: +{
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / changes / properties / evidence_source / description
      Previous value: -"Source document or record label; does not change the subject identity."New value: +"Evidence label, not subject identity."
    • changedInput schema / properties / changes / properties / relation / description
      Previous value: -"Property such as status; custom properties are single-valued by default."New value: +"Property; custom properties default to single-valued."
    • addedInput schema / properties / changes / properties / search_aliases
      Added value: +{
      +  "items": {
      +    "description": "Field aliases for recall, not evidence or answer text.",
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 16,
      +  "minItems": 0,
      +  "type": "array"
      +}
    • changedInput schema / properties / changes / properties / source / description
      Previous value: -"Stable subject name or ID. Prefer short names shared with queries."New value: +"Subject name/ID."
    • addedInput schema / properties / changes / properties / source_kind
      Added value: +{
      +  "description": "Subject type; disambiguates names.",
      +  "maxLength": 80,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • changedInput schema / properties / changes / properties / target / description
      Previous value: -"Value or object, different from source."New value: +"Value/object, distinct from source."
    • addedInput schema / properties / changes / properties / target_kind
      Added value: +{
      +  "description": "Value type; disambiguates names.",
      +  "maxLength": 80,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • changedInput schema / properties / changes / properties / unit / description
      Previous value: -"Unit of the saved value, such as hour, bed or bed/nurse."New value: +"Value unit, e.g. hour or bed/nurse."
    • addedInput schema / properties / client_record_id
      Added value: +{
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / fact
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "context": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "domain_id": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "qualifiers": {
      +          "description": "Conditions: JSON scalars/lists, no nested objects.",
      +          "maxProperties": 64,
      +          "type": "object"
      +        },
      +        "scope": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "subdomain_id": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "subject_version": {
      +          "maxLength": 200,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [],
      +      "type": "object"
      +    },
      +    "entity_id": {
      +      "description": "Canonical subject ID across evidence sources.",
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "evidence_source": {
      +      "description": "Evidence label, not subject identity.",
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "polarity": {
      +      "enum": [
      +        1,
      +        -1
      +      ],
      +      "type": "integer"
      +    },
      +    "position": {
      +      "maximum": 1000000,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "property_type": {
      +      "enum": [
      +        "single",
      +        "set",
      +        "ordered",
      +        "rules"
      +      ],
      +      "type": "string"
      +    },
      +    "relation": {
      +      "description": "Property; custom properties default to single-valued.",
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Subject name/ID.",
      +      "maxLength": 10000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "source_kind": {
      +      "description": "Subject type; disambiguates names.",
      +      "maxLength": 80,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    "target": {
      +      "description": "Value/object, distinct from source.",
      +      "maxLength": 10000,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "target_kind": {
      +      "description": "Value type; disambiguates names.",
      +      "maxLength": 80,
      +      "minLength": 2,
      +      "type": "string"
      +    },
      +    "unit": {
      +      "description": "Value unit, e.g. hour or bed/nurse.",
      +      "maxLength": 100,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "validity": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "kind": {
      +          "enum": [
      +            "persistent",
      +            "interval"
      +          ],
      +          "type": "string"
      +        },
      +        "observed_at": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "recorded_at": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "valid_from": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "valid_to": {
      +          "maxLength": 100,
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "source",
      +    "relation",
      +    "target"
      +  ],
      +  "type": "object"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "record_id",
      -  "changes"
      -]New value: +[
      +  "changes"
      +]
  5. Changed5 schema fields changed
    • addedInput schema / properties / changes / properties / entity_id
      Added value: +{
      +  "description": "Explicit canonical subject ID, shared across its evidence sources.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / changes / properties / evidence_source
      Added value: +{
      +  "description": "Source document or record label; does not change the subject identity.",
      +  "maxLength": 200,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / changes / properties / position
      Added value: +{
      +  "maximum": 1000000,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / changes / properties / property_type
      Added value: +{
      +  "enum": [
      +    "single",
      +    "set",
      +    "ordered",
      +    "rules"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / changes / properties / unit
      Added value: +{
      +  "description": "Unit of the saved value, such as hour, bed or bed/nurse.",
      +  "maxLength": 100,
      +  "minLength": 1,
      +  "type": "string"
      +}
  6. First observed

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that by warning that 'Dependents may change', disclosing ripple effects the annotations don't capture.

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

Conciseness3/5

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

A single short sentence with no filler, but the terseness crosses into under-specification: 'Edit recall(source)'s record_id' is compressed to the point of ambiguity, and the chaining hint trails the mutation claim rather than leading with it.

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 description hints that a record_id is returned and that dependents may shift, which is useful for a destructive mutation with no output schema. It still leaves the identifier oneOf and the scope of the 'changes' object unexplained, which matters for a nested-object, additionalProperties-allowed payload.

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 schema already documents 'changes', 'target', and 'record_id'. The description adds no detail on the oneOf alternatives (fact, record_id, client_record_id), which is the one parameter behavior the schema doesn't make self-evident.

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

Purpose3/5

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

The verb 'Edit' and resource 'record_id via changes' identify a mutation, and the reference to recall(source) ties it to a sibling. But the phrasing is cryptic shorthand, and the tool name 'correct_fact' never appears in the description, so an agent has to infer that this corrects an existing fact record rather than, say, renaming a record.

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?

'use returned record_id' gives a concrete chaining instruction from recall(source), which is genuine usage context. It never says when to prefer this over verify or forget_facts, and it doesn't cover the fact/client_record_id identification paths allowed by the schema.

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