Plumb Data Exchange
Verified table jobs and RPC-free payment verification (Base/Ethereum). Pay per call via x402.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"plumb-data-exchange": {
"url": "https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcp"
}
}
}Puntos de conexión remotos
https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (11)
⚪convert_to_csv(table)
Convert a table to CSV without changing any value; verified by round-trip. Costs $0.05 USDC (x402).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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).
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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#"
}Comunidad
Evidencia