Skip to main content
Glama

recall_gotchas

Read-only

Recall past pitfalls and non-obvious constraints by topic so agents avoid repeating known mistakes; returns dated, status-tagged facts and closest sessions.

Instructions

Semantic recall of pitfalls and non-obvious constraints found in past sessions, with date, status and threadId. Use to avoid repeating a known mistake. Undistilled scopes return the closest sessions.

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": {
      "query": "<query>"
    },
    "name": "recall_gotchas"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMax facts (default 10, max 50).
queryYesTopic to recall, e.g. "auth token refresh".
projectNoProject path substring. Empty = all projects.
include_supersededNoAlso return replaced (superseded) facts, each naming what replaced it.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.11.4
    • addedInput schema / properties / include_superseded
      Added value: +{
      +  "default": false,
      +  "description": "Also return replaced (superseded) facts, each naming what replaced it.",
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "closestSessions": {
      +          "items": {
      +            "properties": {
      +              "id": {
      +                "type": "integer"
      +              },
      +              "snippet": {
      +                "type": "string"
      +              },
      +              "title": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "title",
      +              "snippet"
      +            ],
      +            "type": "object"
      +          },
      +          "type": [
      +            "array",
      +            "null"
      +          ]
      +        },
      +        "coverage": {
      +          "properties": {
      +            "distilledThreads": {
      +              "type": "integer"
      +            },
      +            "threads": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "distilledThreads",
      +            "threads"
      +          ],
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "facts": {
      +          "items": {
      +            "properties": {
      +              "decidedAt": {
      +                "type": "integer"
      +              },
      +              "disputedBy": {
      +                "items": {
      +                  "properties": {
      +                    "decidedAt": {
      +                      "type": "integer"
      +                    },
      +                    "id": {
      +                      "type": "integer"
      +                    },
      +                    "text": {
      +                      "type": "string"
      +                    },
      +                    "threadId": {
      +                      "type": [
      +                        "integer",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "text",
      +                    "decidedAt"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "extractor": {
      +                "type": "string"
      +              },
      +              "id": {
      +                "type": "integer"
      +              },
      +              "kind": {
      +                "type": "string"
      +              },
      +              "lastConfirmed": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              },
      +              "match": {
      +                "enum": [
      +                  "close",
      +                  "related",
      +                  null
      +                ],
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "originRef": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "projectPath": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "rationale": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "replaces": {
      +                "items": {
      +                  "type": "integer"
      +                },
      +                "type": "array"
      +              },
      +              "similarity": {
      +                "type": "number"
      +              },
      +              "source": {
      +                "type": "string"
      +              },
      +              "status": {
      +                "enum": [
      +                  "current",
      +                  "disputed",
      +                  "flagged",
      +                  "superseded"
      +                ],
      +                "type": "string"
      +              },
      +              "supersededBy": {
      +                "properties": {
      +                  "decidedAt": {
      +                    "type": "integer"
      +                  },
      +                  "id": {
      +                    "type": "integer"
      +                  },
      +                  "text": {
      +                    "type": "string"
      +                  },
      +                  "threadId": {
      +                    "type": [
      +                      "integer",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "id",
      +                  "text",
      +                  "decidedAt"
      +                ],
      +                "type": [
      +                  "object",
      +                  "null"
      +                ]
      +              },
      +              "support": {
      +                "type": "integer"
      +              },
      +              "text": {
      +                "type": "string"
      +              },
      +              "threadId": {
      +                "type": "integer"
      +              },
      +              "title": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "threadId",
      +              "kind",
      +              "text",
      +              "source",
      +              "title",
      +              "projectPath",
      +              "rationale",
      +              "similarity",
      +              "extractor",
      +              "originRef",
      +              "decidedAt",
      +              "status",
      +              "support"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "hint": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "facts"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "properties": {
      +        "notice": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "notice"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  2. Changed5 schema fields changedv0.11.3
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / limit / description
      Previous value: -"Max facts to return (default 20)."New value: +"Max facts (default 10, max 50)."
    • changedInput schema / properties / project / description
      Previous value: -"Substring-match the project path to scope results. Empty = all projects."New value: +"Project path substring. Empty = all projects."
    • changedInput schema / properties / query / description
      Previous value: -"What to recall about (e.g. \"auth token refresh\", \"database migration approach\")."New value: +"Topic to recall, e.g. \"auth token refresh\"."
    • removedInput schema / title
      Removed value: -"RecallArgs"
  3. Addedv0.6.0

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already establish read-only and non-open-world behavior, so the description mainly needs to add operational context. It does so by describing semantic recall rather than exact matching and by explaining the fallback behavior for undistilled scopes.

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?

The description is three short sentences and leads with the resource and purpose. The phrase 'Undistilled scopes' is slightly jargon-like, but overall there is little wasted wording.

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?

With an output schema, full parameter descriptions, and annotations present, the description does not need to repeat field-level details. It covers the core purpose, usage trigger, and fallback behavior sufficiently, though not exhaustively.

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 every parameter is already documented in the input schema. The description does not add syntax, defaults, or constraints beyond what the schema provides, which is acceptable at the baseline for fully covered parameters.

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?

The description gives a specific verb and resource: semantic recall of pitfalls and non-obvious constraints from past sessions. It also names returned metadata (date, status, threadId), making the tool recognizable, though it does not explicitly contrast itself with nearest siblings such as recall_decisions.

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?

It states a clear usage condition: use this to avoid repeating a known mistake. That gives an agent a concrete trigger, but it does not name when another recall or history tool should be preferred.

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