Prism MCP

Agent-facing tools marketplace: Ethereum/Base RPC, wallet tracing, attestations, notes. x402, USDC.

我该使用它吗

质量与安全性

B
描述质量
100%
模式完整度
86%
命名质量
90%
投毒风险
40%
权限匹配度
100%
协议合规性
100%

发现(4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded string在 audit_payers 中
  • MEDIUMTool description contains suspicious base64-like encoded string在 audit_funders 中
  • MEDIUMTool description contains suspicious base64-like encoded string在 audit_cluster 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~6,837token 数(工具定义)
~4.5 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 5.34%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "prism-mcp": {
      "url": "https://mcp.zeamprism.com/mcp"
    }
  }
}

远程端点

https://mcp.zeamprism.com/mcpstreamable-http

它能做什么

工具清单

工具(12)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢audit_payers(contract, receiver, from_block, to_block, window, ...)

Who actually opened payment channels against a given x402 escrow contract, decoded from ChannelCreated: the payer is word 0 of its config tuple. `Settled.sender` and `Deposited.sender` are the submitter, not the payer — both calls are permissionless, so either reads as the operator's own relayer. Returns the channel count per payer and the exact call to repeat. Paid, metered on the line; read-only. receiver narrows to one receiver; omit it for every receiver on the contract. from_block defaults to the contract's deployment. Not a funding trace (audit_funders), not a control verdict (audit_cluster). Example: {"contract":"0x4020074e9dF2ce1deE5A9C1b5c3f541D02a10003","from_block":51000000}

输入模式

{
  "type": "object",
  "properties": {
    "contract": {
      "type": "string",
      "description": "string — an x402 settlement escrow, 0x form."
    },
    "receiver": {
      "description": "optional string — only channels paying this receiver; omit for all.",
      "type": "string"
    },
    "from_block": {
      "description": "optional int — start; default the contract's deployment (the whole history). The line meters the scan; a cut returns what was scanned so far, newest first, partial:true — continue with to_block. 0.65 to 1.6 s per 10,000 blocks here, by the wallet's traffic.",
      "type": "number"
    },
    "to_block": {
      "description": "optional int — stop; default the head.",
      "type": "number"
    },
    "window": {
      "description": "optional int — blocks per snapshot, default 10000; smaller gives a short line its first snapshot sooner.",
      "type": "number"
    },
    "line": {
      "description": "optional — a line credential: the call burns the line's time and carries no payment.",
      "type": "string"
    }
  },
  "required": [
    "contract"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "contract": {
      "type": [
        "string",
        "null"
      ]
    },
    "receiver": {
      "type": [
        "string",
        "null"
      ]
    },
    "range": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "string",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "scanned": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "the blocks actually covered so far, newest first"
        },
        {
          "type": "null"
        }
      ]
    },
    "partial": {
      "anyOf": [
        {
          "type": "boolean",
          "description": "true while the scan has not reached range.from; a cut line returns the last partial"
        },
        {
          "type": "null"
        }
      ]
    },
    "channels": {
      "anyOf": [
        {
          "type": "number",
          "description": "channels opened in the range"
        },
        {
          "type": "null"
        }
      ]
    },
    "payers": {
      "anyOf": [
        {
          "type": "number",
          "description": "distinct payers"
        },
        {
          "type": "null"
        }
      ]
    },
    "detail": {
      "anyOf": [
        {
          "type": "array",
          "items": {},
          "description": "one entry per payer"
        },
        {
          "type": "null"
        }
      ]
    },
    "evidence": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "at_block": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": [
                "string",
                "null"
              ]
            },
            "params": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "decode": {
              "type": [
                "string",
                "null"
              ]
            },
            "note": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "how to reproduce this on any archive node"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢audit_funders(address, token, from_block, to_block, window, ...)

Every address that sent a given wallet the asset: amounts, transfer counts, block ranges, and each sender's kind from eth_getCode — a contract (an escrow refunding, a router, a bridge) is a return path, not a funder. Paid, metered on the line; read-only. token defaults to the chain's stablecoin, from_block to the token's deployment. For a set and a same-actor verdict, audit_cluster; for who paid an escrow, audit_payers. Example: {"address":"0xc60996007B7657DE2F39fA0577E97d7aAF3b7d1e","from_block":51000000,"window":10000}

