memory_remember
Store new knowledge in long-term memory. Mnemosyne handles conflict detection, deduplication, embedding, and bitemporal validity for you.
Input
{
"content": "what to remember",
"type": "fact",
"topicKey": "user_morning_drink",
"confidence": 0.9,
"relatedEntities": ["lucas"],
"validUntil": null
}| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| content | string | yes | — | Free-form, ≤ 50 000 chars. Atomic — one claim per remember. |
| type | enum | no | fact | fact / decision / strategy / workflow / skill |
| topicKey | string | no | none | Stable key for evolving facts (Decision-style upsert) |
| confidence | number | no | 0.8 | 0 – 1 |
| relatedEntities | string[] | no | none | Entity names to link. New entities are auto-created. |
| validUntil | string | no | none | ISO 8601. When the statement becomes outdated. |
Output
{
"id": "fact_xxx",
"validFrom": "2026-06-07T18:22:00Z",
"validTo": null,
"supersedes": null,
"conflicts": []
}If a conflict was detected, conflicts contains the contradicting facts
and id is null — the new fact is queued for review.
When the agent should call it
- The user explicitly tells the agent something stable (“I’m allergic to peanuts”).
- A tool call returns a stable observation worth remembering (“the production cluster is on v2.3.1”).
- The agent reasons through a multi-step problem and discovers a strategy worth replaying (“when the Stripe webhook times out, retry with exponential backoff”).
When the agent should NOT call it
- Throwaway details (“the weather is nice today”).
- Information already in memory (call
memory_recallfirst to check). - PII the user explicitly asked to keep off the record.
Conflict handling
Mnemosyne runs a candidate detection step on every write. If a contradicting fact already exists:
- The trust-anchor rules try to resolve deterministically (see Zero-LLM features).
- If unresolved, the new fact and the existing fact are queued for review.
- The response carries the conflicting fact IDs so the agent can decide whether to escalate to the user.
Idempotency
{
"content": "user prefers espresso",
"type": "fact",
"idempotencyKey": "uuid-from-client"
}Same key within 24 h returns the cached response. Useful when retries might double-write.
Example
{
"name": "memory_remember",
"arguments": {
"content": "Lucas is allergic to peanuts",
"type": "fact",
"relatedEntities": ["lucas"],
"confidence": 0.99
}
}