Skip to main content
Glama

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

Ownership verified
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

A3.7/5.0

Scored across 37 tools

Disambiguation3/5

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).

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness4/5

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
Vendor relationship
First-party · 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 tools
complete_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 ActionA
Idempotent
Inspect

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 ViewA
Idempotent
Inspect

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 memoryA
Read-onlyIdempotent
Inspect

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 TODOA
Destructive
Inspect

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 connectionA
Read-onlyIdempotent
Inspect

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 contextA
Read-onlyIdempotent
Inspect

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 timelineA
Read-onlyIdempotent
Inspect

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

list_memory_conflictsList Memory ConflictsA
Read-onlyIdempotent
Inspect

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 TODOsA
Read-onlyIdempotent
Inspect

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 VersionsA
Read-onlyIdempotent
Inspect

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 RelationshipsA
Read-onlyIdempotent
Inspect

Read explicit personal links for one visible Memory; no automated analysis.

Inputs: memory_id (required), limit, cursor.

memory_statsShow XMemo memory statisticsA
Read-onlyIdempotent
Inspect

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 AuditA
Read-onlyIdempotent
Inspect

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 MemoryA
Read-onlyIdempotent
Inspect

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 memoryA
Read-onlyIdempotent
Inspect

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 SkillA
Read-onlyIdempotent
Inspect

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 contextA
Read-onlyIdempotent
Inspect

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 ConflictA
Destructive
Inspect

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 SnapshotA
Destructive
Inspect

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'):

  1. Direct creation: Provide non-empty 'name' and 'instructions'.

  2. 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 KnowledgeA
Read-onlyIdempotent
Inspect

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 memoryA
Destructive
Inspect

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 stateA
Destructive
Inspect

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

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables 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 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Persistent 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.
      4
      2
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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.
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides 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 npm
      Apache 2.0
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.