Back to Browse

Dmt Receipts MCP Server

Developer ToolsUse Caution4.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

Prepare and verify TAP/Ordinals payloads for AI agent memories on Bitcoin.

About

Prepare and verify TAP/Ordinals payloads for AI agent memories on Bitcoin.

Security Report

4.8
Use Caution4.8High Risk

DMT Receipts is a local stdio MCP server that canonicalizes memory JSON, hashes it, and optionally fetches public Ordinals content and Trac index metadata for verification; it does not broadcast transactions or handle credentials. The main concerns are that verify_inscription sends the inscription_id to external public endpoints (ordinals.com and tap.trac.network) and that the server handles no authentication, which is acceptable for a local tool, though users should avoid placing secrets in memory content since it is publicly inscribed. Permissions (outbound HTTP, WebSocket to Trac, optional env var read) match the stated purpose and the Developer Tools baseline. Supply chain analysis found 5 known vulnerabilities in dependencies (0 critical, 3 high severity).

4 files analyzed · 8 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

network_websocket

Check that this permission is expected for this type of plugin.

env_vars

Check that this permission is expected for this type of plugin.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-colchora-dmt-receipts": {
      "args": [
        "-y",
        "dmt-receipts-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub 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.

Reviews

No reviews yet

Be the first to review this server!