Paxiom Receipts MCP

io.github.k-luecke由 GitHub 帳號 k-luecke 發布v0.1.2更新於 Nov 14, 2026

Verify and explain Ed25519 proof-bound receipts (paxiom.receipt.v0) for x402 APIs.

已驗證Streamable HTTP可網頁執行金融安全與監控

概覽

AI 產生的概覽

驗證並解釋 x402 付費 API 的 Ed25519 簽章 paxiom.receipt.v0 收據,並提供付費的鏈上結算核驗與賣家預檢資訊。

可以做什麼
  • 驗證 paxiom.receipt.v0 收據:結構、Ed25519 簽章、輸出 SHA-256 綁定、有效期,以及如實呈現的結算與證明信任狀態
  • 以可讀的信任狀態說明與後續操作建議解釋收據的驗證結果
  • 查詢驗證服務中繼資料、已公布的計數器簽章公鑰,以及用於即時結算核驗與賣家預檢的 x402 Base USDC 付費條款
適用情境
適合助理處理 x402 付費 API 回應、需要確認賣家收據是否真的綁定所交付內容,或在付款前判斷賣家是否可信時使用。免費工具結果具確定性且不需帳號。
執行需求
遠端 streamable HTTP 端點 api.paxiom.org;未宣告驗證、環境變數或請求標頭。免費的驗證與解釋工具不需憑證;即時結算與預檢端點須透過 x402 以 Base USDC 付費或使用 API 金鑰。
安裝前請注意
即時結算核驗與賣家預檢呼叫需支付 USDC(0.002 與 0.01),涉及鏈上付款,需考量預算與錢包管理。收據為 v0 開發者預覽,並非正式標準或法律合規憑證,結構合法不代表收據已驗證。離線驗證不檢查鏈上結算。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Paxiom Receipts MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.k-luecke%2Fpaxiom-receipts/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "paxiom-receipts": {
      "type": "http",
      "url": "https://api.paxiom.org/mcp"
    }
  }
}

README

Paxiom Receipt v0 — developer preview

Status: v0 draft · developer preview · conformance target. Not a production standard, not a legal or compliance certificate.

x402 proves a payment. Paxiom proves what the payment bought.

A Paxiom receipt binds payment, request, output, settlement metadata, and optional evidence into a single signed, machine-verifiable object. It is provider-neutral: any x402-paid API can emit one, and any agent can verify one with only a public key.

This directory contains the public paxiom.receipt.v0 spec and the zero-dependency @paxiom/receipts reference package:

  • Issuer & middleware SDK (src/issue.mjs, src/middleware.mjs, src/index.mjs, src/index.d.ts)
  • Offline verifier, explainer & buyer client (src/verify.mjs, src/explain.mjs, src/client.mjs)
  • CLI (bin/paxiom-receipt.mjs — keygen, issue, verify)
  • MCP tool server (mcp/server.mjs — verify_receipt, explain_receipt, issue_receipt, preflight_x402_seller, verify_receipt_live)

Install & Quick Start

