Plumb Data Exchange

已驗證的表格作業:CSV 轉換、去重、對帳。按次計費,使用 x402(Base 上的 USDC)。

託管 MCP 伺服器

npx add-mcp 'https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcp'

可安裝到 Claude Code、Codex、Cursor 等客戶端

文件

Plumb Data Exchange

Verified table data jobs for agents: convert a table to CSV, deduplicate rows by key columns, or reconcile two versions (added/removed/changed). Results are independently verified before release; failed or unclaimed jobs are refunded. Fetch status and the result with the returned accessToken.

Price: $0.05 USDC per job on Base (eip155:8453), paid with x402 v2. Limits per table: 1000 rows, 32 columns, 65536 characters. All values are strings; keys match exactly.

Doors

  • MCP (streamable HTTP, stateless): POST /pde-mcp Paid tools: convert_to_csv, deduplicate, reconcile. Free: get_job. An unpaid call returns the x402 PaymentRequired as the tool result (isError, structuredContent); retry with _meta["x402/payment"] = PaymentPayload. The settlement comes back in _meta["x402/payment-response"].
  • HTTP: POST /x402/jobs with {"capability", "inputs"}. 402 + PAYMENT-REQUIRED header, retry with PAYMENT-SIGNATURE. 201 returns jobId + accessToken. GET /x402/jobs/{jobId} and /x402/jobs/{jobId}/artifact with "Authorization: Bearer ".

Capabilities

  • table.to_csv.v1: inputs = {columns, records}. Output CSV; verified by round-trip.
  • table.deduplicate.v1: inputs = {table, keyColumns, keep: "first"|"last"}. Output JSON rows + duplicate groups.
  • table.reconcile.v1: inputs = {before, after, keyColumns}. Output JSON added/removed/changed.

Guarantees

  • Inputs are validated before you are asked to pay.
  • One payment authorization buys exactly one job (replays are refused).
  • Results are released only after independent verification; a job not completed by its deadline is refunded.

Reference

  • OpenAPI (HTTP door): /openapi.json

Payment verification (MCP: /pde-mcp)

  • verify_payment ($0.02 USDC, x402; $0.002 for an XRP Ledger payment, invoiceId binds it to your invoice): did tx T transfer at least N of token X (default USDC) to payee P, optionally from payer F? Proven by Plumb without trusting any RPC (Base: proof-backed L1 checkpoints; Ethereum: light client; XRP Ledger: a quorum of Ripple's validator list, chain "xrpl", token RLUSD/XRP/CUR.rIssuer, amounts in drops or millionths, level unl_quorum, final). Bound to the exact transfer (log index). Verdicts: paid, pending, not_paid, underpaid, ambiguous, failed_transaction, unverifiable. Never not_paid while a payment is pending; abstains (unverifiable) whenever the proof is incomplete.
  • On Base, paid = under a proof-backed checkpoint (level tee_attested / zk_proven / resolved), usually about an hour after the payment; status "proven" until challengeableUntil, then re-checked to "final" (resolved).
  • HTTP door (no MCP needed): POST /x402/verify with the same claim JSON; pay the 402 with PAYMENT-SIGNATURE (x402 v2).
  • try_verify_payment: free, 3 NEW claims per client per day. get_verification: free poll by checkId. Asking again about a claim already checked is free (one check per claim covers its re-checks).
  • requiredLevel (tee_attested | zk_proven | resolved on Base; finalized on Ethereum): the answer's "release" block says whether money can be released, and why not.
  • callbackUrl (paid checks; https, port 443, public host) or watch_verification: signed POSTs on level_reached, changed, final, gave_up (x-plumb-signature = Ed25519 over the raw body with the key below); retried with backoff.
  • Receipts: ed25519 signature over receipt.payload (canonical JSON). keyId 378a63326007fdc1, public key (hex) 1f81dedec119cf6f252a446a23d1dc508f8a38c65320f43046e1a163ad0c94c2
  • verify_payments_batch: up to 25 claims (JSON or CSV: chain,txHash,payee,token,minAmountRaw,payer,logIndex,invoiceId) for one flat price; claims already checked are free. get_verifications: free bulk read (<=50), format "csv" for reconciliation.
  • check_x402_receipt (free): verify a seller's signed x402 offer + receipt (pin the seller), get the exact claim to prove, then pass the verification's checkId to learn which side failed (seller signature or chain).
  • x402 batch settlements (one transfer aggregating many vouchers) are flagged "aggregate" and never releasable.
  • Guide (five minutes, answer fields, callbacks, comparison with an RPC lookup): /verify