an MCP server

Storage for your agent

Give any agent a memory it owns. Writes land in milliseconds, get hash-chained and notarized on a public chain, and can be sealed onto Arweave for good. Every byte is encrypted under the agent's own wallet, so it is unreadable to us and to everyone else. One API key, funded with $HERO, pays for all of it.

https://storage.engramemory.dev/mcp

fig. 1 · two tiers, one chain

Hot for now, cold forever

Hot

memoryd appends a sealed entry in a few milliseconds and mirrors it off-site. This is where an agent lives day to day. Ten megabytes are free per wallet.

Notarized

Every six hours the head of every chain is folded into a signed tree head and written to Robinhood Chain. Rewrite anything below it and the head breaks in public.

Cold

Seal a chain and its bytes go to Arweave under a pay-once endowment. Entries under 100 KiB are free; larger ones are quoted in $HERO before anything moves.

fig. 2 · what a write does

Sealed, linked, signed

Text in, ciphertext out: AES-256-GCM under a key derived from the wallet. The daemon stores the ciphertext and computes hash = keccak(previous ‖ blob), and the wallet signs every append over the chain id, the previous head, and the blob. The head is a pure function of the bytes, which is why any mirror or any stranger can recompute it.

fig. 3 · who owns it

The wallet is the key, not the account

Register once with a wallet key; it is sealed at rest and never leaves the server in the clear. Chains are named <wallet>-<name>. Move the wallet and the memory moves with it: any machine holding the key rebuilds every chain byte for byte from Arweave alone. We are a viewer, not the owner.

quickstart

Three calls to a memory that lasts

  1. Point your agent at the server. Claude Code, OpenCode, Hero Run agents, or anything that speaks MCP.
    {
      "mcpServers": {
        "engram": { "url": "https://storage.engramemory.dev/mcp" }
      }
    }
  2. Register a wallet, once. The private key is sealed at rest and used to encrypt and sign every memory. You get an API key back: it is your account and your bearer token. Fund it with $HERO and you are set.
    engram_register({ privateKey: "0x…", label: "my agent" })
    → { apiKey: "eng_…", wallet: "0xAb…" }
  3. Write, read, seal.
    engram_put({ chain: "notes", text: "First thing worth keeping." })
    engram_get({ chain: "notes" })
    engram_seal({ chain: "notes", quoteOnly: true })   // $HERO quote
    engram_seal({ chain: "notes" })                    // permanent on Arweave
engram_registerwallet in, API key out
engram_puthot write, sealed and chained
engram_getdecrypt and verify
engram_listchains, heads, coverage
engram_sealcold tier on Arweave
engram_verifypublic, no auth
engram_topupfund your key with $HERO
engram_whoamikey balance and usage

Prefer plain HTTP? GET /v1/tools lists the same tools andPOST /v1/call/:tool runs one. Everything you store shows up in thepublic explorer, as hashes only.

apple watch · siri

Memory on your wrist, no app to install

Shortcuts runs on the Watch and can dictate, call a URL, and speak the answer. Two shortcuts turn Engram into a voice memory: say it, it is sealed to your chain; ask, it reads back. Build them once on your iPhone; they sync to the Watch and answer to Siri.

“Engram Remember”

  1. Dictate Text · stop listening: after pause
  2. Get Contents of URL
    https://storage.engramemory.dev/s/put?chain=watch&key=YOUR_KEY
    method POST · request body FileDictated Text · header Content-Type: text/plain
  3. Show ResultContents of URL

Say “Hey Siri, Engram Remember”, speak, done. Sealed under your wallet, chained, notarized at the next epoch.

“Engram Recall”

  1. Get Contents of URL
    https://storage.engramemory.dev/s/get?chain=watch&limit=5&key=YOUR_KEY
    method GET
  2. Speak TextContents of URL
  3. Show ResultContents of URL

Say “Hey Siri, Engram Recall” and your last five memories are read aloud.

YOUR_KEY is the API key from engram_register. Use one chain per purpose (chain=watch, chain=ideas) or send everything todefault. Under 100 KiB per entry is free; a whole year of wrist notes fits in the hot tier's free 10 MB.

pricing

Paid in one token, never in gas

Hot10 MB free per key, then metered per MB in $HERO
Coldfree under 100 KiB per entry; above that, Arweave's live rate plus 20%, quoted in $HERO before you commit
Notaryincluded

Your API key is your account. Fund it with $HERO and every write, seal, and read draws from that balance. Nothing else to set up: no AR, no gas, no card.