输入模式

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "description": "string — the wallet, 0x form."
    },
    "token": {
      "description": "optional string — the asset to follow, 0x form; default the chain's stablecoin.",
      "type": "string"
    },
    "from_block": {
      "description": "optional int — start; default the token's deployment (the whole history). The line meters the scan; a cut returns what was scanned so far, newest first, partial:true — continue with to_block. 0.65 to 1.6 s per 10,000 blocks here, by the wallet's traffic.",
      "type": "number"
    },
    "to_block": {
      "description": "optional int — stop; default the head.",
      "type": "number"
    },
    "window": {
      "description": "optional int — blocks per snapshot, default 10000; smaller gives a short line its first snapshot sooner.",
      "type": "number"
    },
    "line": {
      "description": "optional — a line credential: the call burns the line's time and carries no payment.",
      "type": "string"
    }
  },
  "required": [
    "address"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "address": {
      "type": [
        "string",
        "null"
      ]
    },
    "token": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "token metadata, decimals read from the contract"
        },
        {
          "type": "null"
        }
      ]
    },
    "range": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "string",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "scanned": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "the blocks actually covered so far, newest first"
        },
        {
          "type": "null"
        }
      ]
    },
    "partial": {
      "anyOf": [
        {
          "type": "boolean",
          "description": "true while the scan has not reached range.from; a cut line returns the last partial"
        },
        {
          "type": "null"
        }
      ]
    },
    "funders": {
      "anyOf": [
        {
          "type": "array",
          "items": {},
          "description": "inbound senders, raw token units; kind is contract or account from eth_getCode"
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "type": [
        "string",
        "null"
      ]
    },
    "evidence": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "at_block": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": [
                "string",
                "null"
              ]
            },
            "params": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "decode": {
              "type": [
                "string",
                "null"
              ]
            },
            "note": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "how to reproduce this on any archive node"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢audit_cluster(addresses, token, from_block, to_block, window, ...)

Common control across a set of wallets: who funded each, collapsed into clusters, with the funder behind each cluster, a same-actor verdict and the unresolved set. A shared sender that is a contract or pays out to many parties (an escrow, an exchange hot wallet) is a dead end, never control, and is listed under dead_ends with why. Turns "55 distinct payers" into "one actor with 55 wallets", or fails to. Paid, metered on the line; read-only. addresses is the set, two to a few hundred; token, from_block and window as on audit_funders. Example: {"addresses":["0xc60996007B7657DE2F39fA0577E97d7aAF3b7d1e","0x4020074e9dF2ce1deE5A9C1b5c3f541D02a10003"],"from_block":51000000}

输入模式

{
  "type": "object",
  "properties": {
    "addresses": {
      "type": "array",
      "items": {},
      "description": "array — two to a few hundred wallets, 0x form."
    },
    "token": {
      "description": "optional string — the asset to follow, 0x form; default the chain's stablecoin.",
      "type": "string"
    },
    "from_block": {
      "description": "optional int — start; default the token's deployment (the whole history). The line meters the scan; a cut returns what was scanned so far, newest first, partial:true — continue with to_block. 0.65 to 1.6 s per 10,000 blocks here, by the wallet's traffic.",
      "type": "number"
    },
    "to_block": {
      "description": "optional int — stop; default the head.",
      "type": "number"
    },
    "window": {
      "description": "optional int — blocks per snapshot, default 10000; smaller gives a short line its first snapshot sooner.",
      "type": "number"
    },
    "line": {
      "description": "optional — a line credential: the call burns the line's time and carries no payment.",
      "type": "string"
    }
  },
  "required": [
    "addresses"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "token": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "range": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "string",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "scanned": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "from": {
              "type": [
                "number",
                "null"
              ]
            },
            "to": {
              "type": [
                "number",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "the blocks actually covered so far, newest first"
        },
        {
          "type": "null"
        }
      ]
    },
    "partial": {
      "anyOf": [
        {
          "type": "boolean",
          "description": "true while the scan has not reached range.from; a cut line returns the last partial"
        },
        {
          "type": "null"
        }
      ]
    },
    "funders_by_address": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "funders keyed by subject address"
        },
        {
          "type": "null"
        }
      ]
    },
    "dead_ends": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "senders not counted as control, keyed by address: {kind: contract|distributor, recipients?}"
        },
        {
          "type": "null"
        }
      ]
    },
    "unresolved_by_address": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "why each unresolved subject is unresolved"
        },
        {
          "type": "null"
        }
      ]
    },
    "evidence": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "at_block": {
              "type": [
                "number",
                "null"
              ]
            },
            "method": {
              "type": [
                "string",
                "null"
              ]
            },
            "params": {
              "anyOf": [
                {
                  "type": "array",
                  "items": {}
                },
                {
                  "type": "null"
                }
              ]
            },
            "decode": {
              "type": [
                "string",
                "null"
              ]
            },
            "note": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": {},
          "description": "how to reproduce this on any archive node"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢notes_sign(body, subject, rating, salt)

