{"slug": "universal-memory-protocol-a-shared-format-for-agent-memory", "title": "Universal Memory Protocol – a shared format for agent memory", "summary": "A new Universal Memory Protocol (UMP) standardizes how artificial intelligence agents store and share memories across sessions, platforms, and vendors, filling a gap left by existing protocols for tool calling (MCP) and agent coordination (A2A). The protocol defines six core operations and a portable JSON record format that works with existing storage systems including files, SQL databases, Redis, and vector databases, allowing agents to carry knowledge rather than starting from scratch each time.", "body_md": "# Universal Memory Protocol\n\n## The third interoperability layer\n\n[Section titled “The third interoperability layer”](#the-third-interoperability-layer)\n\nAgents can already call tools (**MCP**) and talk to each other (** A2A**). What they\ncan’t do is **carry memory across sessions, agents, and vendors**. Every harness\nreinvents memory privately and non-portably. UMP fixes that.\n\nIn simple terms: you already have useful memories scattered across agent files, Claude/Codex project notes, Recall exports, Obsidian folders, Postgres, Redis, SQLite, and vector databases. UMP turns those into one portable memory shape and one small operation set, so new agents and new stores can extend the same memory instead of starting over.\n\n### Tools - MCP\n\nModel Context Protocol standardized how agents call functions and read resources.\n\n### Coordination - A2A\n\nAgent2Agent standardized how agents discover and invoke one another.\n\n### Memory - UMP\n\nUniversal Memory Protocol standardizes how agents **remember** - portable knowledge across sessions, agents, and vendors.\n\n## Implement it\n\n[Section titled “Implement it”](#implement-it)\n\nUse the MCP server when you want agent memory immediately. Use the TypeScript SDK when you are building a memory-aware app or agent runtime. Use HTTP when the client is Python, Go, Swift, a browser, or anything else that can send JSON.\n\n## Why it’s shaped like this\n\n[Section titled “Why it’s shaped like this”](#why-its-shaped-like-this)\n\nUMP is **not a new transport protocol**. It is an application-level memory\nprotocol that rides existing transports. The lesson of MCP is *minimal primitives\n\n- existing rails + great SDKs + neutral governance*.\n\n### Rides MCP\n\nThe primary binding is an MCP profile (`ump.*`\n\ntools). Any MCP host - Claude\nCode, Codex - can use UMP today, with zero new transport.\n\n### Six operations\n\n`capabilities · recall · remember · revise · forget · get`\n\n(+ optional\n`feedback`\n\n/`subscribe`\n\n). A conforming client is ~100 lines.\n\n### One portable record\n\nTyped, scoped, bi-temporal, signed JSON. Reuses W3C PROV + DID - no new vocabulary.\n\n### Adopt incrementally\n\nFour conformance levels. Ship an `*.ump.json`\n\nexport (L0) today; wire the full\nruntime (L3) when ready.\n\n## Any store can serve it\n\n[Section titled “Any store can serve it”](#any-store-can-serve-it)\n\nUMP is a protocol surface, not a database bet. [ @universalmemoryprotocol/core](https://www.npmjs.com/package/@universalmemoryprotocol/core) ships practical\nimplementations for local files, SQL databases, Redis, Recall, and vector engines\nso teams can adopt UMP where they already store memory.\n\n### Files first\n\n`JsonFileStore`\n\nwrites portable `memory.ump.json`\n\n; `MarkdownDirectoryStore`\n\nwrites human-editable `*.ump.md`\n\nrecords for repos and Obsidian-style vaults.\n\n### SQL + cache\n\n`PostgresStore`\n\n, `SqliteStore`\n\n, and `RedisStore`\n\naccept your existing client.\nNo native database driver is bundled into the core package.\n\n### Vector databases\n\n`VectorStore`\n\nplus `QdrantStore`\n\n, `PineconeStore`\n\n, and `WeaviateStore`\n\nwrappers\nlet embedding-backed engines keep their own retrieval quality.\n\n### Recall engine adapter\n\nRecall is one implementation: a richer memory engine behind the same UMP interface, not a dependency or lock-in.\n\n## Bring existing memory with you\n\n[Section titled “Bring existing memory with you”](#bring-existing-memory-with-you)\n\nPeople already have memory scattered through `AGENTS.md`\n\n, `CLAUDE.md`\n\n, Recall\nexports, Obsidian notes, and project Markdown. UMP keeps those formats separate,\nbut ships import bridges that turn them into portable UMP drafts with provenance.\n\n### Agent files\n\n`ump-import`\n\nreads `AGENTS.md`\n\n(the open standard) and `CLAUDE.md`\n\nas\nprocedural candidate memories, preserving the source path in provenance.\n\n### Vaults and folders\n\nPoint it at Markdown directories or Obsidian-style vaults to bootstrap a local UMP store without changing your notes.\n\n### Bridge, not lock-in\n\nImporters are adoption helpers. UMP remains the common record and runtime interface after the data is translated.\n\n## What’s standardized - and what isn’t\n\n[Section titled “What’s standardized - and what isn’t”](#whats-standardized---and-what-isnt)\n\nUMP standardizes **structure, provenance, access, and trust**. It deliberately\nleaves **intelligence** - extraction, ranking, decay, consolidation - to the\nengine underneath, so implementations compete on quality while staying interoperable.\n\n### Bi-temporal, supersede-never-delete\n\nValid-time + transaction-time. A fact that changes is closed and linked to its successor - not overwritten. The credible answer to staleness.\n\n### User-owned & signed\n\nThe operator - not the model vendor - holds the key. Records are content-addressed and signed with a DID. Portable, verifiable, no lock-in.\n\n### Injection-resistant by mandate\n\nMemory is attacker-controllable input. The spec *requires* a verify, filter,\nframe rehydration pipeline. Never string-interpolated into the prompt.\n\n### Consent in the record\n\nRetention, exportability, and redaction travel *with* the data and are enforced\nat every boundary.\n\n[Read the specification →](/specification/)Record format, the six operations, three bindings, conformance levels, and the trust model.", "url": "https://wpnews.pro/news/universal-memory-protocol-a-shared-format-for-agent-memory", "canonical_source": "https://universalmemoryprotocol.io/", "published_at": "2026-06-06 20:39:21+00:00", "updated_at": "2026-06-06 20:46:08.280093+00:00", "lang": "en", "topics": ["ai-agents", "ai-infrastructure", "ai-tools", "artificial-intelligence", "ai-research"], "entities": ["MCP", "A2A", "UMP", "Claude", "Codex", "Obsidian", "Postgres", "Redis"], "alternates": {"html": "https://wpnews.pro/news/universal-memory-protocol-a-shared-format-for-agent-memory", "markdown": "https://wpnews.pro/news/universal-memory-protocol-a-shared-format-for-agent-memory.md", "text": "https://wpnews.pro/news/universal-memory-protocol-a-shared-format-for-agent-memory.txt", "jsonld": "https://wpnews.pro/news/universal-memory-protocol-a-shared-format-for-agent-memory.jsonld"}}