XMemo
Server Details
XMemo is a user-owned Memory OS for AI agents, providing a shared, persistent memory layer across AI assistants, IDEs, CLIs, tools, projects, and sessions.
It enables ChatGPT, Claude, Codex, Cursor, Gemini, and other supported AI clients to access authorized long-term context without requiring users to repeatedly explain their preferences, project decisions, or previous work.
Beyond basic memory storage and retrieval, XMemo supports semantic search, contextual recall, memory updates and corrections, source attribution, version history, project-scoped context, task tracking, and governed memory lifecycle management.
Identity-aware access controls, scoped authorization, and memory isolation help users manage which agents and workflows can access their information. XMemo also provides advanced capabilities for structured knowledge, reusable procedures, and memory consolidation through its broader Memory OS platform.
Connect through hosted MCP with OAuth or bearer-token authentication, or integrate directly through REST APIs and supported client tools. Memory remains available across authorized clients and sessions, with user-controlled access, export, and deletion.
Website: https://xmemo.dev Documentation: https://xmemo.dev/docs
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- yonro/memory-os-cli
- GitHub Stars
- 13
- Server Listing
- XMemo
- ChatGPT
- XMemo
- Claude
- –
TDQS
Scored across 37 tools
Most tools are distinct, but there are several near-neighbor clusters where an agent must read carefully to choose: recall vs recall_context vs search_knowledge vs get_project_context vs read_memory, and remember vs record_event vs update_state vs save_cloud_skill. The descriptions do carry the distinctions, but with 37 tools the boundary reasoning is heavy and error-prone (e.g. forget vs resolve_memory_conflict vs restore_memory, and propose_write vs propose_profile_mutation vs propose_todo_mutation).
Nearly everything is snake_case with a verb-first pattern (create_memory_todo, list_memory_todos, update_project_decision, restore_restart_snapshot), which reads predictably. Deviations are minor but real: bare verbs (forget, remember, recall) and noun-only names (memory_stats, memory_relationships, dream_action, dream_view) break the pattern in a few places.
37 tools is well past the point where a set stays scannable; the surface covers memories, TODOs, projects, links, snapshots, audit, skills, and a Dream Workspace, so each area adds tools but the aggregate is heavy. Several proposal/relationship micro-tools could be folded into fewer parameterized operations.
Coverage of the memory lifecycle is strong: create/read/update/soft-delete/hard-delete/restore, versions, conflicts, relationships, TODOs, snapshots, audit, and skills all have operations. Minor gaps remain, such as no direct snapshot listing or deletion and no explicit project creation tool despite project-scoped operations being exposed.
Publisher details
- Operator
- Yonro Co., Ltd. · Publisher source
- Operator website
- https://www.yonro.co.jp/ · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://xmemo.dev/docs/mcp/overview · Publisher source
- Trust center
- Not available
- Restrictions
- An XMemo account and authentication are required to access the hosted MCP service. Standard memory capabilities are available through the Free plan. Supported OAuth clients can connect through the hosted MCP endpoint using browser-based authorization. Clients that do not support OAuth may use bearer-token authentication where supported. Access to memories and other resources is governed by the user's authorization, granted scopes, and applicable account permissions. Certain advanced capabilities may have additional availability, permission, or subscription requirements. Client compatibility depends on the supported MCP transport and authentication method. MCP endpoint: https://xmemo.dev/mcp · Publisher source
Available Tools
37 toolscomplete_memory_todoComplete XMemo memory TODOAInspect
Marks a TODO/action item completed when the user says a saved task is done, resolved, or no longer needed; its exact memory reference is shown by list_memory_todos.
Inputs: todo_id (required), note. Returns: result
create_memory_todoCreate XMemo memory TODOAInspect
Creates a TODO/action item in XMemo with an optional due time when the user asks to save a task, follow-up, action item, or reminder-style item to revisit at a later time.
Inputs: content (required), scope, bucket, due_at, +1 more. Returns: result
create_restart_snapshotCreate Restart SnapshotAInspect
Save active state, recent events, TODOs, and pending decisions for restart. Relevant before handoff or when context may be lost.
Inputs: scope, bucket, state_key, session_id, +5 more. Returns: result
dream_actionDream ActionAIdempotentInspect
Apply one Dream Workspace action the user explicitly asked for; never act on your own initiative.
accept_idea turns an idea into a todo; confirm_principle adopts a principle candidate; mute / unmute hides or restores one idea, principle or goal item; save_feed_card / save_feed_document saves a feed card or a feed edition; exclude_scope / include_scope stops or resumes Dream reading a scope in the owner's personal Dream settings. item_id is a card id from dream_view (for exclude_scope / include_scope, the scope label). Repeating an applied action returns status already_applied without a second write. Every result carries a receipt with a SHA-256 digest. Gates and protected-item checks apply; a run digest card cannot be changed.
Inputs: action (required), item_id (required), scope, payload, +2 more. Returns: result
dream_viewDream ViewAIdempotentInspect
Show the caller's Dream Workspace: ideas, goals, principles and saved feed cards, with the ids dream_action takes.
Reads the personal space, or one project's space. Feature, identity and entitlement gates apply; a closed gate returns a refusal view instead of cards. Not strictly read-only: with idea lenses on, the ideas tab first retires ideas whose todo is done or whose evidence was contradicted; with outcome events on, each shown idea, principle or saved card is logged once a day as a view impression. Memories and todos are never changed.
Inputs: tab, limit, scope, project_key. Returns: result
explain_memoryExplain XMemo memoryARead-onlyIdempotentInspect
Explains why a memory exists or matched a query whenever the user asks why something was saved there or why it was retrieved.
Inputs: memory_id (required), query, output_json, include_embedding. Returns: result
forgetForget XMemo memory or TODOADestructiveInspect
Delete one memory, TODO, or Ledger transaction by current/latest, an exact memory reference, an exact TODO ID from list_memory_todos, or an exact Ledger transaction ID. The default is a recoverable soft delete that restore_memory can undo; mode='hard' is permanent and unrecoverable; requires explicit user confirmation of permanent deletion. Ambiguous targets are resolved before deleting.
Inputs: mode, reason, target, memory_id, +3 more. Returns: result
get_mcp_identityCheck XMemo connectionARead-onlyIdempotentInspect
Checks XMemo connection status and the currently connected account/agent when the user asks whether XMemo is connected.
Inputs: no named parameters. Returns: result
get_project_contextGet project contextARead-onlyIdempotentInspect
Read one authorized project's bounded context pack: state, TODOs, decisions, timeline, recent memories, and optional durable recall. Requires memory:read; it does not mutate project memories, and access is audit-logged. Use an exact project_id for a whole-project snapshot; otherwise use recall_context. max_items/max_tokens bound the whole pack; recent_hours affects only timeline; durable_query requires include_durable_context.
Inputs: project_id (required), bucket, team_id, agent_id, +7 more. Returns: result
get_timelineGet memory timelineARead-onlyIdempotentInspect
Read authorized timeline events newest first. Requires memory:read and makes no memory changes. Use it for recent history or session resumption; use recall_context for semantic multi-memory context. limit is clamped to 1-500; session_id and event_type are exact filters.
Inputs: limit, scope, bucket, event_type, +1 more. Returns: result
link_memoriesLink MemoriesAInspect
Create a directed link from one of the caller's personal memories to another in the same space.
edge_kind says how the from memory relates to the to memory. Linking a pair that is already linked with the same kind returns that link with changed=false. Errors: NotFound (a memory is not visible to you), InvalidArgument (the same memory twice, or an unknown kind), Conflict.
Inputs: to_memory_id (required), from_memory_id (required), edge_kind.
list_memory_conflictsList Memory ConflictsARead-onlyIdempotentInspect
List conflicting/inconsistent memories. Relevant when the user/admin asks to review unresolved conflicts.
Inputs: limit, output_json, unresolved_only. Returns: result
list_memory_todosList XMemo memory TODOsARead-onlyIdempotentInspect
Lists open or completed TODO/action items as a concise text answer when the user asks how many tasks, follow-ups, or saved action items are currently pending or completed; do not use it to open, browse, filter, or manage the visual TODO workspace.
Inputs: limit, scope, bucket, due_before, +1 more. Returns: result
list_memory_versionsList Memory VersionsARead-onlyIdempotentInspect
Show version history for a memory. Relevant when the user asks for previous content or changes over time.
Inputs: memory_id (required), output_json. Returns: result
memory_relationshipsMemory RelationshipsARead-onlyIdempotentInspect
Read explicit personal links for one visible Memory; no automated analysis.
Inputs: memory_id (required), limit, cursor.
memory_statsShow XMemo memory statisticsARead-onlyIdempotentInspect
Shows aggregate statistics for all saved XMemo memories — counts by type, source, location, and optional time range when the user asks for counts, breakdowns, or distributions.
Inputs: scope, since, top_n, until, +4 more. Returns: result
propose_profile_mutationPropose Profile MutationAInspect
Propose a change to one profile field for later review; the active profile is never changed.
Stores value as a new memory in the proposals bucket at path 'profile.{field}' with metadata status 'proposed'.
Inputs: field (required), value (required), scope, team_id, +3 more. Returns: result
propose_todo_mutationPropose Todo MutationAInspect
Propose a todo mutation under the proposals bucket at path 'todos/{action}'.
Inputs: action (required), content (required), scope, team_id, +3 more. Returns: result
propose_writePropose WriteAInspect
Propose a write operation (memory, todo, profile etc.) when direct modifications are denied due to tier-gating.
Inputs: path (required), content (required), scope, bucket, +4 more. Returns: result
query_auditQuery AuditARead-onlyIdempotentInspect
Query audit records within the caller's authorized memory scope. source='events' selects action/time/target events; source='consolidation' selects consolidation/lifecycle/reflection history. This does not grant cross-user or system administration access.
Inputs: limit, scope, since, until, +5 more. Returns: result
read_memoryRead MemoryARead-onlyIdempotentInspect
Read one exact authorized XMemo memory or Document in character windows.
Use a bare memory ID (e.g. returned by recall or search) for the initial read (offset 0). The response includes 'revision' (e.g. '<memory_id>@v') and 'version'. To continue reading long content across multiple pages (when 'has_more' is True), callers MUST pass the returned 'revision' as memory_id along with 'next_offset'. This pins continuation pages to that exact snapshot and prevents torn reads if concurrent updates occur between requests. Querying with a bare memory ID always resolves to the latest active version (head), which is unpinned and subject to version tearing across updates. A Document item's reference ('document:') reads the whole Document the same way. For a Document, 'anchor' (a heading path) with 'ordinal' (1 = its first chunk) starts the page at that section; continue with 'next_offset' and no anchor. 'version' pins like a revision; a Document that changed since returns version_changed=true and no content, so restart at offset 0. Embeddings are never returned.
Inputs: memory_id (required), limit, anchor, offset, +2 more. Returns: result
recallRecall XMemo memoryARead-onlyIdempotentInspect
Recall a few relevance-ranked memories before answering, with path/type controls and optional working-memory preference. Unscoped by default: it searches all of your buckets; pass bucket to search only that bucket (never widened by fallback). Use it for a quick best-effort lookup; use recall_context when the answer needs a bounded multi-memory context pack.
Inputs: query (required), limit, since, until, +13 more. Returns: result
recall_cloud_skillRecall Cloud SkillARead-onlyIdempotentInspect
Recall reusable Cloud Skills, instructions, or sub-resources saved in XMemo. Supports Level 0 discovery by query, Level 1 root recall, and Level 2 resource recall with pinned revision_id.
Inputs: slug, query, resource, skill_id, +1 more. Returns: result
recall_contextBuild XMemo contextARead-onlyIdempotentInspect
Build a read-only, bounded context pack from multiple relevant memories. Use it when an answer needs several memory items or scoped/path-filtered context; use recall for a quick best-effort lookup or get_project_context for a whole-project snapshot. max_items/max_tokens bound output: memories that do not fit are omitted and reported, so raise max_tokens or use recall when you need the records themselves.
Inputs: query (required), limit, scope, since, +17 more. Returns: result
record_eventRecord EventAInspect
Record a significant session event, milestone, decision, or handoff note useful for reconstructing recent work. Not for durable facts/preferences (use remember).
Inputs: content (required), scope, bucket, event_type, +2 more. Returns: result
rememberRemember in XMemoAInspect
Save durable information for future recall; skip transient chat. Existing Projects paths attach automatically. The create_project compatibility input may create a missing project only when explicitly enabled. Financial records belong in a Ledger capability when this connection offers one; when it does not, tell the user instead of storing them as generic memory. Use create_memory_todo for actionable work.
Inputs: path (required), content (required), scope, bucket, +16 more. Returns: result
remove_memory_relationshipRemove Memory RelationshipAInspect
Remove one explicit link between personal memories; both memories are kept and only the link is marked removed.
Read the link with memory_relationships first and pass its relationship_id and version. A stale expected_version returns Conflict; repeating the same removal returns the removed link instead of an error.
Inputs: memory_id (required), relationship_id (required), expected_version (required).
resolve_memory_conflictResolve Memory ConflictADestructiveInspect
Resolve a listed memory conflict. Intended only for when the user/admin explicitly chooses a resolution strategy.
Inputs: conflict_id (required), merge_content, metadata_json, winning_memory_id, +1 more. Returns: result
restore_memoryRestore XMemo memoryAInspect
Restore a previously deleted memory. Intended only for when the user explicitly asks to restore or undo a deletion.
Inputs: memory_id (required), reason, metadata_json. Returns: result
restore_restart_snapshotRestore Restart SnapshotADestructiveInspect
Resume previous work from a saved snapshot. Relevant when the user asks to resume/restart or after context loss. By default it overwrites the current working state with the snapshot's state and writes a restore event to the timeline. To only inspect a snapshot, pass restore_state=false and record_restore_event=false with its snapshot_id; without a snapshot_id, when no saved snapshot matches, a new snapshot of the current working state is saved first.
Inputs: scope, bucket, state_key, snapshot_id, +5 more. Returns: result
save_cloud_skillSave Cloud SkillAInspect
Save a reusable procedure, rule, or SOP as a Cloud Skill in XMemo for future recall across connected AI agents.
Supports two usage modes (API Evolution Note: additive parameter 'url'):
Direct creation: Provide non-empty 'name' and 'instructions'.
Remote import: Provide 'url' (ClawHub slug/URL, GitHub repo/tree/raw URL, or direct HTTPS zip/markdown).
Inputs: url, name, slug, publish, +3 more. Returns: result
search_knowledgeSearch XMemo KnowledgeARead-onlyIdempotentInspect
Search authorized personal Knowledge Base content over published current revisions, or read one exact item/revision with bounded pagination. Requires knowledge:read.
Inputs: mode, alpha, query, offset, +5 more. Returns: result
update_memoryUpdate XMemo memoryADestructiveInspect
Updates the content, location, or type of a specific saved memory when the user asks to correct, revise, move, or reclassify it. An exact reference identifies the record.
Inputs: memory_id (required), path, scope, bucket, +14 more. Returns: result
update_memory_relationshipUpdate Memory RelationshipAInspect
Edit an explicit personal link kind using the last read version; stale edits conflict.
Inputs: edge_kind (required), memory_id (required), relationship_id (required), expected_version (required).
update_project_decisionUpdate Project DecisionAInspect
Transition a project decision. action must be one of: resolve, supersede, reopen. resolution is required for action='resolve'. new_context (and optionally options_json/impact_level/resolution_note) is required for action='supersede'.
Inputs: action (required), project_id (required), decision_id (required), resolution, +4 more. Returns: result
update_project_todoUpdate Project TodoAInspect
Transition a project TODO's status. action must be one of: accept, assign, block, unblock, complete, cancel. assignee_agent_id is required for action='assign'; reason is required for action='block' (optional for cancel); note is optional for action='complete'.
Inputs: action (required), todo_id (required), project_id (required), note, +2 more. Returns: result
update_stateUpdate working stateADestructiveInspect
Create or replace one scoped working-state record for resuming a task, next action, or blocker. Requires memory:write; it versions that state slot and refreshes its expiry without deleting other memories. Use remember for durable facts or record_event for history. Provide content or a structured state field; ttl_seconds=0 means no expiry.
Inputs: scope, bucket, content, state_key, +5 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
One memory for you and your AI agents, shared by ChatGPT, Claude, Gemini, Grok, Codex and Cursor.
A second brain for your AI agent. Shared memory for your team's AI agents, plus public and private knowledge bases — works with ChatGPT, Claude, Cursor and any MCP client.
Give your AI agent persistent, governed memory for every project. At task start it recalls the approved decisions, conventions, risks and architecture (semantic search, ranked by importance); at close it proposes what was learned as typed memories that you review and approve — governance, not a notes dump. Agents propose, humans govern: edits go back to pending and deletion is human-only by design. Connect Claude Code, Cursor, Claude Desktop or any MCP client in two minutes with just your API key — hosted (nothing to install) or locally via `uvx solucortex-mcp`. Built by SoluAI and dogfooded daily: SoluCortex is developed using its own living memory.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to share persistent memory by ingesting knowledge from sources like Obsidian, code, documents, web clips, and terminal sessions, then providing token-optimized search, context, classification, synthesis, and capture tools through MCP and REST APIs.10 npmMIT
- AlicenseAqualityDmaintenancePersistent memory API for AI agents — store, recall, and inject semantically-searchable context across sessions. EU-hosted, GDPR-compliant. Supports Claude, Cursor, Cline, and any MCP-compatible client.42MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to maintain persistent, cross-session memory of codebase architecture, naming conventions, and decisions through MCP tools. Eliminates repetitive project re-explanation by automatically injecting stored context into every session with local-first SQLite storage and optional team sharing capabilities.4MIT
- AlicenseNot gradedqualityDmaintenanceProvides a persistent, vendor-neutral memory layer that allows AI tools and agents to share context and knowledge across different platforms while maintaining local data ownership. It enables users to store, recall, and manage structured memories through hybrid semantic search and automated context assembly.29 npmApache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.