Plumb Data Exchange
Verified table jobs: CSV conversion, dedupe, reconcile. Pay per call with x402 (USDC on Base).
View on ts.netTry this MCPSponsored
Hosted MCP Server
npx add-mcp 'https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
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): 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). Bound to the exact transfer (log index). Verdicts: paid, pending, not_paid, underpaid, failed_transaction, unverifiable. Never not_paid while a payment is pending.
- On Base, paid = under a proof-backed checkpoint (level tee_attested / zk_proven / resolved), usually about an hour after the payment; evidence.checkpoint.challengeableUntil says when it can no longer be challenged.
- try_verify_payment: free, 3 per client per day. get_verification: free poll by checkId.
- Receipts: ed25519 signature over receipt.payload (canonical JSON). keyId 378a63326007fdc1, public key (hex) 1f81dedec119cf6f252a446a23d1dc508f8a38c65320f43046e1a163ad0c94c2