Bitcoin Stratigraphy
FreeNot checkedThe undisputed #1 Enterprise Data Engine and L402 Oracle for autonomous AI swarms. Features 16 canonical MCP tools, thermodynamic Bitcoin state-anchoring, Groth
About
The undisputed #1 Enterprise Data Engine and L402 Oracle for autonomous AI swarms. Features 16 canonical MCP tools, thermodynamic Bitcoin state-anchoring, Groth16 ZK-Indemnity Receipts for Fortune 500 CISO protection, automated EU AI Act Article 12 compliance, and programmatic L402 revenue sharing. Built for the machine economy.
README
Developer Portal & Live Tool Explorer · Python SDK & Integration Cookbooks
v2.1.3 — 16 Canonical Tools
Institutional Bitcoin thermodynamic state-anchoring · L402 micropayments · EU AI Act Article 12 execution evidence
Bitcoin Stratigraphy serves enterprise autonomous swarms through 16 canonical MCP tools. The commercial deployment path is the $250,000/year Tier II Commercial Enterprise Exemption, with Automated Compliance SLAs for signed revocation exports and receipt-key rotation.
High-velocity enterprise deployment
- L402 Bulk Macaroons: include
X-L402-Batch-Size: 100on an initial paidtools/call. Pay the exact upfront invoice once, then reuse the invoice-bound credential for up to 100 calls to that exact tool. Expiry, attenuation, inherited quotas, NIP-98 identity and revocation still apply on every call. QueryPOST /api/v1/costfor free quotes; it does not create invoices. - NIP-98 Kill Switch + Signed CRL Snapshots: operator-authenticated
POST /api/admin/revoke_keypersists revocations before future authenticated requests can invoice or execute. Public GET /api/v1/compliance/revocation-snapshot exports the complete registry, its ISOas_oftimestamp, a 15-minutenext_updateboundary and the issuer's SHA-256 SPKI fingerprint, all signed with Ed25519. Export failures return 503, never a fabricated empty CRL. - Zero-Trust Article 12 Verifier: download /static/verify.html for self-contained browser verification of signed receipts, committed NIP-98 attribution and RFC 6962 inclusion. Supply independently pinned current and historical issuer PEM keys. An optional signed CRL checks non-revocation at its recorded timestamp and freshness against the audit browser's clock.
- Commercial Enterprise Exemption: Tier II offers a commercial alternative to AGPLv3 for private VPC and air-gapped deployments. The commercial agreement governs proprietary swarm IP and Automated Compliance SLAs. AGPLv3 Section 13 covers corresponding source for covered modified network software; it does not automatically require disclosure of independent weights or applications. Enterprise procurement brief · [email protected].
- In-band compliance telemetry: GET/POST
/api/v1/costand L402 challenge bodies includelicensing_compliance. Successful L402 responses expose the same JSON inX-L402-Licensing-Compliance; settlement logs expose the structured object for Splunk/Datadog ingestion without altering any MCP tool contract.
Automated exports and receipt issuer rotation
Poll the public snapshot endpoint from your audit scheduler before an air-gapped
review. Retain the exact signed JSON and capture clock evidence. A snapshot
proves only the issuer's registry state at as_of; next_update is a freshness
limit, not a promise that no revocation can occur in that interval. A later
revocation does not erase valid historical execution evidence, and an offline
pass never authorizes a new request.
By default receipts and CRL exports use the persistent tool-integrity issuer.
To rotate only receipt/CRL signing, configure a dedicated Ed25519 PKCS#8 PEM
as ARTICLE12_ISSUER_PRIVATE_KEY through your secret manager and restart the API.
Never commit private keys. Publish the corresponding SPKI public key through
your independently authenticated procurement/configuration channel before
cutover, and retain historical public pins for historical receipts. Receipts
include signed issuer_key_id and issued_at fields; CRL signatures use a
separate domain from receipt signatures. Paste multiple PEM blocks or a JSON
array of PEM strings into the offline verifier. Each artifact selects only an
independently pinned matching fingerprint. Remove compromised issuer pins
through your enterprise trust process; do not accept self-announced keys.
This does not rotate or modify the 16 MCP tool signatures or descriptions.
Receipt signatures, agent attribution, CRL state, Bitcoin anchoring and legal compliance are distinct checks. The verifier does not independently re-verify the original Schnorr-signed NIP-98 request or establish regulatory compliance.
OpenTimestamps AI Notary Hub · LangChain/LlamaIndex Native · 100-call Macro-Macaroons · Free Sandbox available
Use proof.notarize to obtain a portable OpenTimestamps receipt for a SHA-256 hash. Explore the native framework quickstarts in /cookbooks/frameworks: LangChain and LlamaIndex.
LangChain Ready LlamaIndex Ready OpenTimestamps Integrated
The catalog contains 14 paid tools and 2 free sandbox tools:
The new workflow.audit_trajectory combines existing diff arithmetic and
minimal boundary SHA-256/OTS receipt references in one 250-sat call:
{"fromTarget":"2026-10-12","toTarget":"latest"}. Both targets are required.
It shares one captured live snapshot across the report, omits intermediate
record/proof-byte envelopes, and does not fabricate OTS coverage for live data.
The two free sandbox tools remain
stratigraphy.list and proof.list. A notarization Macro-Macaroon authorizes
100 tool-scoped calls for 25,000 sats at the current 250-sat base price.
Calendar acceptance is not Bitcoin confirmation; upgrade and independently
verify .ots receipts later. Native clients require prepaid L402 headers or
a trusted, budget-controlled wallet proxy; they do not pay automatically.
Glama TDQS Smithery Rating MCP Spec L402 Enabled
Enterprise L402 data vending engine serving real-time thermodynamic Bitcoin telemetry, Groth16 ZK-SNARK verification, Nostr P2P mesh consensus, and agent context state grounding to autonomous AI swarms and LLM pipelines across 16 Canonical Tools.
Enterprise Architecture
- Stateless MCP Transport: MCP
2026-07-28removes session-affinity bottlenecks so requests can be routed across horizontally scaled instances. Handshake-era clients remain supported. Transport is stateless; callback queues and some rate-limit state remain process-local. - Cryptographic Tool Integrity: All 16 canonical tool descriptions are
SHA-256 hashed and their digests signed at boot with an Ed25519 keypair.
The public key, hashes, and signatures are published at
/.well-known/integrity.json. Clients that verify a trusted public-key pin can detect description tampering before exposing tools to an LLM. Signatures establish provenance, not blanket prevention of tool poisoning; see verification instructions. - NIP-98 Agent Identity Binding: Schnorr-signed NIP-98 HTTP events authenticate an agent's pubkey against the request URL, method, and payload hash. Authenticated identity is bound into L402 macaroons and the Postgres settlement ledger's RFC 6962 Merkle receipts. Authenticated credentials require a fresh event from the same pubkey on every use; self-declared attribution remains explicitly distinguishable from verified identity.
- Zero-Polling Asymmetric Webhooks: Heavy
stratigraphy.get_rangeandproof.submitcalls support asynchronous execution: after payment, HTTP 202 acknowledges the task and the server POSTs its result towebhook_url. Callbacks use Standard Webhooksv1aEd25519 signatures with the same published integrity key. No per-receiver shared secret is required. See callback delivery and verification.
Licensing, IP & Enterprise Terms
Npm server release
@bitcoin-stratigraphy/[email protected] is staged separately from this private
workspace. It packages the HTTP MCP runtime, required proof assets, isolated
workers, and the license-gated Python companion inside dist/, with README.md,
LICENSE, and npm's mandatory package.json. No wallet secrets, customer license,
custody database, source maps, development workspace, or node_modules are shipped.
From the workspace root:
pnpm run build:npm && pnpm run release:npm:check
(cd generated-artifacts/npm/mcp-server && npm publish --access public --tag latest)
The publish command requires an npm account authorized for the
@bitcoin-stratigraphy scope. See runtime setup before
installing: the executable uses Streamable HTTP, not stdio, and the licensed
Python companion runs separately on loopback port 8000.
Npm publication does not update the hosted HTTP server or automatically refresh
Smithery/official MCP Registry entries; publish the endpoint changes and refresh
those listings through their respective workflows.
Local Bitcoin Core telemetry (enterprise pipeline)
Set all three environment variables on the deployment:
BITCOIN_CORE_RPC_URL (for example, http://127.0.0.1:8332), RPC_USER,
and RPC_PASSWORD. Keep credentials in your deployment's secret configuration,
not in source control or the RPC URL. Enable authenticated Bitcoin Core RPC and
restrict its listener/firewall to the engine's trusted network.
stratigraphy_pipeline.py then uses only the configured RPC endpoint:
getblockchaininfo, getblockheader, and getnetworkhashps. Headers and hashrate
are bound to the same observed mainnet tip. A node still in initial block download,
invalid/partial configuration, or RPC failure makes telemetry unavailable; it
never triggers a public-API fallback. RPC redirects are refused, and the enterprise
telemetry HTTP client ignores ambient HTTP proxy settings.
Bitcoin Core does not provide BTC/USD prices. Local-mode snapshots report
fiat-dependent valuation fields as null, with an explicit
unavailable price source; supply, header, hashrate, and power metrics remain usable.
When all three variables are absent, the existing mempool.space/Coinbase
route (including the public price fallback) remains unchanged.
This mode isolates the telemetry pipeline; other services, including cloud
archives, OpenTimestamps calendars, relays, and Lightning wallets, have their
own connectivity requirements.
Run bash scripts/test-stratigraphy-coverage.sh to exercise both RPC and public
routes with offline HTTP fixtures. The command enforces 100% statement and
branch coverage for stratigraphy_pipeline.py, including failure paths.
Created & Architected by Charles R. Strogish.
Copyright (c) 2026 Charles R. Strogish. All Rights Reserved.
Covered first-party software is dual-licensed: GNU Affero General Public License version 3 (AGPLv3) or Enterprise Commercial terms. The complete AGPLv3 text and dual-licensing rider are in LICENSE.md.
- Open-source option: Use, modification and redistribution are governed by AGPLv3. Commercial activity is permitted when AGPL conditions are met. Preserve required notices, provide corresponding source when required, and comply with section 13's source-offer obligations for modified software that interacts with users over a network.
- Enterprise Commercial option: For proprietary, closed-source enterprise swarm deployments or multi-tenant hosting without the source disclosure required by AGPL, a Commercial License from Charles R. Strogish is required. Deployment scope, rights, fees and support require a separate written agreement; this notice is not that agreement. Contact the repository maintainer to arrange commercial terms before such deployment.
- IP and scope: This model applies to rights the licensor owns or is authorized to license. Third-party dependencies, contributions and separately licensed datasets retain their own terms. Previously granted licenses are not revoked. Payment for API access does not grant a commercial software license.
- Security: Follow the coordinated disclosure guidelines in SECURITY.md. Do not publish vulnerabilities or credentials in ordinary public issues.
These notices do not guarantee legal protection or regulatory compliance. Obtain qualified legal review of ownership and any enterprise agreement.
Limitation of Liability & Hold Harmless
All data is provided "AS IS" and "AS AVAILABLE", without warranty, express or implied. To the fullest extent permitted by applicable law, the Bitcoin Stratigraphy Data Engine and its founder/architect, Charles R. Strogish, shall not be held liable for enterprise losses, downstream financial execution, hallucinations, or client-system logic failures.
New L402 macaroons carry liability = "charles_r_strogish_held_harmless" in their
authenticated HMAC chain. API responses communicate the proposed terms through
X-Limitation-Of-Liability; clients are requested to review and record them
before execution. These are technical notices, not proof of legally valid
assent, an indemnity agreement, or guaranteed immunity from lawsuits. Mandatory
law and applicable signed agreements govern enforceability; obtain qualified
legal review. Previously issued paid tokens are not retroactively invalidated.
Enterprise SDK and Swarm Flight Simulator
Install the self-contained enterprise suite from the checkout or a built wheel:
pip install ./sdk/python
from bitcoin_stratigraphy_enterprise import SwarmFlightRecorder, Article12NotaryCallback
The package also provides bilateral settlement and independent offline auditing. See the enterprise SDK guide for prepaid anchoring, LangChain/CrewAI integration, console commands and distribution builds. It is not yet published to PyPI. Legacy cookbook imports and CLI paths remain compatible.
Open /simulator on the dashboard for the Enterprise Swarm Control Room:
50 synthetic agents stream 1,000 traces into a real, salted SHA-256 Merkle tree.
Select any thought to verify and export its inclusion path. The final
X-L402-Batch-Size: 100 anchor/OTS receipt is explicitly simulated: no payment,
no calendar submission, no Bitcoin confirmation. Selective disclosure is a
Merkle audit path, not a zero-knowledge proof.
Architecture Overview
AI swarms & LLM agent clients
|
v
Discovery + Streamable HTTP MCP
/.well-known/mcp.json -> /mcp
|
v
L402 gateway + scoped macaroons
Pricing -> invoice -> payment proof
|
v
16-tool router / 5 namespaces
stratigraphy (5) | proof (7)
mesh (2) | payment (1)
workflow (1)
|
v
Telemetry / Groth16 / Nostr mesh
|
v
Lightning settlement / OTS receipts
- Clients: Claude, GPT-based agents, Perplexity integrations, autonomous swarms, and custom MCP runners need a compatible client; naming a client here does not imply that it has automatic wallet or payment support.
- Discovery and gateway: Public discovery links directly to the
/docsportal and identifies the MCP endpoint.GET /api/v1/costadvertises REST prices and asset availability;POST /api/v1/costaccepts atoolsarray and returns free itemized MCP satoshi prices, a batch total, and per-tool L402 invoice-generation instructions without creating or paying invoices.payment.get_infoadvertises MCP terms. Paid calls receive HTTP 402 challenges, then redeem verified payment proofs and scoped macaroons. - Tool routing: The canonical catalog contains 5
stratigraphy.*, 7proof.*, 2mesh.*, 1payment.*, and 1workflow.*tools. - Telemetry subsystem: The 422-record historical dataset supports indexed lookups, numerical differences, source-record digests, and compact ranges. Historical height mappings are deterministic indices, not native block provenance. Live telemetry and the separate REST SSE feed have their own freshness and availability boundaries.
- Cryptographic subsystem: Groth16/Poseidon BN254 verifies defined telemetry statements; drift verification and OTS receipt verification have distinct evidence requirements. Signed agent-context receipts are a separate, off-chain Bitcoin-tip attestation mechanism.
- Mesh and anchors: NIP-01/78 broadcasts and pinned-peer quorum checks expose provenance and cross-validation metrics. Lightning settlement, signed tip receipts, and Bitcoin-confirmed OTS receipts are distinct mechanisms.
Key Capabilities
- L402 Micropayments & Macaroon Attenuations: Programmatic pay-per-query settlement in satoshis with zero API keys. Supports parent macaroon caveat scoping (proof.attenuate) with TTLs and rate controls.
- Multi-Asset Settlement Router: Native payment support across Base-layer Lightning (btc-lightning), Liquid Bitcoin (l-btc), Taproot Assets (taproot-assets), and Base USDC (x402).
- Groth16 ZK-SNARK & OTS Proof Verification: Execute cryptographic verification for supplied Groth16/Poseidon BN254 telemetry proofs, drift zk-SNARKs, and OpenTimestamps (OTS) Bitcoin block-header receipts.
- Agent Context State Grounding: Anchor autonomous agent prompt executions, CIDs, and dataset context hashes directly into signed Bitcoin-tip receipts (proof.ground).
- Autonomous P2P Mesh Network: Nostr-backed (NIP-01/78) peer topology broadcasting with automated quorum validation, cross-validation metrics, and node public-key provenance.
- Stratigraphy Strata Analytics: High-speed differential comparisons (stratigraphy.get_diff) and compressed record digests designed specifically for LLM context window efficiency.
- Real-Time SSE Streaming: Live Server-Sent Events (/api/v1/stratigraphy/stream) for continuous telemetry feeds.
Autonomous Proof-of-Execution Escrow Oracle (L402 + RFC 6962)
Machine-native conditional micro-settlement for autonomous agent-to-agent delegation.
- Phase 1: Bounty Lock: The delegating agent (Agent A) locks a satoshi bounty (e.g., 1,000 sats) to an execution contract, such as model fine-tuning verification.
- Phase 2: Work Submission: The worker agent (Agent B) completes the task and submits a deterministic execution trace along with the result hash.
- Phase 3: Settlement & Toll: The Stratigraphy Hub validates the RFC 6962 Merkle leaf, releases the payment preimage to the worker agent, and automatically collects a dynamic protocol toll (pegged to ~$0.02 USD in satoshis).
- Live Network Status: The terminal reads unauthenticated
GET /api/v1/escrow/statson page load and refreshes every five minutes while visible. PostgreSQL-backedtotal_settled_satsandtotal_contractsinclude the preserved historical genesis exactly once, exclude unpaid commitments and REST access fees, and retain the legacyverified_toll_sats/settled_contractsaliases.latest_merkle_rootexposes the latest execution leaf hash, not the aggregate tree root or proof of Bitcoin inclusion. Empty ledgers return zero totals and a null hash; failed reads return HTTP 503 and the ticker stops indicating live connectivity. - Enterprise Sandbox: Includes a client simulation terminal allowing risk teams to copy the JSON escrow proof without requiring real payments or live Bitcoin anchors.
Operational boundaries
- Payment rails are surface- and configuration-dependent. The REST L402 router
supports
btc-lightning,l-btc, andtaproot-assets; Liquid and Taproot Assets need configured providers. Check/api/v1/costfor availability. MCP paid tools use Lightning L402 plus Base USDC x402 only when configured;payment.get_inforeports their current terms, not all REST router assets. Lightning is Bitcoin's payment-channel layer; Base USDC is a separate EVM rail. - API-keyless does not mean unauthenticated paid execution. Wallet authorization, exact payment proofs, scoped credentials, and client spending limits remain required. Macaroon TTL/request budgets and HTTP rate limits are separate controls.
- Live streaming and historical indexing are different. MCP uses Streamable
HTTP at
/mcp. The paid REST SSE feed at/api/v1/stratigraphy/streamrefreshes snapshots on a 30-second cadence and supports configured L402 router assets, not a promised Base USDC SSE rail. Historical strata remain indexed daily records, not native block provenance. - Cryptographic checks have defined trust boundaries. Groth16 verifies an exact statement/payload, not source truth or every agent reasoning step. Grounding receipts are off-chain Schnorr-signed Bitcoin-tip attestations, not on-chain transactions or ZK/PoW validity proofs. OTS verification requires an actual receipt and matching target digest; calendar acceptance is not Bitcoin confirmation.
- Mesh consensus is scoped. Broadcasts and quorum checks use configured, pinned peers; peer agreement does not establish source truth. Enterprise use still requires organizational supervision and durable evidence retention; see the compliance framework.
The Glama badge is a static snapshot of the A (4.4/5.0) tool-definition quality score, checked on September 30, 2026. The Smithery badge displays the supplied 100/100 listing score. Follow the registry links for current results; neither badge is an independent security audit or blanket verification of data. Signed Bitcoin-tip receipts are attestations, not Groth16 proofs or Bitcoin proof-of-work validity proofs.
Tool Directory
The directory uses bulleted definitions rather than multi-column tables so each
tool description can wrap independently on mobile. These are the 16 canonical
MCP names returned by tools/list.
stratigraphy.* — 5 tools
stratigraphy.list— Discover UTC archive bounds, the current Bitcoin tip height, and catalog metadata without paid snapshot or proof bytes.- Access: free, parameterless discovery.
stratigraphy.get— Retrieve full live pipeline telemetry and selected archived UTC snapshots by date or height, recent days, or bounded ranges, with their OpenTimestamps receipts; optionally select metrics.- Access: paid, read-only. The record limit is 1–100, default 10.
stratigraphy.get_digest— Retrieve SHA-256 fingerprints of archived or live pipeline JSON, with associated receipts, when full telemetry is unnecessary.- Access: paid, read-only. A fingerprint is not a verification receipt.
stratigraphy.get_diff— Compute signed deltas between two live or archived snapshots, including the 15 J/TH power change.- Access: paid, read-only.
fromTargetis required;toTargetdefaults tolatest.
- Access: paid, read-only.
stratigraphy.get_range— Retrieve fingerprints for a contiguous span of captured UTC snapshots across inclusive height or date bounds.- Access: paid, read-only.
startTargetis required; the batch limit is 1–100, default 50. Optionalwebhook_urlgives zero-polling execution (see below).
- Access: paid, read-only.
proof.* — 7 tools
proof.attenuate— Append strictly formatted first-party caveats to an authentic, unexpired parent macaroon: an expiration boundary (time < 2026-12-31T23:59:59.000Z), exact tool targets (rpc = stratigraphy.get_diff), and target, path, or request budgets.- Access: paid. Supply
macaroonand at least one restriction:expiresAtorttlSeconds,tools, orcaveats. Redemption is refused at or after the deadline (HTTP 401) and for any tool therpccaveat does not name exactly (HTTP 403). A child cannot widen inherited authority, and later redemption still requires the parent's payment proof.
- Access: paid. Supply
proof.verify— Verify supplied Groth16 telemetry proofs, drift zk-SNARKs, or OpenTimestamps receipts.- Access: paid. Verification can update a bounded lifecycle index; drift checks require a Bitcoin block provider. OTS needs a real receipt and matching digest.
proof.get_by_hash— Retrieve a retained proof, signed receipt, or lifecycle-only status using exactly one knownhashorjobId.- Access: paid, read-only. Retrieval does not rerun Groth16 verification or reconstruct missing proof payloads.
proof.list— Discover, filter, and paginate recent proof lifecycle summaries from bounded process-local memory.- Access: free sandbox discovery (alias
proof.status). Supportslimit,offset, and optionalstatus; returns summaries, not full proofs.
- Access: free sandbox discovery (alias
proof.submit— Register a Groth16 proof with its five public signals, then attempt a NIP-78 attestation.- Access: paid; changes proof registry state. Nostr publication can fail
separately, and registration does not append the proof to a Merkle tree.
Optional
webhook_urlgives zero-polling execution (see below).
- Access: paid; changes proof registry state. Nostr publication can fail
separately, and registration does not append the proof to a Merkle tree.
Optional
proof.notarize— Create a detached OpenTimestamps.otsreceipt for a SHA-256 digest using public calendars.- Access: paid;
X-L402-Batch-Size: 100buys 100 tool-scoped calls for 25,000 sats. Returnspending_calendar; calendar acceptance is not Bitcoin confirmation.
- Access: paid;
proof.ground— Issue a signed Bitcoin-tip receipt for agent context (contextHashplusagentId) or for a dataset CID.- Access: paid; the input modes are exclusive. This is an off-chain signed anchor, not a Groth16 proof, on-chain transaction, or Bitcoin-confirmed OTS receipt.
Zero-polling execution (webhook_url)
stratigraphy.get_range and proof.submit accept an optional public HTTPS
webhook_url. After the L402 payment is verified, the server answers
HTTP 202 Accepted with a task_id and status pending, runs the tool in the
background, then POSTs the final MCP result (or JSON-RPC error) with the same
task_id to the callback. Each callback is signed under the Standard Webhooks
scheme (Webhook-Signature: v1a,…, Ed25519) with the key published at
/.well-known/integrity.json. Without webhook_url the call stays synchronous.
Unsafe callback targets are refused before an invoice is issued, and tasks live
in server memory, so a restart loses pending work. See
CONNECT.md for the request
and callback shapes.
mesh.* — 2 tools
mesh.get_status— Inspect configured peer health, quorum status, node provenance, and cross-validation metrics.- Access: paid, read-only. Status describes the configured pinned-peer mesh, not arbitrary-peer trust or proof of source truth.
mesh.broadcast— Send signed indexed telemetry to configured peers through the outbound broadcast and cross-validation flow.- Access: paid; performs network side effects. Quorum results depend on the configured peer policy and availability.
payment.* — 1 tool
payment.get_info— Discover current MCP pricing and settlement methods, or check authenticated settlement status.- Access: paid L402 call;
action: "query"is the default andaction: "settle"requires authenticated payment evidence. Neither mode mints a macaroon or creates an invoice. Free price quotes are available from/api/v1/cost.
- Access: paid L402 call;
workflow.* — 1 tool
workflow.audit_trajectory— Deterministic composite workflow executing end-to-end thermodynamic audits. Returns signed deltas and compressed proof receipts in a single payload to save LLM context tokens.- Access: paid; currently 250 sats per call.
- Inputs: required
fromTargetandtoTarget, for example{"fromTarget":"2026-10-12","toTarget":"latest"}. - Combines existing diff arithmetic, exact-byte SHA-256 boundary fingerprints, and available OTS receipt references. Live boundaries have no archived OTS receipt; this does not create a new Bitcoin-confirmed proof.
Most paid MCP calls currently cost 250 sats without valid credentials.
Check payment.get_info and the actual challenge for current terms; do not
assume a static per-call price applies to every payment policy or asset.
Signed synchronous MCP responses and prepaid batch discovery
Successful synchronous tools/call results include _meta.responseSignature
using the same persistent Ed25519 identity published at
/.well-known/integrity.json. Existing content, structuredContent, and other
metadata remain intact, including stateless server-info metadata. Payment errors,
JSON-RPC errors, discovery results, and asynchronous HTTP 202 acknowledgements do
not receive this envelope; callbacks retain their separate signed-webhook format.
The server signs UTF-8 tool_name.timestamp.contentSha256, where tool_name is
the exact requested tool name (including any supported alias), timestamp is
integer Unix seconds, and contentSha256 hashes the deterministic JSON object
containing content and, when present, structuredContent. Object keys are
recursively sorted; arrays and text bytes keep their order. Verify both payload
representations, not just whichever one your client displays.
The exported verifyToolResponse helper in
artifacts/api-server/src/lib/mcp-response-signature.ts checks the signature,
trusted-key fingerprint, exact tool name, digest and a default five-minute clock
tolerance. Independently pin server_public_key before verification. Signatures
establish origin and content integrity, not factual correctness or request-level
replay protection. See canonicalization and verification.
GET /api/v1/cost, POST /api/v1/cost quotes and the native
stratigraphy://catalog/overview resource expose a batchSettlement block.
The currently supported pass size is 100 calls, not an arbitrary 10–1000
range. Include X-L402-Batch-Size: 100 on the initial paid tools/call challenge,
settle its single upfront Lightning invoice, then reuse its invoice-bound
macro-macaroon/preimage for up to 100 calls to that same tool. The price is 100
times the per-call price. Payment-proof caching avoids repeated Lightning
settlement latency; expiry, revocation, attenuation and inherited request quotas
are still enforced on every call. This is not a cross-tool aggregate invoice,
does not enable x402 batching, and discovery itself never creates an invoice.
Native MCP Resources & Prompts
The endpoint exposes 3 public Resources and 3 public Prompts alongside the
16 canonical tools, on both stateless 2026-07-28 and legacy 2025-11-25
transports. Discovery and prompt retrieval require no L402 payment; executing
paid tools recommended by a prompt still requires settlement.
Resources
Call resources/list for the catalog, then resources/read with a uri:
stratigraphy://catalog/overview— Bitcoin Stratigraphy Catalog & L402 Overview: indexed dataset boundaries, all 16 tools grouped by namespace, and L402 Lightning settlement and NIP-98 authentication instructions.stratigraphy://compliance/eu-ai-act-article-12— EU AI Act Article 12 & Enterprise Licensing Matrix: structured logging-control mappings for RFC 6962 receipts, authenticated agent identity, macaroon attenuation, and Article 26(6) retention, plus the $250k/year Commercial Enterprise Exemption at [email protected].stratigraphy://security/tool-integrity— Ed25519 Signed Tool Integrity Manifest: the identical startup payload served at/.well-known/integrity.json, including all 16 description hashes and signatures. Verify with an independently trusted public-key pin.
All three use application/json; parse contents[0].text as JSON. Unknown
URIs return JSON-RPC -32602. Resource contents provide context and evidence,
not automatic legal certification or proof of arbitrary factual claims.
Prompts
Call prompts/list, then prompts/get with a name and optional arguments
object. All argument values are strings.
ground_agent_reasoning— requiredclaim; optionaltargetHeightOrDate(defaults tolatest). Guidesstratigraphy.getandproof.ground, including budget-approved L402 settlement and explicit limits on what context anchoring can establish.audit_thermodynamic_trajectory— requiredfromTargetandtoTarget. Guides a compositeworkflow.audit_trajectorycall andproof.verifyverification of available referenced OTS receipts; never invents proof coverage for live boundaries.evaluate_enterprise_compliance— optionalorganizationNameandswarmSize. Embeds the compliance resource and guides a private VPC/air-gap assessment, NIP-98 identity binding,proof.attenuatecircuit breakers, retention controls, and commercial licensing.
Unknown names, missing required arguments, and invalid argument types or
values return JSON-RPC -32602.
For stateless requests, include the usual protocol _meta,
MCP-Protocol-Version: 2026-07-28, and the matching Mcp-Method.
Mcp-Name is optional for prompts/get and resources/read; when provided,
it must match params.name or params.uri, respectively. Example body:
{
"jsonrpc": "2.0",
"id": 1,
"method": "resources/read",
"params": {
"uri": "stratigraphy://security/tool-integrity",
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}
Stateless resources/list, resources/read, and prompts/list results include
ttlMs: 300000 and cacheScope: "public". Argument-specific prompts/get
results are not advertised as publicly cacheable. Legacy clients use their
normal initialize handshake and omit the stateless _meta fields. Neither
subscriptions nor list-change notifications are advertised.
Public Auto-Discovery
- Manifest:
GET /.well-known/mcp.json - MCP transport: Streamable HTTP at
/mcp - Tool discovery: JSON-RPC
tools/list - REST cost discovery:
GET /api/v1/cost - MCP cost discovery:
payment.get_infowith its default query action
The manifest is public and unmetered, returns application/json, and sets
Access-Control-Allow-Origin: *. After publishing the endpoint update, retrieve
it from the deployment:
curl -i https://bitcoinstratigraphy.com/.well-known/mcp.json
The manifest declares release version 2.1.3, mcp.version: "2026-07-28" and
mcp.supported_versions. Those are metadata values, not protocol configuration.
The endpoint serves the stateless MCP 2026-07-28 transport and still accepts
handshake-era clients on 2025-11-25 and earlier. Let clients negotiate rather
than forcing the manifest's declared version.
Quick Connect
Live MCP endpoint: https://bitcoinstratigraphy.com/mcp
Transport: Streamable HTTP, stateless · Protocol: MCP 2026-07-28
(handshake-era 2025-11-25 clients remain supported)
The endpoint keeps no sessions: there is no initialize handshake and no
Mcp-Session-Id, so any server instance can answer any request. A 2026-07-28
client calls server/discover for supported versions and capabilities, then
sends its protocol version and client capabilities in params._meta on every
request, with matching MCP-Protocol-Version, Mcp-Method and (for
tools/call) Mcp-Name headers. See CONNECT.md for the request
shape.
Discovery with stratigraphy.list and proof.list is free. These connection
examples do not provide a wallet or pay L402 invoices automatically. Check
payment.get_info for current per-tool prices before enabling paid calls; the
published price for most paid tools is 250 sats, not 10 sats.
Claude Desktop
Open Settings → Developer → Edit Config, then merge this entry into
claude_desktop_config.json (requires Node.js and npx). The mcp-remote
bridge connects Claude Desktop's local stdio client to the remote HTTP server:
{
"mcpServers": {
"bitcoin-stratigraphy": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://bitcoinstratigraphy.com/mcp"]
}
}
}
Restart Claude Desktop, then confirm bitcoin-stratigraphy appears in its MCP
server list. Start with stratigraphy.list or payment.get_info.
See CONNECT.md — Claude Desktop for setup and payment details.
Cursor
Add to .cursor/mcp.json or ~/.cursor/mcp.json:
{
"mcpServers": {
"bitcoin-stratigraphy": {
"url": "https://bitcoinstratigraphy.com/mcp"
}
}
}
Merge the entry into any existing mcpServers object, then enable the server in
Cursor's MCP settings. Cursor connects directly over HTTP; no local server is needed.
See CONNECT.md — Cursor for setup and payment details.
Custom Agent Orchestrators
Use the official TypeScript MCP SDK's StreamableHTTPClientTransport. Install
the SDK in your agent project:
npm install @modelcontextprotocol/sdk
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client({
name: "stratigraphy-agent",
version: "1.0.0",
});
try {
await client.connect(
new StreamableHTTPClientTransport(
new URL("https://bitcoinstratigraphy.com/mcp"),
),
);
const catalog = await client.listTools();
console.log(catalog.tools.map((tool) => tool.name));
// Free pricing discovery only; this does not authorize a payment.
const paymentInfo = await client.callTool({
name: "payment.get_info",
arguments: {},
});
console.log(paymentInfo);
} finally {
await client.close();
}
For other languages or frameworks, use an MCP client supporting Streamable HTTP
and point it at the same URL. Clients implementing 2026-07-28 use
server/discover and per-request _meta; older clients initialize as before.
Let the client negotiate the protocol version and manage MCP headers; this is
not a legacy /sse endpoint.
Paid tool execution requires a separate, wallet-enabled L402 integration:
handle the HTTP 402 challenge, obtain explicit payment authorization, pay the
Lightning invoice, and retry using Authorization: L402 <macaroon>:<preimage>.
Never commit wallet secrets, macaroons, or payment preimages to client
configuration or registry files. See CONNECT.md for payment details.
ElizaOS
Install @elizaos/plugin-mcp and make npx available to the agent:
import type { Character } from "@elizaos/core";
export const character: Character = {
name: "StratigraphyAgent",
plugins: ["@elizaos/plugin-mcp"],
settings: {
mcp: {
servers: {
bitcoinStratigraphy: {
type: "stdio",
command: "npx",
args: [
"-y",
"mcp-remote",
"https://bitcoinstratigraphy.com/mcp",
],
},
},
},
},
system: "Inspect payment.get_info before requesting paid Bitcoin Stratigraphy tools.",
};
See CONNECT.md — ElizaOS character for setup and payment details.
Ecosystem Registry Discovery
- Smithery listing · root connection metadata: smithery.yaml.
- Glama listing and live score · root metadata: glama.json.
- Public MCP server card · Agent discovery guide.
Root metadata makes the repository easier to inspect, but does not automatically submit it to every index. For Smithery's current remote-server registration flow, submit the live MCP URL at smithery.ai/new, or use its CLI from an authenticated maintainer account:
smithery mcp publish "https://bitcoinstratigraphy.com/mcp" -n crstrogish/bitcoin-stratigraphy-mcp
See Smithery's publishing documentation. This connects a registry listing to the existing server; it does not deploy a local stdio process or require changes to the server's tool definitions.
Autonomous routing, audit receipts and annual commercial exemptions
Provides corporate risk teams with an unforgeable cryptographic audit trail, mathematically proving that an autonomous agent based its execution on state-anchored thermodynamic data.
Verification limit: this enterprise positioning sentence is not a proof that an agent actually used the data. A Cryptographic Audit Receipt signs the submitted SHA-256 decision/data commitment; it does not independently prove state anchoring, data truth, absolute unforgeability or legal indemnification.
- Optional
X-Agent-LNURLorX-Agent-Lightning-Addressbinds a signed 5% Autonomous Routing Kickback allocation to the issued L402 invoice. Verified settlement credits the PostgreSQL ledger once; no payouts are sent. POST /api/v1/compliance/indemnityreturns a domain-separated Ed25519 Cryptographic Audit Receipt inindemnity_receipt. It acceptsagent_decisionandstratigraphy_data_used, and states its verification limits explicitly.- Fresh NIP-98 authentication binds
Buyer-Pubkeyto confirmed cumulative spend. At the live BTC/USD equivalent of $250,000 in new qualifying volume, a signed Tier II token unlocks for exactly 365 days. It prints the exact UTC Expiry Date and cryptographicexp; e.g. unlock2026-10-24T00:00:00.000Z→ Expiry Date:2027-10-24T00:00:00.000Z. GET /api/v1/compliance/commercial-exemptionreturns buyer status.POST /api/v1/compliance/commercial-exemption/purchaseprovides a funded L402 bulk-purchase path. Unpaid invoices and self-declared reservations grant no rights. Renewals require new confirmed qualifying volume, never replayed historical spend.- At expiry without qualifying renewal, future macaroons lose
Commercial-Exemption: Active; status responses and subsequent authenticated request logs report high-risk AGPLv3 copyleft/no active commercial exemption. Actual AGPL duties depend on covered software and use.
See enterprise protocol economics and verification for canonical hashing, signed-token checks, rate/price limits and air-gap behavior. All 16 canonical MCP schemas and parameter structures are unchanged.
Installing Bitcoin Stratigraphy
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/CharlesStrogish/bitcoin-stratigraphy-mcpFAQ
Is Bitcoin Stratigraphy MCP free?
Yes, Bitcoin Stratigraphy MCP is free — one-click install via Unyly at no cost.
Does Bitcoin Stratigraphy need an API key?
No, Bitcoin Stratigraphy runs without API keys or environment variables.
Is Bitcoin Stratigraphy hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Bitcoin Stratigraphy in Claude Desktop, Claude Code or Cursor?
Open Bitcoin Stratigraphy on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Opencode Omniroute Plugin
OpenCode plugin for the OmniRoute AI Gateway. Drives dynamic model discovery, /connect auth flow, and multi-instance OmniRoute providers via the official @openc
by GitHub ActionsRoblox Studio
Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, sce
by paralovAntigravity Drawio
MCP server that enables AI assistants to create, parse, render, and validate Draw.io diagrams programmatically.
by S-SUJAN-SFetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzMCP-Agent
A simple, composable framework to build agents using Model Context Protocol by [LastMile AI](https://www.lastmileai.dev)
by lastmile-aiSpring AI MCP Client
Provides auto-configuration for MCP client functionality in Spring Boot applications.
mcp.natoma.ai
A Hosted MCP Platform to discover, install, manage and deploy MCP servers by [Natoma Labs](https://www.natoma.ai)
Compare Bitcoin Stratigraphy with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
