memory_supersede
Replace a specific memory by providing its exact UUID. The old memory is retained for historical access, but default search shows only the new successor.
Instructions
Explicitly supersede an existing memory with a new one. Use this to record an intentional update — 'this fact replaces that specific memory' — when you know the old memory's id. Unlike memory_write's automatic contradiction detection (a cosine + title heuristic that may link the wrong prior memory or none at all), this targets the given old_id deterministically. Non-destructive: the old memory is retained, its validity interval is closed (is_deleted=1, valid_to set), and a 'supersedes' edge is recorded new -> old. The old memory stays retrievable by id and via memory_history, and as_of-filtered search still sees it valid before the supersession point — it is only dropped from default search. Fields you omit (type, title, importance, scope) are inherited from the old memory, so pass only what changed. To hard-delete instead, that is a separate gated tool (memory_delete). old_id MUST be the full UUID — a prefix is rejected (full UUID required for mutation safety; memory_get accepts a prefix, this does not). Note: each supersede creates a NEW successor memory; call it once with the full id, do not chain supersedes.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| embed | No | ||
| scope | No | ||
| title | No | ||
| old_id | Yes | ||
| source | No | agent | |
| content | Yes | ||
| user_id | No | ||
| variant | No | ||
| agent_id | No | ||
| database | No | ||
| metadata | No | {} | |
| model_id | No | ||
| embed_text | No | ||
| importance | No | ||
| valid_from | No | ||
| change_agent | No |