remember
Store a single durable fact about the user or project so AI clients can recall key preferences, decisions, and constraints in future sessions.
Instructions
Store ONE durable fact about the user or project for future recall.
When to use this tool
Use remember when you identify 1 to 3 clear, distinct facts during a
conversation — a preference, a tech-stack choice, an architectural decision,
an identity detail, a constraint, a workflow step, or a domain term.
Call it in real time as the conversation progresses. You do NOT need to wait for the user to explicitly ask you to save something. If the user confirms a plan you proposed (e.g. "ok, let's go with that"), save the key decisions from your proposal immediately.
When NOT to use this tool
If you just generated (or the user pasted) a dense block of text containing
many facts (architecture docs, meeting notes, large plans), use
ingest_conversation instead — it extracts and deduplicates automatically.
Rule of thumb: if you would need more than ~3 remember calls, prefer ingest.
What to save (not just tech stack!)
Save ALL categories of durable knowledge:
Identity: user name, role, company, team
Stack: language, framework, database, cache, cloud, editor, CI/CD
Architecture: project purpose, system design, deployment target
Modules: component names, responsibilities, boundaries, dependencies
Workflows: CI/CD pipelines, data flows, deployment steps
Decisions: architectural choices and the reasoning behind them
Domain terms: project-specific jargon and definitions
Status: current milestones, blockers, known tech debt
How to write a good fact
Write a concise, third-person, present-tense, self-contained sentence. Good: "Project uses PostgreSQL as primary database." Bad: "they said postgres" (not self-contained, ambiguous)
How to resolve the project_name (Session Locking & Ambiguity)
No Ambiguity (IDE/Filesystem): If you can reliably determine the project from the workspace folder name or Git remote, auto-match and use it silently.
Ambiguity (Chat Client / Multiple Projects): On the first ambiguous
rememberorrecallcall, DO NOT GUESS. Calllist_projects()and explicitly ask the user to choose (e.g., "I found these existing projects... Which one are we working on today?").Session Lock: Once the user selects a project, or it is auto-matched, lock that
project_namefor all subsequent calls in the current session.New Project: When saving to a new project name for the first time, explicitly confirm it with the user (e.g., "I've created a new project memory space called X. All facts from this session will be saved under this project.").
Args: content: The fact, e.g. "Project uses PostgreSQL as primary database." project_name: Project name to associate this fact with. If omitted (None), the fact is stored as a global memory visible to all projects. If provided, the fact is scoped to that project but still visible alongside global memories when querying that project. importance: 0..1 estimate of long-term value. - 0.85–0.95: identity, architecture, core decisions - 0.75–0.85: module descriptions, workflows - 0.70–0.80: stack choices - 0.65–0.80: domain terms, status - 0.50–0.65: preferences, dislikes - 0.40–0.50: ephemeral observations key: Optional conflict slot (e.g. "user:database"). A new fact with the same key supersedes the old one, so beliefs stay current. Common keys: user:name, user:language, user:framework, user:database, user:cloud, user:editor, user:current_project, project:architecture, project:deployment, project:purpose, project:status. For modules/workflows/decisions use dynamic keys like project:module:, project:workflow:, project:decision:. tags: Optional labels for filtering. ttl_days: Optional expiry in days for facts that go stale on their own. tool: Name of the calling tool (recorded for audit).
Returns a summary including the resulting action: created, merged (a duplicate already existed), superseded (an older conflicting fact was retired), or blocked (PII policy refused it).
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": {
"content": "<content>"
},
"name": "remember"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| tags | No | ||
| tool | No | unknown | |
| content | Yes | ||
| ttl_days | No | ||
| importance | No | ||
| project_name | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||