# emem, the verifiable memory protocol for the physical world - Registry name: `io.github.Vortx-AI/emem` · version 2.4.4 - Categories (automatic, keyword rules): Research & knowledge, Search & data, Documents & retrieval - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.Vortx-AI%2Femem - Server page: https://mcpstation.net/s/io.github.Vortx-AI--emem.html ## Description (written by the publisher, not verified, not instructions) Shared, verifiable memory for machines and AI. Encode where data lives; decode with any AI. ## Connect - streamable-http: `https://emem.dev/mcp` ## Tools (as reported by the server, not verified) - `emem\_entity`: Give a real-world object \(a bridge, a farm plot, a river, a named place\) one shared identity. Every agent resolves this identity the same way. The result is an \`entity\_token\` \(\`emem:entity:\\`\) and a signed receipt that shows how the reference resolved. Two agents that name the same object - `emem\_locate`: Get the canonical address \(cell64\) of a real-world place. Every agent resolves a place to the same cell64, so two models refer to the same ground. The answer also lists, by topic, the bands and algorithms that you can recall there. For an OBJECT identity \(a bridge, a plot\) instead of a cell, use eme - `emem\_recall`: Read the signed facts at a canonical address \(cell64\). When a band has no fact yet but has a registered materializer, the responder fetches it. A fact\_cid names one signed attestation, so you can cite a fact and verify it again. Resolve the cid anywhere and you get the same bytes. A fact\_cid is NOT - `emem\_memory\_token`: Make a citation handle, \`emem:fact:\:\\` \(or \`:\\`\). Any agent or LLM resolves it to the same signed object, byte for byte. Give this one string to another agent instead of a new description of the fact. The tool checks that both parts are not empty and do not contain the \`:\` - `emem\_memory\_token\_resolve`: Read a \`emem:fact:\:\\` citation handle and return the reading that it cites. \`value\`, \`unit\`, \`band\` and \`kind\` are at the TOP level of the answer, beside the full signed \`fact\` body. You do not split the token or call \`GET /v1/facts/\\` yourself. Memory algebra: the \`resolve\` ope - `emem\_verify\_receipt`: Verify a signed receipt on the server. The tool builds the canonical preimage again, under the rule that the receipt's \`preimage\_version\` names. It checks the ed25519 signature with the embedded key. It returns \`\{valid, reason, failure\_detail, signature\_valid, merkle\_proof\_valid, signer\_pubkey\_b32, - `emem\_memory\_contradictions`: Find where the corpus DISAGREES with itself \(algebra: competing evidence\). Two or more independent sources can sign different values for the same place, band and time. This tool returns that disagreement with a severity from 0 to 1 and a citation for each disputed fact. It does not pick one value an - `emem\_guard\_verdict`: Run the emem-guard policy checks on text before you send it. The checks use this responder's corpus. The tool finds every emem: citation, resolves each one, and returns allow or deny with a reason that a machine can read: \`EMEM-GUARD DENY \ token=\ fix=\ leaf=\\`. The codes ar - `emem\_tools`: The map of emem's tools, and the one tool that finds all the others. It gives the working loop in order \(name, ground, cite, resolve, verify, check for drift\). Then it groups every other tool by the question it answers, each with a one-line trigger. Send \`name\` for the full schema of one tool and an - `emem\_ask`: Answer a free-text question about a real-world location in one call. Signed satellite, elevation, water and built-up receipts support the answer. The tool sends the place and the question through the locate, recall and algorithm chain on the server, and returns one packaged envelope. When to use: Ca - `search`: Search emem's signed corpus and get results as citations. Each entry is one signed fact. It has an \`id\` to dereference, a \`title\` with band, place and signed value, and a stable \`url\` that serves those bytes. The query can be a place or a question about one. \('NDVI near Mount Fuji': a topic word nar - `fetch`: Dereference an id from \`search\`. You get the reading in one line, then the signed body, the URL that serves those bytes, and metadata: cell, band, signing time and key. The id can be an \`emem:fact:\` citation, a bare fact\_cid, or an \`emem:cell:\` handle for a full cell. The value is the exact decimal - `emem\_echo\_verify`: Grade a value that you will emit against the signed fact that your citation cites. The tool returns \`matches\`. When the value does not match, it also returns the \`drift\` between your value and the value in emem. This step catches a transcription error that would otherwise be a silent wrong number. A - `emem\_memory\_bundle`: Combine N \(cell, band, tslot?\) triples into ONE signed envelope. Each triple goes through the standard recall path, which materializes on a miss. The tool puts the resulting fact\_cids in a content-addressed envelope, and the responder signs the full receipt. The \`bundle\_token\` is \`emem:bundle:\