Plumb Data Exchange
Verified table jobs and RPC-free payment verification (Base/Ethereum). Pay per call via x402.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"plumb-data-exchange": {
"url": "https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcp"
}
}
}Remote-Endpunkte
https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcpstreamable-httpWas es kann
Tool-Inventar
Tools (11)
⚪convert_to_csv(table)
Convert a table to CSV without changing any value; verified by round-trip. Costs $0.05 USDC (x402).
Eingabe-Schema
{
"type": "object",
"properties": {
"table": {
"type": "object",
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 32,
"description": "Column names, in order"
},
"records": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"maxItems": 1000,
"description": "Rows as objects of column -> string value"
}
},
"required": [
"columns",
"records"
],
"additionalProperties": false,
"description": "A string table: at most 1000 rows x 32 columns, 65536 characters total"
}
},
"required": [
"table"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴deduplicate(table, keyColumns, keep)
Remove duplicate rows by exact key, keeping the first or last, and report conflicting columns per group. Costs $0.05 USDC (x402).
Eingabe-Schema
{
"type": "object",
"properties": {
"table": {
"type": "object",
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 32,
"description": "Column names, in order"
},
"records": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"maxItems": 1000,
"description": "Rows as objects of column -> string value"
}
},
"required": [
"columns",
"records"
],
"additionalProperties": false,
"description": "A string table: at most 1000 rows x 32 columns, 65536 characters total"
},
"keyColumns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Columns that together identify a row (exact string match)"
},
"keep": {
"type": "string",
"enum": [
"first",
"last"
],
"description": "Which duplicate to keep"
}
},
"required": [
"table",
"keyColumns",
"keep"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪reconcile(before, after, keyColumns)
Compare two versions of a table by key: rows added, removed and changed (with the changed columns). Costs $0.05 USDC (x402).
Eingabe-Schema
{
"type": "object",
"properties": {
"before": {
"type": "object",
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 32,
"description": "Column names, in order"
},
"records": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"maxItems": 1000,
"description": "Rows as objects of column -> string value"
}
},
"required": [
"columns",
"records"
],
"additionalProperties": false,
"description": "A string table: at most 1000 rows x 32 columns, 65536 characters total"
},
"after": {
"$ref": "#/properties/before"
},
"keyColumns": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Columns that together identify a row (exact string match)"
}
},
"required": [
"before",
"after",
"keyColumns"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪verify_payment(chain, txHash, payee, token, minAmountRaw, ...)
Verify an on-chain payment without trusting any RPC: did this tx transfer at least this amount of a token (default USDC) to this payee, optionally from this payer? Proven by Plumb (Base via proof-backed L1 checkpoints, Ethereum via a light client). Bound to the exact transfer (log index); returns the proof level, how long a Base checkpoint can still be challenged, the evidence to re-check, and an Ed25519-signed receipt. Never answers not_paid while a payment is still pending; abstains (unverifiable) whenever the proof is incomplete. Costs $0.02 USDC (x402); asking again about the same claim costs nothing. Optional requiredLevel (releasable or not) and callbackUrl (signed events when the level is reached, the answer changes, or checking gives up).
Eingabe-Schema
{
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum"
],
"default": "base",
"description": "Chain of the payment"
},
"txHash": {
"type": "string",
"description": "Transaction hash (0x + 64 hex)"
},
"payee": {
"type": "string",
"description": "Address that should have received the money"
},
"token": {
"type": "string",
"description": "ERC-20 contract (default: USDC on the chain)"
},
"minAmountRaw": {
"type": "string",
"description": "Minimum amount in base units, e.g. \"50000\" = 0.05 USDC (default: any)"
},
"payer": {
"type": "string",
"description": "Only count transfers from this address (the token holder who paid)"
},
"logIndex": {
"type": "integer",
"minimum": 0,
"description": "Bind to one transfer: its position within the tx's logs"
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
},
"callbackUrl": {
"type": "string",
"maxLength": 500,
"description": "https URL to notify (signed, retried) when requiredLevel is reached, when the answer changes, or when checking gives up"
}
},
"required": [
"txHash",
"payee"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪try_verify_payment(chain, txHash, payee, token, minAmountRaw, ...)
Free: the same verification as verify_payment, limited to 3 NEW claims per client per day (asking again about a claim already checked is always free).
Eingabe-Schema
{
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum"
],
"default": "base",
"description": "Chain of the payment"
},
"txHash": {
"type": "string",
"description": "Transaction hash (0x + 64 hex)"
},
"payee": {
"type": "string",
"description": "Address that should have received the money"
},
"token": {
"type": "string",
"description": "ERC-20 contract (default: USDC on the chain)"
},
"minAmountRaw": {
"type": "string",
"description": "Minimum amount in base units, e.g. \"50000\" = 0.05 USDC (default: any)"
},
"payer": {
"type": "string",
"description": "Only count transfers from this address (the token holder who paid)"
},
"logIndex": {
"type": "integer",
"minimum": 0,
"description": "Bind to one transfer: its position within the tx's logs"
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
}
},
"required": [
"txHash",
"payee"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_verification(checkId, requiredLevel)
Free. Current state of a verification by checkId; re-checks it once its retry or challenge time has passed.
Eingabe-Schema
{
"type": "object",
"properties": {
"checkId": {
"type": "string",
"maxLength": 80
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
}
},
"required": [
"checkId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡watch_verification(checkId, callbackUrl, requiredLevel)
Free for a PAID check: add a callback (https) that receives signed events when requiredLevel is reached, when the answer changes, when it becomes final, or when checking gives up. The service re-checks on its own.
Eingabe-Schema
{
"type": "object",
"properties": {
"checkId": {
"type": "string",
"maxLength": 80
},
"callbackUrl": {
"type": "string",
"maxLength": 500
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
}
},
"required": [
"checkId",
"callbackUrl"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪verify_payments_batch(claims, csv, requiredLevel, format)
Verify up to 25 payments in one call for $0.25 USDC (x402): give `claims` (same fields as verify_payment) or `csv` (header: chain,txHash,payee,token,minAmountRaw,payer,logIndex). Claims already checked cost nothing; if all of them were, nothing is charged. Returns one row per claim (format "csv" adds a reconciliation CSV).
Eingabe-Schema
{
"type": "object",
"properties": {
"claims": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"maxItems": 25
},
"csv": {
"type": "string",
"maxLength": 20000
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
},
"format": {
"type": "string",
"enum": [
"json",
"csv"
]
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_verifications(checkIds, requiredLevel, format)
Free. Up to 50 checks at once (re-checked when due), as rows; format "csv" adds a reconciliation CSV.
Eingabe-Schema
{
"type": "object",
"properties": {
"checkIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"minItems": 1,
"maxItems": 50
},
"requiredLevel": {
"type": "string",
"enum": [
"tee_attested",
"zk_proven",
"resolved",
"finalized"
],
"description": "Proof level you need before releasing money (Base: tee_attested < zk_proven < resolved; Ethereum: finalized). The answer then says whether it is releasable."
},
"format": {
"type": "string",
"enum": [
"json",
"csv"
]
}
},
"required": [
"checkIds"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢check_x402_receipt(receipt, offer, sellerAddress, sellerJwk, checkId)
Free. Cross-check a seller's signed x402 offer + receipt (offer-and-receipt extension): verifies the signatures (official x402 functions; pin the seller with sellerAddress for EIP-712 or sellerJwk for JWS), checks offer and receipt agree, and returns the exact `claim` to prove with verify_payment. Pass that verification's checkId to learn which side failed.
Eingabe-Schema
{
"type": "object",
"properties": {
"receipt": {
"type": "object",
"additionalProperties": {}
},
"offer": {
"type": "object",
"additionalProperties": {}
},
"sellerAddress": {
"type": "string"
},
"sellerJwk": {
"type": "object",
"additionalProperties": {}
},
"checkId": {
"type": "string",
"maxLength": 80
}
},
"required": [
"receipt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_job(jobId, accessToken)
Free. Status and (once verified) the result of a paid job, using the accessToken its paid call returned.
Eingabe-Schema
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"maxLength": 80
},
"accessToken": {
"type": "string",
"maxLength": 128
}
},
"required": [
"jobId",
"accessToken"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis