| name | hindsight-memory |
| description | Long-term memory for the agent via Hindsight. Use to recall relevant past context before answering, retain durable facts as you learn them, and reflect over accumulated memory for the "why" behind a decision. Load whenever continuity across sessions matters — the user refers to earlier work, states a lasting preference, or asks a question that prior context could answer. |
Hindsight long-term memory
This plugin connects the agent to Hindsight, a long-term memory engine. Memory
persists across sessions in a bank (scoped by HINDSIGHT_BANK_ID), so what you
retain now is available to recall in future conversations.
The hindsight MCP server exposes the tools below. Prefer these over guessing from
scratch when the answer might live in past context.
When to recall (read memory)
Call recall at the start of a task, or whenever the user:
- refers to earlier work, a past decision, or "the thing we set up",
- states a preference or constraint that may already be recorded,
- asks a question that accumulated project/user context could answer.
recall(query: "how do we deploy the API and which region")
recall runs semantic + keyword + graph + temporal retrieval and returns the most
relevant memories. Ground your answer in what comes back, and say when nothing
relevant was found rather than inventing continuity.
When to retain (write memory)
Call retain when you learn something durable and reusable — worth having in
a future session, not just this one:
- stable user preferences ("prefers pnpm; deploys from
main only"),
- project facts and decisions ("staging DB is Postgres 16 on Neon"),
- outcomes and gotchas ("the flaky test was a timezone bug, fixed in #482").
retain(content: "The user deploys the API to us-east-1 via GitHub Actions on push to main.")
Do not retain transient chatter, secrets, or anything the user asked you to keep
out of memory. Retain the fact, not the whole transcript.
When to reflect (reason over memory)
Call reflect when a single recall is too shallow and you need synthesized
reasoning over everything remembered — the why behind a behavior, or a judgment that
weighs many facts together:
reflect(query: "What has repeatedly caused our CI to flake, and what should we standardize?")
reflect is slower and disposition-aware; use it deliberately, not for lookups.
Bank scope
All tools operate on the bank selected by the connection (HINDSIGHT_BANK_ID, default
default). One bank = one memory store — keep a project's or a user's memory in its
own bank so context stays isolated and relevant. You never pass a bank id to a tool;
it is implicit from the endpoint.