memory_edit
Edit a memory. Provide only what changes; omitted fields untouched.
Modes:
Content replace (content [+topics/macro_topics]): full rewrite, re-embeds. Do it the instant the user corrects a memory ("actually...").
Metadata patch (topics/type/expiry, no content): type/expiry alone do not re-embed, a topics or macro_topics change always does (in every mode -- the topic prefix is stored as part of the passage). To add or drop one tag use add_topics/remove_topics (add_macro_topics/remove_macro_topics); topics/macro_topics replace the whole list.
Task surgery: toggle=[0,2] flips checkboxes; set_status pending/active/blocked/review/done ("done" -> task_done); set_summary replaces "## Summary"; add_steps/remove_steps/edit_step. Step-op indices are pre-call state.
Output capture (output): attach a durable finding. Atomic, front-loaded, same quality as memory_add. GOOD "OAuth2 callback uses PKCE S256 -- prevents code interception without client secret" BAD "looked at the code, found interesting auth stuff" Over-length is rejected, not truncated. Many findings -> memory_add directly.
Combine rules: content combines ONLY with set_status (its sole partner) toggle + set_status + set_summary + step-ops set_status + toggle + set_summary + step-ops + content set_summary + toggle + set_status + step-ops step-ops + toggle + set_status + set_summary output attaches to any toggle/set_status update
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": {
"memory_id": "<memory_id>"
},
"name": "memory_edit"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | Parent task/ticket id -> merged into topics. e.g. "a1b2c3d4". | |
| type | No | New type: fact/preference/decision/path/task/task_done/result | |
| output | No | Durable finding on this update -> linked fact memory (inherits task topics). Atomic, front-loaded. Over-length rejected. Many findings -> memory_add. | |
| signal | No | Also signal recipient (email, agent, "owner") with this memory_id. Needs a SHARED collection ("me"/personal rejected). | |
| toggle | No | 0-based checkbox indices to flip. e.g. [0,2]. See Combine rules. | |
| topics | No | New topics (REPLACES all). Search words, lowercase. | |
| content | No | New memory text — plain prose only, never a serialized object (re-embeds). topics, macro_topics and type are separate parameters; put them there, never inside this text. | |
| artifact | No | Commit SHA or filename -> merged into topics. e.g. "f4e5d6c". | |
| add_steps | No | Append checklist items (milestones). Re-embeds. | |
| edit_step | No | Rewrite a step's text, preserving checkbox state. Re-embeds. | |
| ephemeral | No | Set time-bound (auto-expires in 90 days) | |
| memory_id | Yes | ID of memory to edit | |
| add_topics | No | Topics to add; the rest stay. | |
| collection | No | Collection for signal routing (only with signal param). | |
| expires_at | No | YYYY-MM-DD, or "never". Overrides ephemeral. | |
| set_status | No | Task status. "done" auto-sets type=task_done (reverting reverts); type follows status. See Combine rules. | |
| set_summary | No | Replace the task's "## Summary" block ("" clears). Re-embeds. Not type="summary" (that is memory_consolidate). | |
| macro_topics | No | New macro_topics (REPLACES all). 1-3 lowercase. | |
| remove_steps | No | Remove steps by 0-based index (pre-call state). Re-embeds. | |
| remove_topics | No | Topics to drop; the rest stay. At least one must remain. | |
| add_macro_topics | No | macro_topics to add; the rest stay. | |
| remove_macro_topics | No | macro_topics to drop; the rest stay. |