Saving and recalling is the easy part; the rest is what makes it usable inside an agent. Recalls carry explicit item and token budgets, so a memory layer cannot quietly eat the context window. get_project_context returns state, TODOs, decisions and timeline as one bounded pack, which is what resuming a session actually needs. Deletions record a reason and can be undone, and explain_memory answers the question most memory tools cannot: why did this come back for that query.
A hosted memory service reached over MCP. It stores memories that can be recalled by meaning later, keeps a scoped working state and timeline per project, tracks TODOs, and includes a ledger for expenses — all against one account, so the memories follow you between clients.
- remember saves a memory at a path, recall returns the most relevant ones for a query, and recall_context assembles a multi-memory pack under explicit item and token budgets
- update_memory edits an existing memory's content or metadata, list_memory_versions shows what versions exist, forget deletes one with a reason recorded, and restore_memory brings a deleted one back
- explain_memory answers why a memory exists, or why it matched a particular query
- update_state writes one scoped working-state record — current task, next action, blocked reason, with a TTL — so a task is resumed rather than reconstructed
- record_event logs a decision or a milestone, and get_timeline reads authorised events newest first, filtered by scope, bucket, event type or session
- get_project_context returns a project's bounded pack in one call: state, TODOs, decisions, timeline, recent memories and an optional durable recall, all under item and token caps
- TODOs created with a due time, listed by open or completed status, and marked done
- add_expense records a ledger transaction with a backing memory and reuses a semantic duplicate instead of double-entering, with transaction listing and monthly totals by currency
- memory_stats gives the aggregate picture, and get_mcp_identity reports which account and agent the connection belongs to
A hosted service and an XMemo account. Connect over Streamable HTTP at https://xmemo.dev/mcp with the bearer token in an Authorization header, or run the local stdio proxy from @xmemo/client on Node.js 20 or newer with XMEMO_KEY set — the key is optional for discovery and required to execute anything. Optional headers attribute activity to an agent family, a local installation and a named device, and XMEMO_URL points at a different base URL when you are not using the default.
One command plus a key — npm install -g @xmemo/client, then supply credentials