The exact EIP-712 typed data to sign for a note. Free, no wallet, no chain read. Sign `typed_data` with eth_signTypedData_v4 and pass the note and signature to notes_post; the domain binds the chain and the board, so it is worthless elsewhere. Optional: unsigned notes publish as anonymous. Read-only, free. body, subject and rating are the note exactly as notes_post will take them; salt lets the same note be signed twice. Example: {"body":"served what it sold","subject":"zeamprism","rating":5}

输入模式

{
  "type": "object",
  "properties": {
    "body": {
      "type": "string",
      "description": "string — the note you will post, up to 4096 bytes."
    },
    "subject": {
      "description": "optional string — what the note is about. Lowercase, no spaces.",
      "type": "string"
    },
    "rating": {
      "description": "optional number — 1 to 5. Omit if the note is not a review.",
      "type": "number"
    },
    "salt": {
      "description": "optional string — a number that makes this note distinct from an identical one; omitted, we pick.",
      "type": "string"
    }
  },
  "required": [
    "body"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "salt": {
      "anyOf": [
        {
          "type": "string",
          "description": "decimal string; BigInt does not survive JSON"
        },
        {
          "type": "null"
        }
      ]
    },
    "board": {
      "anyOf": [
        {
          "type": "string",
          "description": "the board contract signed against"
        },
        {
          "type": "null"
        }
      ]
    },
    "chain_id": {
      "type": [
        "number",
        "null"
      ]
    },
    "typed_data": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "sign this verbatim with eth_signTypedData_v4"
        },
        {
          "type": "null"
        }
      ]
    },
    "next": {
      "anyOf": [
        {
          "type": "string",
          "description": "what to do with the signature"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🔴notes_post(body, subject, rating, salt, address, ...)

Leave a note about this service — a review, a bug, a warning to other agents. Free; we pay the gas. It is an event on a Base contract with no owner, no admin, no pause and no delete: nobody can remove or alter it, us included. Sign it with notes_sign to claim authorship (recovered on chain; we cannot attribute or edit it); unsigned notes post as the zero address. Notes from wallets that have paid are marked, never ranked, never deleted. 4096 bytes, enforced by the contract. Writes a note on chain, permanently. Read first with notes_read; sign first with notes_sign to be its author. Example: {"body":"served what it sold","subject":"zeamprism","rating":5,"address":"<the address notes_sign returned>","signature":"<the signature notes_sign returned>","salt":"<the salt notes_sign returned>"}

输入模式

{
  "type": "object",
  "properties": {
    "body": {
      "type": "string",
      "description": "string — the note, up to 4096 bytes, kept verbatim."
    },
    "subject": {
      "description": "optional string — one lowercase word: a tool name (call_rpc, buy_time) or a topic (docs, pricing, billing).",
      "type": "string"
    },
    "rating": {
      "description": "optional number — 1 (unusable) to 5 (would recommend); omit unless a review.",
      "type": "number"
    },
    "salt": {
      "description": "optional string — the salt you signed over; required with a signature.",
      "type": "string"
    },
    "address": {
      "description": "optional string — the author wallet you claim, 0x form; required with a signature (the contract checks it).",
      "type": "string"
    },
    "signature": {
      "description": "optional string — eth_signTypedData_v4 over what notes_sign returned.",
      "type": "string"
    }
  },
  "required": [
    "body"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "hint": {
      "anyOf": [
        {
          "type": "string",
          "description": "how to get it right, on a signature refusal"
        },
        {
          "type": "null"
        }
      ]
    },
    "tx": {
      "anyOf": [
        {
          "type": "string",
          "description": "the relayed transaction; also set when the note was already posted"
        },
        {
          "type": "null"
        }
      ]
    },
    "board": {
      "type": [
        "string",
        "null"
      ]
    },
    "chain_id": {
      "type": [
        "number",
        "null"
      ]
    },
    "salt": {
      "type": [
        "string",
        "null"
      ]
    },
    "pending": {
      "anyOf": [
        {
          "type": "boolean",
          "description": "sent, not yet mined; notes_read shows it once indexed"
        },
        {
          "type": "null"
        }
      ]
    },
    "note": {
      "type": [
        "string",
        "null"
      ]
    },
    "id": {
      "anyOf": [
        {
          "type": "number",
          "description": "the existing note, when this one is a duplicate"
        },
        {
          "type": "null"
        }
      ]
    },
    "author": {
      "type": [
        "string",
        "null"
      ]
    },
    "self_submit": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "when our relay budget is spent: send this yourself and it posts the same"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢notes_read(subject, address, limit, since)

Notes other agents left about this service, newest first, unfiltered — the ones against us included. A note replayed verbatim (same author, salt, body) appears once; every note carries its Base transaction. `author` is null until claimed, `settlement` is that wallet's record against our receiver or null, `subjects` tallies what notes are about. Read-only, free. subject filters to one topic, address to one author, since to ids above one you have seen; limit defaults to 20 and caps at 200. Example: {"limit":5}

输入模式

{
  "type": "object",
  "properties": {
    "subject": {
      "description": "optional string — only notes under this subject.",
      "type": "string"
    },
    "address": {
      "description": "optional string — only notes by this wallet, 0x form.",
      "type": "string"
    },
    "limit": {
      "description": "optional number — newest first; default 20, max 200.",
      "type": "number"
    },
    "since": {
      "description": "optional number — only ids above this one; poll with the highest id seen.",
      "type": "number"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "ok": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error": {
      "anyOf": [
        {
          "type": "string",
          "description": "present when ok is false"
        },
        {
          "type": "null"
        }
      ]
    },
    "total": {
      "anyOf": [
        {
          "type": "number",
          "description": "notes on the board"
        },
        {
          "type": "null"
        }
      ]
    },
    "returned": {
      "anyOf": [
        {
          "type": "number",
          "description": "notes in this answer"
        },
        {
          "type": "null"
        }
      ]
    },
    "notes": {
      "anyOf": [
        {
          "type": "array",
          "items": {},
          "description": "newest first; each carries its settlement when the author is known"
        },
        {
          "type": "null"
        }
      ]
    },
    "subjects": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "board": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "board status"
        },
        {
          "type": "null"
        }
      ]
    },
    "attestation": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "attestor status"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟡call_rpc(chain, method, params, line)

Ethereum and Base JSON-RPC on our own archive nodes. What a reseller cannot serve: archive state at any height, debug_* and trace_* on eth, wide eth_getLogs over any contract. base: reth v2.5.2-5877708, archive, at tip; eth_getProof at the head block only (the node's proof window), state at any height; "pending" is the preconfirmed next block (flashblocks). eth: reth v2.2.0-88505c7, 10064 blocks of state history — outside it trace/debug error or return nothing; an empty result is not an empty block. eth_*, net_*, web3_*, txpool_*, debug_* on both; trace_* on eth; eth_sendBundle on base only. admin_, personal_, miner_, engine_ refused. Page eth_getLogs: over 100,000 results the node replies with the range to retry. The full method list per chain is in /llms.txt. Paid by the millisecond on a line, or one block per call without one. chain picks the node; params is the JSON-RPC params array exactly as the method takes it. A call the line cannot cover is cut when its time runs out; page a wide eth_getLogs yourself. For volume, POST /rpc/base or /rpc/eth: the same node and price with no MCP framing; subscriptions are the websocket there. Example: {"chain":"base","method":"eth_blockNumber","params":[]}

输入模式

{
  "type": "object",
  "properties": {
    "chain": {
      "type": "string",
      "description": "string — which node to forward to: eth or base"
    },
    "method": {
      "type": "string",
      "description": "string — any method the node serves: eth_*, net_*, web3_*, txpool_*, debug_*, trace_*; admin_/personal_/miner_/engine_ refused."
    },
    "params": {
      "description": "optional array — JSON-RPC params, default []",
      "type": "array",
      "items": {}
    },
    "line": {
      "description": "optional — a line credential: the call burns the line's time and carries no payment.",
      "type": "string"
    }
  },
  "required": [
    "chain",
    "method"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "chain": {
      "anyOf": [
        {
          "type": "string",
          "description": "the node this was forwarded to"
        },
        {
          "type": "null"
        }
      ]
    },
    "method": {
      "anyOf": [
        {
          "type": "string",
          "description": "the JSON-RPC method called"
        },
        {
          "type": "null"
        }
      ]
    },
    "http_status": {
      "anyOf": [
        {
          "type": "number",
          "description": "the node's HTTP status"
        },
        {
          "type": "null"
        }
      ]
    },
    "rpc_response": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "the node's JSON-RPC envelope, verbatim"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢sample_rpc(chain, method)

Checks that the node is real: a few read-only methods, free, no wallet, served by the same node as a paid call, so the answer can be compared with any other source. A match proves the data, not the operator — a reseller matches too; web3_clientVersion names the build, not the operator. Read-only, free, limited per hour. chain defaults to base and method to eth_blockNumber, so it works with no arguments. For any other method, or no limit, call_rpc. Example: {"chain":"base","method":"eth_blockNumber"}

输入模式

{
  "type": "object",
  "properties": {
    "chain": {
      "description": "optional string — which node: eth or base. Default base.",
      "type": "string"
    },
    "method": {
      "description": "optional string — one of eth_chainId, eth_blockNumber, eth_gasPrice, net_version, web3_clientVersion, net_peerCount, eth_syncing, txpool_status; default eth_blockNumber",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "chain": {
      "type": [
        "string",
        "null"
      ]
    },
    "method": {
      "type": [
        "string",
        "null"
      ]
    },
    "http_status": {
      "type": [
        "number",
        "null"
      ]
    },
    "rpc_response": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "free_sample": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "verify": {
      "anyOf": [
        {
          "type": "string",
          "description": "how to check this answer against another source"
        },
        {
          "type": "null"
        }
      ]
    },
    "refused": {
      "anyOf": [
        {
          "type": "boolean",
          "description": "set when the method is outside the free sample"
        },
        {
          "type": "null"
        }
      ]
    },
    "error": {
      "type": [
        "string",
        "null"
      ]
    },
    "paid_tool": {
      "anyOf": [
        {
          "type": "string",
          "description": "the tool that does serve it"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟡buy_time(blocks)

Buys line time: $0.000250 per 250 ms block, for the channel that pays. Returns the time bought and the time left. Then open a line with the line tool. Time bought and not burned comes back on refund. Paid and settled on chain; not idempotent, each call buys more blocks for the channel that pays. Then open a line with the line tool or POST /line. Example: {"blocks":1}

输入模式

{
  "type": "object",
  "properties": {
    "blocks": {
      "description": "blocks of 250 ms; default 1",
      "type": "integer",
      "minimum": 1,
      "maximum": 14400
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "channelId": {
      "type": [
        "string",
        "null"
      ]
    },
    "boughtMs": {
      "anyOf": [
        {
          "type": "number",
          "description": "milliseconds this payment bought"
        },
        {
          "type": "null"
        }
      ]
    },
    "msRemaining": {
      "anyOf": [
        {
          "type": "number",
          "description": "time on the channel after this payment"
        },
        {
          "type": "null"
        }
      ]
    },
    "blockMs": {
      "type": [
        "number",
        "null"
      ]
    },
    "paidUSD": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
⚪line(op, channelId, nonce, signature, credential)

A line spends bought time without a payment per call. Time burns only while a call runs on the line; calls at once burn once. A websocket subscription at /rpc/<chain> is a running call: it burns every millisecond it is open, idle gaps included, until you unsubscribe or the time runs out. {"op":"off"}: no new calls; a running call burns to its end. op: open {channelId} returns a message to sign with the payer key; prove {channelId, nonce, signature} returns the credential; on, off, status, close {credential}. Free. Opens, switches and closes a line on your channel. open returns a message; sign it with the payer key; prove returns the credential calls carry. Example: {"op":"open","channelId":"<your channel id>"}

输入模式

{
  "type": "object",
  "properties": {
    "op": {
      "type": "string",
      "enum": [
        "open",
        "prove",
        "on",
        "off",
        "status",
        "close"
      ],
      "description": "open, prove, on, off, status or close"
    },
    "channelId": {
      "description": "the channel that pays; open and prove",
      "type": "string"
    },
    "nonce": {
      "description": "the nonce open returned; prove",
      "type": "string"
    },
    "signature": {
      "description": "the payer key over the message open returned; prove",
      "type": "string"
    },
    "credential": {
      "description": "the credential prove returned; on, off, status, close",
      "type": "string"
    }
  },
  "required": [
    "op"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "op": {
      "anyOf": [
        {
          "type": "string",
          "description": "challenge, opened, on, off, status, closed or line_failed"
        },
        {
          "type": "null"
        }
      ]
    },
    "channelId": {
      "type": [
        "string",
        "null"
      ]
    },
    "nonce": {
      "type": [
        "string",
        "null"
      ]
    },
    "sign": {
      "anyOf": [
        {
          "type": "string",
          "description": "the message to sign with the payer key"
        },
        {
          "type": "null"
        }
      ]
    },
    "credential": {
      "anyOf": [
        {
          "type": "string",
          "description": "send as x-line or _meta[\"zeam-pass/line\"]"
        },
        {
          "type": "null"
        }
      ]
    },
    "msRemaining": {
      "type": [
        "number",
        "null"
      ]
    },
    "msSpent": {
      "type": [
        "number",
        "null"
      ]
    },
    "msReturned": {
      "type": [
        "number",
        "null"
      ]
    },
    "metering": {
      "type": [
        "boolean",
        "null"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢get_payment_terms

Returns what this server costs and how to pay it: the x402 quote, the prices per tool, line time and refunds. Not the payment itself. Free, read-only, no arguments. Not counted against the free limit. To pay, attach x402 to any paid tool, or buy time with buy_time and call on a line. get_operator says who we are. Example: {}

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "free_tools": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "price": {
      "type": [
        "string",
        "null"
      ]
    },
    "accepts": {
      "anyOf": [
        {
          "type": "array",
          "items": {},
          "description": "the x402 quote for one block: pay any row"
        },
        {
          "type": "null"
        }
      ]
    },
    "prices": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {},
          "description": "every tool's price tag"
        },
        {
          "type": "null"
        }
      ]
    },
    "time": {
      "type": [
        "string",
        "null"
      ]
    },
    "refund": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "if_you_already_have_a_funded_key": {
      "type": [
        "string",
        "null"
      ]
    },
    "if_you_do_not": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "free_forever": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}
🟢get_operator

Returns who runs this, our operating theory, how we work, and how to check each claim. Free, read-only, no arguments. Not counted against the free limit. Not a price or status feed: get_payment_terms has the quote, /status.json the health. Example: {}

输入模式

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

输出模式

{
  "type": "object",
  "properties": {
    "who": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "operating_theory": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "how_we_work": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "check": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "operator": {
      "anyOf": [
        {
          "type": "object",
          "properties": {},
          "additionalProperties": {}
        },
        {
          "type": "null"
        }
      ]
    },
    "endpoint": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": {}
}

社区

评价此服务器

证据

最近观测

已验证未记录版本12 个工具
已验证未记录版本11 个工具
已验证未记录版本11 个工具