remember
Persist important decisions, preferences, facts, and project context into searchable cognitive memory with importance, domain, and metadata for later recall.
Instructions
Store one or more memories in persistent cognitive memory.
WHEN TO USE: Call proactively whenever the conversation reveals something worth remembering — decisions, preferences, facts about people, project context. Do NOT store ephemeral task details, code snippets, or git-derivable info.
SINGLE: remember(text="User prefers dark mode", domain="preference", importance=0.7) BATCH: remember(memories=[{"text": "Alice is DevOps lead", "domain": "people"}, ...]) DRAFT: remember(summary="...long end-of-session summary...") — v0.8.0+ engine atomizes the summary into linked semantic facts; useful for the end-of-session auto-capture pattern.
IMPORTANCE: 0.8-1.0 critical decisions | 0.5-0.7 useful context | 0.3-0.5 background
Args: text: Memory text (for single memory). Be specific and searchable. memory_type: "semantic" (facts), "episodic" (events), "procedural" (how-to). importance: 0.0-1.0. Higher = remembered longer. domain: "work", "preference", "architecture", "people", "infrastructure", "health", "finance", "general". source: "user", "inference", "document", "system". valence: Emotional tone (-1.0 to 1.0). 0.0 neutral. metadata: Optional key-value pairs. namespace: For per-project isolation. certainty: Confidence 0.0-1.0. emotional_state: joy, frustration, excitement, concern, neutral. memories: List of memory dicts for batch. summary: For draft mode — long summary that the engine atomizes. idempotency_key: v0.10 engine — makes the write exactly-once: retrying with the same key + same text returns the SAME rid with no second write; same key + different text is an error. Engine-embedder (bundled) backend only. On batch, the key scopes per item as "{key}:{index}" if the atomic batch path is unavailable. created_at: v0.14 engine — BACKDATE the memory to when it was actually true, not when you imported it. Use for backfill (chat logs, migrations). Without it every imported memory stamps "now", which makes temporal(action="as_of") report history that never happened and flattens staleness/decay. Same formats as as_of: "2026-08-01", "2026-08-01T14:30:00Z", "7d" (ago), or unix seconds. Omit for anything learned in the present conversation. claims: v0.19 engine — facts this memory states, as [{"subject", "relation", "object"}]; state one for any fact you want tracked (contradiction, succession, multi-hop). Subject and object must occur in the text, relation is snake_case; ungrounded ones are reported back, not stored. Batch items take their own "claims". A claim may carry "valid_from"/"valid_to" (created_at formats). event_time: when the memory is ABOUT, not when written (created_at formats). Time-travel recall reads it and every claim on the memory inherits it as valid_from, so an older fact is the predecessor of a newer one, not its contradiction.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| claims | No | ||
| domain | No | general | |
| source | No | user | |
| summary | No | ||
| valence | No | ||
| memories | No | ||
| metadata | No | ||
| certainty | No | ||
| namespace | No | default | |
| created_at | No | ||
| event_time | No | ||
| importance | No | ||
| memory_type | No | semantic | |
| emotional_state | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |