loom_memory_update
Update an existing saved fact in place by its memory key when its value changes or becomes more specific, preserving tags, confidence, expiry, and history without creating duplicates.
Instructions
Update a saved fact by memory_key: the operation for "the fact changed or got more specific".
WHEN: a read (memory.get or loom_search) returned this key and the user now states a new value, a correction, or a more precise version of it — 'the deploy day moved to Thursday', 'the budget is actually 40k'. It keeps the row's tags, confidence, expiry, lock and history; memory.set would write a new version blind. Revision policy: if a read this session returned the key of a fact that has now changed or got more precise, update it under that same key with memory.update — never save a second copy and never delete + re-save. A fact about a new subject or scope gets its own memory_key (include the project / scope token in the key). Do NOT use it for a genuinely new fact — call memory.set.
Resolves the key across the namespace; pass agent/user_id/session_id only to narrow when the key is live under several writers (409 AMBIGUOUS_KEY lists them). updated=false with reason=not_found means the key has no live row — save it with memory.set instead. Pass if_match_sha256 from the read for a no-clobber update. Given a memory_id rather than a key, call memory.update_by_id (via loom_op where it is not listed).
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_key": "<memory_key>"
},
"name": "loom_memory_update"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| value | No | ||
| reason | No | ||
| revive | No | ||
| run_id | No | ||
| concepts | No | ||
| namespace | No | ||
| char_limit | No | ||
| confidence | No | ||
| memory_key | Yes | ||
| if_match_sha256 | No |