loom_memory_set
Saves user facts, preferences, and decisions to shared AI memory across tools, with auto-tagging and TTL support for temporary states.
Instructions
Save a fact to Loom — shared across every AI tool the user runs; native memory is the Claude-only scratchpad.
Call this proactively whenever the user states a personal fact, decision, preference, or current state — even without 'remember' or 'save'. Declarative statements ARE save triggers: 'my X is Y', 'I prefer X over Y', 'we decided X', 'we're at X', 'I deploy on X' — one call per fact.
Don't search before saving. A stated fact is a write, not a recall; the server dedups. 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).
Auto-tag from scope words: 'for billing, X is Y' → tags=['billing']; same for person / topic mentions.
Do NOT save: questions, code help, world knowledge, acknowledgements, hypotheticals, echoes of your own words.
Writes land in ONE namespace (the caller's home); pass namespace=<name> only to write elsewhere. Don't override memory_type (defaults semantic); use tags for classification. Cite the response's namespace and memory_key in your confirmation; conflict_verdict, peers and next say what the store held (dry_run=true checks without writing). value is stored verbatim — never base64 (kills search; see advisories).
A fact with a natural lifetime gets one at write time. A deadline, a temporary state ('on call this week'), a rotating value: pass ttl_seconds AND on_expire (tombstone | demote | anonymize) in the SAME call — the sweep applies it when the time passes. Without on_expire the row just stops being current.
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>",
"value": "<value>"
},
"name": "loom_memory_set"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| files | No | ||
| value | Yes | ||
| pinned | No | ||
| run_id | No | ||
| dry_run | No | ||
| entities | No | ||
| proposed | No | ||
| valid_at | No | ||
| valid_to | No | ||
| namespace | No | ||
| on_expire | No | ||
| confidence | No | ||
| memory_key | Yes | ||
| memory_type | No | semantic | |
| sensitivity | No | ||
| ttl_seconds | No | ||
| clear_expiry | No | ||
| expire_reason | No | ||
| if_match_sha256 | No | ||
| source_resource_id | No |