Plumb Data Exchange
Verified table jobs and RPC-free payment verification (Base/Ethereum). Pay per call via x402.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"plumb-data-exchange": {
"url": "https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcp"
}
}
}遠端端點
https://numba2witcheese.tail7d8d44.ts.net:10000/pde-mcpstreamable-http它能做什麼
工具清單
工具(11)
⚪convert_to_csv(table)
Convert a table to CSV without changing any value; verified by round-trip. Costs $0.05 USDC (x402).
輸入結構描述
{
"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).
輸入結構描述
{
"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).
輸入結構描述
{
"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).
輸入結構描述
{
"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).
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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).
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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.
輸入結構描述
{
"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#"
}社群
證據