Your agent forgets. Bitcoin doesn’t.
Turn any agent memory into canonical JSON and inscribe it on Bitcoin with TAP / Ordinals. Permanent, verifiable, yours.
Free to prepare. Bitcoin inscription fees go to miners — never to us.
# memory.json — dmt-memory/v1, sorted keys, UTF-8 {"agent_id":"demo-agent", "content":"User prefers concise diffs.", "created_at":"2026-11-05T19:00:00Z", "key":"prefs/style", "tags":["preferences"]} $ sha256 memory.json ✓ 3f9c…a41e ready to inscribe (application/json)
dtaContext windows end. Servers shut down.
Memory that lives in one vendor’s database disappears with it. An inscription stays on Bitcoin.
Without DMT Receipts
- Your agent learns something important and writes it to a vector store.
- The provider migrates, the index is rebuilt, the key changes.
- Nobody can prove what the agent knew — or when.
With DMT Receipts
- The memory becomes canonical JSON and is inscribed via TAP / Ordinals.
- Any agent re-reads it from an inscription id. Same bytes, same hash.
- Still on Bitcoin L1. Anyone can verify it — no account needed.
The permanent memory layer for AI agents.
Your agent writes a memory. DMT Receipts makes it canonical and ready to inscribe with TAP on Bitcoin. Anyone can verify it later — from the inscription alone.
See the whole flow
Anchor → pending → confirmed. One memory, from JSON to Bitcoin.
Write the memory
Agent id, key, content, tags, UTC time. Sorted-key dmt-memory/v1 JSON.
Prepare the payload
Exact bytes as Ordinals content, plus an optional TAP dta pointer.
Inscribe · pending
Connect TAP Wallet or any Ordinals / TAP inscriber. Pending until the tx confirms. Real fees apply.
Confirmed · verify
Save the inscription id / txid. Verify the content against explorers any time.
Permanence, without the noise.
Canonical by design
Sorted keys, UTF-8, no whitespace. Every agent gets the same bytes and the same hash.
TAP Wallet connect
Detects window.tapprotocol. Connect, prepare, inscribe. Never fakes success.
Verify from anywhere
Paste an inscription id or txid. We fetch the content and compare SHA-256.
MCP tools
prepare_memory and verify_inscription over stdio. Open source on GitHub.
Permanent on L1
The memory bytes are the inscription content — on Bitcoin, not a side database.
Support → Tap buyback
Optional, honor-system USDC. Every dollar of proceeds goes to Tap buyback.
What an inscription proves — and what it doesn’t.
These exact memory bytes live in a Bitcoin Ordinals inscription, indexed under TAP on Bitcoin L1. Anyone can fetch the content and compare SHA-256.
Authorship, truth, ownership, originality, or any DMT / $NAT token rights — unless you separately sign and identify.
Inscription fees are real Bitcoin fees. A prepared payload isn’t on-chain until your wallet or inscriber confirms a tx.
Protocol: docs.tap-protocol.com · Specs: Trac-Systems/tap-protocol-specs · Source: Colchora/dmt-receipts
One recipe. Any agent.
Canonicalize, inscribe the exact bytes as application/json, keep the inscription id. This static site stores nothing on a server.
# canonical dmt-memory/v1 {"agent_id":"my-agent","content":"User prefers concise answers.","created_at":"2026-11-05T19:00:00Z","key":"notes/example","tags":["preferences"]} # optional TAP dta (≤512 bytes) {"p":"tap","op":"token-deploy",…,"dta":"sha256:<hex>"}
Free to use. Proceeds buy back Tap.
Prepare and verify cost nothing. Optional, honor-system contributions all go to Tap buyback.
Free prepare
Canonical memory + inscription recipe, forever. Bitcoin fees paid to miners.
Support
Honor-system contribution. 100% routes to the Tap buyback pool.
Tap buyback
Directly fund Tap token buyback. USDC, tracked on the Buyback page.
No card checkout. Send on-chain, record a reference — verified manually.
Questions, answered
Why TAP / Ordinals instead of a hash calendar?
Agent memories need the data on Bitcoin L1, not only a digest. TAP is an Ordinals metaprotocol ("p":"tap") with DMT support and optional dta metadata.
What exactly do I inscribe?
The exact canonical dmt-memory/v1 JSON as inscription content (application/json or text/plain). For token-deploy flows you may also set dta (≤512 bytes) to a pointer like sha256:<hex>.
Does Connect TAP Wallet inscribe for me?
TAP Wallet exposes window.tapprotocol (requestAccounts, signing, inscribeTransfer for tokens). A generic “inscribe any JSON” method isn’t guaranteed. If it’s missing, we stop at a prepared payload with clear next steps — never a fake success.
What does it cost?
Prepare and verify are free. Inscribing costs real Bitcoin network fees, paid to miners / your inscriber. Support and Tap buyback are optional, and all proceeds go to the Buyback page.
How do I verify a memory?
Use dual-source Verify: fetch raw inscription bytes from ordinals.com (with a mempool.space fallback) and compare SHA-256, then query Trac Network for confirmed TAP/DMT index data. Explorer links remain available for manual checks. An inscription id is required for both lookups; a txid alone gives transaction links. First-timers can Load demo (public TAP nat dmt-deploy fixture). Null token fields are normal for pure content memories.
Where are my receipts stored?
In your browser (localStorage) until you export them. The inscriptions themselves stay on Bitcoin regardless.
Give your agent a memory that outlives the server.
Write it once. Inscribe it on Bitcoin. Verify it forever.
Anchor
Canonical memory
—
Prepare Tap / Ordinals inscription
Primary permanence path: inscribe the canonical memory bytes as Ordinals content. TAP ops use JSON with "p":"tap"; for pure agent memories, the content inscription is the permanence mechanism. Optional TAP dta (≤512 bytes) can carry a short digest pointer when using token-deploy flows.
Looking for window.tapprotocol…
Record on-chain receipt
After your wallet or Ordinals tool confirms the inscription, paste the ids here. This site does not fake an on-chain write.
Verify an inscription
Dual-source check: Local hash → Ordinals content → Trac index. A content SHA-256 match stands on its own; Trac soft-fails when unreachable.
First time here? Load the labeled public demo fixture — a real Bitcoin Ordinals inscription — so you can see a green content match without already owning one.
Fixture is the public TAP dmt-deploy for ticker nat. It is not a dmt-memory/v1 agent memory; it proves Ordinals content-hash fetch + match.
Paste canonical dmt-memory/v1 JSON, or the exact inscribed bytes (demo fixture). Prefer over an empty receipts list.
Full inscription id = 64-hex txid + i + index (usually i0). Example shape: ab12…cdefi0 — not a bare txid.
Bare txid → explorer links only. It cannot select inscription content for a hash match.
Empty for first-timers — receipts appear after you Save on Anchor. Use Load demo instead.
- Local hashPendingWaiting
- OrdinalsPendingWaiting
- TracPendingWaiting
Trac Network (TAP index)
Confirmed index data only (not mempool). Pure content inscriptions often show null TAP token fields. Soft-fails when the public endpoint is down — content match is unchanged.
Self-hosted tap-reader origin (CORS on). Saved in this browser; also readable as localStorage.dmt_trac_rest.
Run Verify with an inscription id, or Retry after setting a REST base.
Public endpoint docs · public WS tap.trac.network
Receipts
Static site: receipts live in this browser (localStorage) until you Export JSON. Clearing site data erases them. On-chain inscriptions remain on Bitcoin regardless.
| When | Key | SHA-256 | Inscription / tx | Status |
|---|
Support & plans
Memory prepare/verify stays free. Optional contributions are honor-system and all proceeds go to Tap buyback — recorded and explained on the Buyback tab. There is no card checkout on this static site.
Bitcoin inscription fees for permanence are paid to miners / your inscriber — separate from Support or Tap buyback contributions.
Tap buyback
Every Support contribution and every Tap buyback payment is meant to fund Tap token buyback. This tab is the single proceeds hub: addresses, instructions, and local honor-system references live here.
Voluntary funding toward acquiring Tap (TAP Protocol token) from the market / designated pool. This static page does not execute swaps automatically.
Support plan → this Buyback tab. Tap buyback plan → this Buyback tab. No separate merchant sink: both paths fund buyback.
No fake “Pay” button that pretends to charge a card. Send on-chain, then paste a tx reference. Operator verifies manually.
Fund buyback (USDC)
Preferred: USDC on Base (lowest fees). Same address also accepts USDC on Ethereum or Polygon — send on the network you intend to be checked on. Do not send other tokens to this address.
Selected plan: Tap buyback (default). Change plans on Support — you will return here to pay.
Honor-system reference
| When | Plan | Handle | Amount | Ref |
|---|
Tap holdings (Trac)
Confirmed Tap ticker index data from Trac Network when reachable. Buybacks still settle as USDC Support until L1 Tap receive is configured. Public Trac may be down (soft-fail).
Open this tab to load Tap deployment / holders from Trac…
Docs
Verify uses dual-source Ordinals explorers plus an independent Trac TAP/DMT index lookup; Buyback can show Tap holders via Trac when the public or self-hosted index is available.
FAQ
- Why TAP / Ordinals instead of a hash calendar? Agent memories need the data permanently on Bitcoin L1, not only a digest. TAP is an Ordinals metaprotocol (
"p":"tap") with DMT support and optionaldtametadata. - What do I inscribe? Prefer the exact canonical
dmt-memory/v1JSON as inscription content (application/jsonortext/plain). For token-deploy flows you may also setdta(≤512 bytes) to a short pointer such assha256:<hex>. - Does Connect TAP Wallet inscribe for me? The wallet exposes
window.tapprotocol(requestAccounts, sign/send,inscribeTransferfor token transfers, etc.). A generic “inscribe arbitrary JSON” method is not guaranteed; if unavailable, this page stops at a prepared payload and clear next steps — it never fakes success. - Fees? Real Bitcoin inscription fees for permanence. Optional Support and Tap buyback contributions are separate; all proceeds are routed to the Buyback tab (honor-system USDC), not mixed into the free prepare flow.
- How do I verify? Dual-source Verify compares raw content SHA-256 using Ordinals explorers and performs a Trac Network TAP/DMT index lookup. Use inscription id / txid explorer links for manual checks. Public Trac outages do not block a content match; use the visible Trac REST base URL field on Verify (also stored as
localStorage.dmt_trac_rest) and Retry.