MCP toolsmemory_remember

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
}
FieldTypeRequiredDefaultNotes
contentstringyes—Free-form, ≤ 50 000 chars. Atomic — one claim per remember.
typeenumnofactfact / decision / strategy / workflow / skill
topicKeystringnononeStable key for evolving facts (Decision-style upsert)
confidencenumberno0.80 – 1
relatedEntitiesstring[]nononeEntity names to link. New entities are auto-created.
validUntilstringnononeISO 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_recall first 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:

  1. The trust-anchor rules try to resolve deterministically (see Zero-LLM features).
  2. If unresolved, the new fact and the existing fact are queued for review.
  3. 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
  }
}