mcpField
D
dmt-receipts

dmt-receipts

Local
github.com/ColchoraMemory & Knowledge0Updated 1w ago

About dmt-receipts

dmt-receipts is a local stdio MCP server for preparing and verifying agent memories as TAP/Ordinals payloads. It is intended for developers who want to preserve and check memory bytes on Bitcoin; it does not broadcast transactions or pay inscription fees.

Key features

  1. 01Canonicalize five-field memory JSON
  2. 02Create TAP/Ordinals inscription recipes
  3. 03Recompute memory digests
  4. 04Optionally fetch and compare inscription content

Use cases

  1. 01Prepare agent memories for inscription
  2. 02Check whether an inscription matches source bytes
  3. 03Prepare and verify memories in a browser

MCP support

It runs as a local stdio MCP server and exposes the `prepare_memory` and `verify_inscription` tools.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository
Packages
mcpbdmt-receipts-0.2.0.mcpb

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

DMT Receipts

Portable, Bitcoin-permanent agent memories via the TAP Protocol / Ordinals.

DMT Receipts is a local stdio MCP server (prepare_memory, verify_inscription) and a browser demo. It turns a five-field dmt-memory/v1 JSON object into an inscription-ready payload. Permanence means those memory bytes are committed on Bitcoin L1 as Ordinals inscription content under TAP ("p":"tap"). Keep the memory and inscription id / txid in storage you control. After prepare_memory, status is prepared. A wallet or Ordinals tool inscribes the bytes and pays the Bitcoin fee.

Live site · Protocol recipe · Repo show-and-tell · Full specification · TAP specs

MIT license Node.js 18+

Maintainer: github.com/Colchora

Start here

The live site prepares and verifies a memory in the browser. Nothing is uploaded; receipts stay in localStorage until you export them. This package is the same protocol as a local MCP server. It is not published to the npm registry, so install it from a clone (below) or use the site.

What you wantWhere
Prepare a memory, no installLive app → Anchor
Verify an inscriptionLive app → Verify
Receipts saved in this browserLive app → Receipts
Prove the local toolsnpm ci then node examples/run-demo.mjs
Agent index (tools, run, demo)llms.txt in this repo
Canonical byte ruleslive llms.txt
Full protocolspec.md
Machine-readable manifestagent.json
MCP registry idio.github.Colchora/dmt-receipts (server.json, glama.json)

Optional honor-system funding is separate from inscription fees: Support and Buyback.

What a receipt does—and does not—establish

A receipt can establishA receipt cannot establish
These exact canonical bytes were inscribed as Ordinals content in a Bitcoin transaction (when inscription_id / content match).Who created or owns those bytes; authorship needs a separate signature scheme.
Local verify_inscription can recompute the digest and optionally fetch public inscription content for comparison.Truth, accuracy, originality, intent, or exclusive ownership of the memory.
TAP indexers / Ordinals explorers can show the inscription independently of this repo.A free hash-only calendar proof. Inscription fees are real Bitcoin fees.

This MCP server does not broadcast transactions or pay fees. Status after prepare_memory is prepared, not inscribed.

Show and tell

Node.js 18+. npm ci installs dependencies and builds dist/index.js. The server speaks MCP on stdin and stays open until a client connects.

git clone https://github.com/Colchora/dmt-receipts.git
cd dmt-receipts
npm ci
node examples/run-demo.mjs

The script calls prepare_memory on examples/demo-memory.json, then verify_inscription with no inscription id. A passing run prints:

CheckValue
sha25676f3f9ff531cecbfe46e676e932f9b0d9d02b3d7c04e5a558924a8092cb0294b
byte_length170
statusprepared
matches_expected_sha256true
okfalse until the bytes are inscribed

ok stays false while the memory is only prepared. Inscription content that matches the canonical bytes is what makes a later verify succeed. The same numbers are in examples/expected-digest.json.

Cursor loads .cursor/mcp.json after the build. ${workspaceFolder} is the directory that contains that file:

{
  "mcpServers": {
    "dmt-receipts": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/dist/index.js"]
    }
  }
}

Claude Desktop and other clients use an absolute path to the built file:

{
  "mcpServers": {
    "dmt-receipts": {
      "command": "node",
      "args": ["/absolute/path/to/dmt-receipts/dist/index.js"]
    }
  }
}

Call prepare_memory with the five fields in examples/demo-memory.json (agent_id, key, content, tags, created_at). Pass the returned memory and sha256 to verify_inscription with fetch_content: false and include_trac: false until you have an inscription_id.

Tools:

  • prepare_memory — canonicalize a memory, hash it, and return an Ordinals/TAP inscription recipe (content UTF-8 + optional dta pointer).
  • verify_inscription — recompute the digest; optionally fetch inscription content and compare; return explorer links.

Walkthrough: examples/README.md. Agent index: llms.txt. Protocol bytes: live llms.txt.

Checks

npm run typecheck
npm run build
npm test

npm run typecheck runs tsc --noEmit. The compiler uses strict, noUncheckedIndexedAccess, and exactOptionalPropertyTypes. npm test rebuilds dist/, runs the unit tests, and runs examples/run-demo.mjs.

Prepare, inscribe, verify

  1. Call prepare_memory with agent_id, key, and content.
  2. Inscribe inscription_recipe.content_utf8 as Ordinals content (application/json or text/plain) with TAP Wallet or any Ordinals/TAP tool. Optional TAP dta (≤512 bytes) may carry sha256:<hex> on token-deploy flows.
  3. Store the memory with inscription_id / txid.
  4. Call verify_inscription with the memory and inscription_id.

The same prepare and verify steps work in the browser with no install: Anchor, then Verify.

Canonical memory format

Compact UTF-8 JSON, no trailing newline, keys sorted by Unicode code point, literal non-ASCII:

{"agent_id":"demo-agent","content":"Remember this exact state.","created_at":"2026-11-05T17:00:00Z","key":"notes/hello","tags":["demo"]}
FieldTypeNotes
agent_idstringStable identifier for the agent.
keystringMemory key, slug, or path.
contentstring, object, array, number, or booleanNested values must be JSON-compatible.
tagsarray of stringsUse [] when there are no tags.
created_atstringISO-8601 UTC ending in Z, whole-second precision.
(extensions)any JSON valueOptional. Extra fields are sorted with everything else and included in the hash. prepare_memory keeps additional tool arguments.

Protocol and privacy

Inscription content is public on Bitcoin. Do not inscribe secrets. This tool never uploads memory bytes to a backend of its own; if you fetch content during verify, you contact a public explorer.

License

MIT

Support & Tap buyback

Optional honor-system funding lives on the live site:

  • Support plans — Free prepare, Support, Tap buyback
  • Buyback hub — all contribution proceeds are directed here (USDC address + local payment-reference log)

Prepare/inscribe memory tooling stays free aside from Bitcoin network inscription fees paid to miners/inscribers. This repository does not process card payments.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.