Skip to main content
Glama

forget

Retract a record and its active incident edges while preserving an inspectable history, so outdated or incorrect memory can be removed without losing audit context.

Instructions

Retract a record and its live incident edges while preserving inspectable history.

Input Schema

NameRequiredDescriptionDefault
nodeYes
initiativeYes
request_idNoOptional stable operation key supplied by the host/SDK; see replay contract.
expected_revisionNoOpaque revision of the primary target, as returned by reads.

Output Schema

NameRequiredDescriptionDefault
dataYes
stateYes
issuesYes
coverageNo
replayedYes
operationYes
request_idNo
api_versionYes
continuationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv0.8.0
    • addedInput schema / $defs
      Added value: +{
      +  "NodeRef": {
      +    "oneOf": [
      +      {
      +        "description": "Returned UUID or exact name in the call initiative; ambiguity is an error.",
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "id": {
      +            "description": "Returned canonical ID, including IDs from older vaults.",
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "initiative": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "name": {
      +            "minLength": 1,
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "initiative"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  }
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / expected_revision
      Added value: +{
      +  "description": "Opaque revision of the primary target, as returned by reads.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • removedInput schema / properties / initiative / default
      Removed value: -null
    • addedInput schema / properties / initiative / minLength
      Added value: +1
    • changedInput schema / properties / initiative / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"string"
    • removedInput schema / properties / name
      Removed value: -{
      -  "description": "Node name (also accepts a UUIDv7 id where the verb supports\npolymorphic resolution).",
      -  "type": "string"
      -}
    • addedInput schema / properties / node
      Added value: +{
      +  "$ref": "#/$defs/NodeRef"
      +}
    • addedInput schema / properties / request_id
      Added value: +{
      +  "description": "Optional stable operation key supplied by the host/SDK; see replay contract.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "name"
      -]New value: +[
      +  "initiative",
      +  "node"
      +]
    • removedInput schema / title
      Removed value: -"NameScope"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "AmgOmission": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "count": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "reason",
      +        "count"
      +      ],
      +      "type": "object"
      +    },
      +    "ArchiveFormat": {
      +      "enum": [
      +        "markdown",
      +        "amg"
      +      ],
      +      "type": "string"
      +    },
      +    "Artifact": {
      +      "properties": {
      +        "bytes": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "edges": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "format": {
      +          "$ref": "#/$defs/ArchiveFormat"
      +        },
      +        "initiatives": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "nodes": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "omissions": {
      +          "items": {
      +            "$ref": "#/$defs/AmgOmission"
      +          },
      +          "type": "array"
      +        },
      +        "path": {
      +          "type": "string"
      +        },
      +        "sha256": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "path",
      +        "format",
      +        "bytes",
      +        "sha256",
      +        "initiatives",
      +        "omissions",
      +        "nodes",
      +        "edges"
      +      ],
      +      "type": "object"
      +    },
      +    "Change": {
      +      "properties": {
      +        "after": true,
      +        "before": true,
      +        "field": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "field",
      +        "before",
      +        "after"
      +      ],
      +      "type": "object"
      +    },
      +    "Continuation": {
      +      "properties": {
      +        "cursor": {
      +          "type": "string"
      +        },
      +        "next_arguments": true
      +      },
      +      "required": [
      +        "cursor",
      +        "next_arguments"
      +      ],
      +      "type": "object"
      +    },
      +    "Coverage": {
      +      "properties": {
      +        "complete": {
      +          "type": "boolean"
      +        },
      +        "initiatives": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "omitted": {
      +          "items": {
      +            "$ref": "#/$defs/Omission"
      +          },
      +          "type": "array"
      +        },
      +        "rules_complete": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "initiatives",
      +        "complete",
      +        "rules_complete",
      +        "omitted"
      +      ],
      +      "type": "object"
      +    },
      +    "Entity": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "revision": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "revision"
      +      ],
      +      "type": "object"
      +    },
      +    "EvidenceResult": {
      +      "properties": {
      +        "id": {
      +          "type": "string"
      +        },
      +        "relation": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "relation"
      +      ],
      +      "type": "object"
      +    },
      +    "FailedStep": {
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "step": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "step",
      +        "code",
      +        "message"
      +      ],
      +      "type": "object"
      +    },
      +    "Issue": {
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "field": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "code",
      +        "message",
      +        "retryable"
      +      ],
      +      "type": "object"
      +    },
      +    "MutationData": {
      +      "properties": {
      +        "affected": {
      +          "items": {
      +            "$ref": "#/$defs/Entity"
      +          },
      +          "type": "array"
      +        },
      +        "artifacts": {
      +          "items": {
      +            "$ref": "#/$defs/Artifact"
      +          },
      +          "type": "array"
      +        },
      +        "changes": {
      +          "items": {
      +            "$ref": "#/$defs/Change"
      +          },
      +          "type": "array"
      +        },
      +        "created": {
      +          "items": {
      +            "$ref": "#/$defs/Entity"
      +          },
      +          "type": "array"
      +        },
      +        "evidence": {
      +          "items": {
      +            "$ref": "#/$defs/EvidenceResult"
      +          },
      +          "type": "array"
      +        },
      +        "failed_steps": {
      +          "items": {
      +            "$ref": "#/$defs/FailedStep"
      +          },
      +          "type": "array"
      +        },
      +        "primary": {
      +          "anyOf": [
      +            {
      +              "$ref": "#/$defs/Entity"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "slots": {
      +          "items": {
      +            "$ref": "#/$defs/SlotChange"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "created",
      +        "affected",
      +        "changes",
      +        "evidence",
      +        "failed_steps",
      +        "slots",
      +        "artifacts"
      +      ],
      +      "type": "object"
      +    },
      +    "Omission": {
      +      "properties": {
      +        "count": {
      +          "format": "uint",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "section": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "section",
      +        "count",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    "SlotChange": {
      +      "properties": {
      +        "after": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "before": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "revision": {
      +          "type": "string"
      +        },
      +        "slot": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slot",
      +        "revision"
      +      ],
      +      "type": "object"
      +    },
      +    "State": {
      +      "enum": [
      +        "ok",
      +        "applied",
      +        "unchanged",
      +        "partial",
      +        "rejected"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "properties": {
      +    "api_version": {
      +      "const": 1,
      +      "format": "uint32",
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "continuation": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/Continuation"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "coverage": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/Coverage"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "data": {
      +      "$ref": "#/$defs/MutationData"
      +    },
      +    "issues": {
      +      "items": {
      +        "$ref": "#/$defs/Issue"
      +      },
      +      "type": "array"
      +    },
      +    "operation": {
      +      "const": "forget",
      +      "type": "string"
      +    },
      +    "replayed": {
      +      "type": "boolean"
      +    },
      +    "request_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "state": {
      +      "$ref": "#/$defs/State"
      +    }
      +  },
      +  "required": [
      +    "api_version",
      +    "operation",
      +    "state",
      +    "replayed",
      +    "data",
      +    "issues"
      +  ],
      +  "title": "Response",
      +  "type": "object"
      +}
  2. First observedv0.7.5

TDQS

B3.1/5.0
Behavior3/5

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

Annotations only supply readOnlyHint=false, so the description carries most of the burden and does add real value: it discloses the cascade onto live incident edges and that history remains inspectable rather than destroyed. It is silent on permissions, whether the retraction can be undone, and how ambiguity in the node reference is handled (the schema hints 'ambiguity is an error' but the description does not reinforce the failure mode).

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?

One sentence, front-loaded with the verb and target, with the cascade effect and history guarantee packed into the same clause. Nothing is redundant or padded.

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?

An output schema exists, so return values need not be described, and the cascade-plus-history disclosure covers the core semantics of this mutation. For a tool with a required initiative scope and an expected_revision guard, though, the description leaves the agent without guidance on concurrency conflicts, ambiguous node resolution, or retry/idempotency behavior.

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

Parameters2/5

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

Coverage is only 50% and the description adds no parameter meaning beyond the schema: it never mentions that 'initiative' scopes resolution, nor that 'expected_revision' is an optimistic-concurrency guard or that 'request_id' is a replay key. 'A record' loosely maps to the node parameter, but the concurrency and idempotency arguments — the ones most likely to be misused — go unexplained in both prose and schema.

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 ('retract') and resource ('a record and its live incident edges') plus the net effect ('preserving inspectable history'), which disambiguates the odd name 'forget' from a hard delete. It does not, however, differentiate itself from nearby siblings such as lifecycle, retention, or replace, which plausibly overlap with record retraction.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus lifecycle, retention, replace, or revise. 'Preserving inspectable history' weakly implies this is the soft-retraction path rather than a purge, but the agent must infer that; no exclusions or alternatives are named.

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