bash
npm install @paxiom/receipts
js
import {  generateReceiptKeyPair,  issueReceipt,  verifyReceipt,  verifyResponseReceipt,  preflightX402,  verifyReceiptLive,  withPaxiomReceipt} from '@paxiom/receipts';
  • CLI (zero install): npx @paxiom/receipts --help (or npx -p @paxiom/receipts paxiom-receipt verify <receipt.json> --output <output.json>)
  • MCP stdio server: npx -y --package=@paxiom/receipts paxiom-receipt-mcp
  • Live HTTP Verifier & Preflight (https://api.paxiom.org):
    • POST https://api.paxiom.org/v1/receipt/verify — free offline verification
    • POST https://api.paxiom.org/v1/x402/preflight — pre-payment x402 seller readiness, Circle USDC asset check, and payTo bait-and-switch scan ($0.01 USDC via x402 or X-API-Key)
    • POST https://api.paxiom.org/v1/receipt/verify-live — live Base / Base Sepolia USDC settlement verification + Paxiom Ed25519 counter-attestation ($0.002 USDC via x402 or X-API-Key)

Why this exists

x402 (and most receipt-issuing services today) prove that a payment happened. They do not, in a neutral and interoperable way, prove what was delivered in return. Every incumbent signs only its own output in its own ad-hoc format (Ed25519 here, HMAC there, EIP-712 elsewhere, SHA-256 trust-hash somewhere else). There is no shared receipt that binds payment + request + output + settlement + proof so that any agent can verify any seller uniformly. Paxiom v0 is a first, deliberately small draft of that shared object.

What a v0 receipt does and does NOT claim

Does: binds payment, request, resource, output, settlement metadata, and optional evidence into one Ed25519-signed object with explicit, honest status fields.

Does NOT claim:

  • that all receipts are settled onchain,
  • that all proofs are cryptographically verified,
  • that any x402 implementation is secure,
  • that a receipt is a legal or compliance certificate.

The verifier's job is to explain what was actually checked and what was only claimed. Honesty about settlement is a core promise: a receipt that merely asserts an onchain settlement the verifier did not confirm is reported as settlement_claimed_not_checked, never as fully verified.

Schema-valid ≠ receipt-verified. The JSON Schema validates receipt shape only. It does not prove settlement, signature validity, output binding, or proof correctness. Those checks are performed by a Paxiom verifier and reported through trust states. A structurally valid receipt can still be invalid_signature, output_hash_mismatch, settlement_claimed_not_checked, and so on.

Top-level shape

json
{  "receiptVersion": "paxiom.receipt.v0",  "payload": { "...": "..." },  "signature": { "algorithm": "ed25519", "keyId": "...", "publicKey": "...", "value": "..." }}

The signature signs the canonical JSON of { receiptVersion, payload } — see canonicalization.md. receiptHash is intentionally not part of the signed payload in v0; the verifier derives it.

Payload groups

GroupPurpose
receiptIdIssuer-scoped unique id for this receipt.
issuedAt (+ optional expiresAt)RFC 3339 timestamps.
issuername, optional uri, and keyId naming the signing key.
servicename, resource (URL), method.
requestrequestHash, resourceHash, bodyHash — binds the exact call.
paymentx402 payment metadata + explicit settlement sub-object.
deliveryoutputHash (of the delivered bytes) + mimeType.
evidenceArray of optional proof records; [{type:"none",status:"not_provided",...}] when absent.

Settlement status (enum)

not_required · disabled · verify_only · claimed_not_checked · verified_settled · failed · unknown

claimed_not_checked means: the receipt carries settlement metadata, but the Paxiom verifier did not independently check the chain or facilitator. A hosted verifier may later upgrade this to verified_settled after an onchain or facilitator-backed check.

See trust-states.md for the full verifier verdict set and how settlement status maps to a verdict.

Files

standards/receipts/v0/  README.md                          # this file  paxiom.receipt.v0.schema.json      # JSON Schema (structure only)  canonicalization.md                # Paxiom v0 canonical JSON profile + signing input  trust-states.md                    # verifier verdict enum + resolution order  examples/    valid.output.json                        # delivered output bytes    valid.receipt.json                       # REAL Ed25519 receipt -> `verified` (verify_only)    output-mismatch.output.json              # different output -> output_hash_mismatch vs valid.receipt.json    settlement-claimed-not-checked.receipt.json  # REAL Ed25519 receipt -> settlement_claimed_not_checked

About the example fixtures

valid.receipt.json and settlement-claimed-not-checked.receipt.json are cryptographically real: they were signed by a freshly generated Ed25519 key whose private half was discarded. Each embeds its own raw public key (base64, 32 bytes) so a verifier can check the signature with nothing else. No real payment credentials, wallets, or API keys appear in any fixture — the payment and request hashes are computed over harmless demo preimages.

To regenerate the fixtures (manual tool; fresh keypair each run, so this is non-deterministic and rewrites the committed vectors — see the script header):

bash
node standards/receipts/v0/scripts/gen-fixtures.mjs standards/receipts/v0/examples

Conformance self-test

A zero-dependency check (JSON validity, schema conformance, cross-file hash consistency, real Ed25519 signature verification, tamper detection, documented trust-state outcomes) runs with plain Node:

bash
node standards/receipts/v0/scripts/validate.mjs   # run from repo root

Reference verifier (CLI)

A dependency-free reference verifier ships alongside the spec. It is offline only — it verifies the local receipt object and never makes chain, facilitator, or network calls.

bash
node standards/receipts/v0/bin/paxiom-receipt.mjs verify \  standards/receipts/v0/examples/valid.receipt.json \  --output standards/receipts/v0/examples/valid.output.json# -> ✓ VERIFIED   (exit 0)
# machine-readable:node standards/receipts/v0/bin/paxiom-receipt.mjs verify <receipt.json> --output <output.json> --json

Exit codes: 0 when trustState === "verified", 1 for any other trust state, 2 for usage/IO errors. Result shape:

json
{ "valid": true, "trustState": "verified", "checks": { "...": "..." }, "receiptHash": "0x…", "summary": "…" }

What it checks (and only this in v0): version gate → schema shape → Ed25519 signature over canonicalize({receiptVersion, payload}) → delivery.outputHash vs supplied output → request/payment binding presence → honest settlement/evidence interpretation → one deterministic trust state. It does not check onchain settlement, facilitator responses, evidence retrieval, or foreign receipt formats.

Source: src/{canonicalize,hash,verify,explain}.mjs, CLI bin/paxiom-receipt.mjs. Tests: node --test standards/receipts/v0/test/ (one case per trust state).

Issuer SDK & seller middleware (@paxiom/receipts)

Any x402-paid Node/Fetch service can emit signed paxiom.receipt.v0 receipts with zero external dependencies:

js
import {  generateReceiptKeyPair,  issueReceipt,  verifyReceipt,  withPaxiomReceipt} from '@paxiom/receipts';
const keys = generateReceiptKeyPair({ keyId: 'seller-key-01' });
// Wrap any Fetch-style handler `(Request) => Promise<Response>` to attach `X-Paxiom-Receipt`:const handler = withPaxiomReceipt(  async () => Response.json({ forecast: 'sunny', tempC: 23 }),  {    privateKey: keys.privateKeyPem,    issuer: { name: 'weather-seller', uri: 'https://seller.example', keyId: keys.keyId },    serviceName: 'Weather Forecast API'  });

Express / Node http.Server middleware is also exported via createReceiptMiddleware(options). Built-in TypeScript declarations (src/index.d.ts) are included with zero extra @types/* packages.

Buyer wallet & router helpers (verifyResponseReceipt · preflightX402 · verifyReceiptLive)

js
import {  verifyResponseReceipt,  preflightX402,  verifyReceiptLive} from '@paxiom/receipts';
// 1. Pre-payment seller safety scan ($0.01 USDC via x402 fetch wrapper or X-API-Key):const scan = await preflightX402('https://seller.example/v1/query', {  fetch: x402WrappedFetch,  maxBudgetAtomic: '10000',  expectedNetwork: 'base'});if (scan.verdict === 'block') throw new Error('Unsafe x402 quote');
// 2. Verify delivered X-Paxiom-Receipt header offline in 1 line:const delivery = verifyResponseReceipt(paidResponse, { output: parsedBody });
// 3. Confirm Base USDC Transfer log on-chain + obtain Paxiom counter-attestation ($0.002 USDC):const live = await verifyReceiptLive(delivery.receipt, {  output: parsedBody,  expectedPayTo: scan.report.selectedQuote.payTo,  fetch: x402WrappedFetch});

CLI (keygen · issue · verify)

bash
# 1. Generate an Ed25519 signing keypair (writes 0600 private key PEM + metadata JSON)node standards/receipts/v0/bin/paxiom-receipt.mjs keygen --out ./seller-key-01.private.pem --key-id seller-key-01
# 2. Sign a receipt binding output bytes + request + x402 payment metadatanode standards/receipts/v0/bin/paxiom-receipt.mjs issue \  --key ./seller-key-01.private.pem \  --key-id seller-key-01 \  --issuer-name "example-seller" \  --service-name "Demo Paid Endpoint" \  --resource "https://seller.example/v1/query" \  --output standards/receipts/v0/examples/valid.output.json \  --out ./issued.receipt.json

MCP server (stdio JSON-RPC 2.0)

Agents (Claude Desktop, Cursor, Antigravity, MCP clients) can verify, explain, and issue receipts directly over stdio:

bash
node standards/receipts/v0/mcp/server.mjs

Tools exposed:

  • verify_receipt — deterministic trustState + per-check breakdown (supports trustedPaxiomPublicKeys)
  • explain_receipt — human-readable verification report alongside structured result
  • issue_receipt — sign a paxiom.receipt.v0 receipt given privateKeyPem and delivery/payment metadata

Versioning

receiptVersion is a hard gate: a verifier that does not recognise the exact string returns unsupported_format. Future dialects (including adapters that map non-Paxiom receipt formats into this shape) will bump the version or ship as named adapters; v0 makes no forward-compatibility promise.

來源:standards/receipts/v0/README.md,提交 d280432

工具

3

verify_receipt

Verify Paxiom Receipt (Offline)

Verify a paxiom.receipt.v0 cryptographic receipt (schema, Ed25519 signature, output SHA-256 JCS binding, expiry, and honest settlement/proof trust state). Deterministic and free; automatically trusts the host Paxiom counter-attestation public key when trustedPaxiomPublicKeys is omitted.

輸入參數outputreceipt必填trustedPaxiomPublicKeys

explain_receipt

Explain Paxiom Receipt Verdict

Verify a paxiom.receipt.v0 receipt and return a concise human/agent-readable trust-state breakdown and next-action guidance.

輸入參數outputreceipt必填trustedPaxiomPublicKeys

get_x402_verifier_info

Get Paxiom x402 Verifier & Preflight Info

Return Paxiom Receipt Verifier service metadata, published Ed25519 counter-attestation public keys, and x402 Base USDC payment terms for live on-chain settlement verification ($0.002 USDC) and pre-payment seller preflight ($0.01 USDC).

無需輸入參數。

版本歷史

1
  1. v0.1.2最新Nov 14, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。