关于 x402 Toolbox
x402 Toolbox 是提供确定性实用工具的 MCP 服务,涵盖网页、DNS、EVM 和数据处理。适合按需调用工具并以 Base 上的 USDC 按次付费、无需注册或 API 密钥的客户端。
主要功能
- 01DNS 与电子邮件安全检查
- 02提取和检查网页内容
- 03解码 EVM 交易与 calldata
- 04转换、验证和比较数据
- 05换算单位、时间与货币
适用场景
- 01审查域名的电子邮件安全记录
- 02提取网页文本和元数据
- 03检查 EVM 交易或 ABI 数据
- 04验证 JSON 或转换 CSV 数据
MCP 相关
通过无状态的 Streamable HTTP MCP 端点提供 62 种工具。初始化和工具列表免费;工具调用通过 x402 付款元数据结算,并在响应中返回结算信息。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://x402-toolbox.swiftbotlab.workers.dev/mcpclaude mcp add --transport http swiftbotlab-x402-toolbox https://x402-toolbox.swiftbotlab.workers.dev/mcp{"mcpServers":{"swiftbotlab-x402-toolbox":{"type":"http","url":"https://x402-toolbox.swiftbotlab.workers.dev/mcp"}}}在 Cursor 中打开{"servers":{"swiftbotlab-x402-toolbox":{"type":"http","url":"https://x402-toolbox.swiftbotlab.workers.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"swiftbotlab-x402-toolbox":{"type":"http","url":"https://x402-toolbox.swiftbotlab.workers.dev/mcp"}}}{"mcpServers":{"swiftbotlab-x402-toolbox":{"serverUrl":"https://x402-toolbox.swiftbotlab.workers.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Swift Bot Labs 工具箱
通过 x402 按次付费,即可使用同一来源下的 62 个小型、确定性实用 API:DNS 和电子邮件安全检查、将网页转换为干净的 Markdown、EVM 调用数据和交易解码、x402 端点检查、IP/CIDR 运算、JSON 和 CSV、哈希,以及单位、时区和货币转换。
无需注册,也无需 API 密钥。每次调用费用为 0.003 至 0.02 美元,以 Base 上的 USDC 支付。失败的调用不收费。
- 目录:https://x402-toolbox.swiftbotlab.workers.dev/
- OpenAPI 3.1:https://x402-toolbox.swiftbotlab.workers.dev/openapi.json
- llms.txt:https://x402-toolbox.swiftbotlab.workers.dev/llms.txt
- MCP 服务(可流式传输的 HTTP):
https://x402-toolbox.swiftbotlab.workers.dev/mcp
付款方式
- 调用任意工具。未付款时会收到
402 Payment Required,以及一个PAYMENT-REQUIRED标头(base64 JSON,x402 v2),其中包含价格、资产(Base 上的 USDC,eip155:8453)和收款地址。 - 你的 x402 客户端会为确切金额签署 USDC
transferWithAuthorization(EIP-3009),并在PAYMENT-SIGNATURE标头中附上签名后重试。付款方无需持有 ETH 来支付 Gas。 - 服务端验证付款、运行工具并完成结算。响应为
{"ok": true, "tool": ..., "result": {...}, "payment": {...}},结算信息包含在PAYMENT-RESPONSE中。
输入错误(HTTP 400)、目标无法访问、上游故障和超时都会在结算前返回,因此不会产生费用。
# see the price (free)
curl -i "https://x402-toolbox.swiftbotlab.workers.dev/v1/dns/mx?domain=example.com"
// pay and call, with the official x402 client packages (Node)
import { wrapFetchWithPayment } from "@x402/fetch"; // plus an EVM signer from @x402/evm
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://x402-toolbox.swiftbotlab.workers.dev/v1/email/security?domain=example.com");
const { result, payment } = await res.json();
GET 工具使用查询参数(POST 请求也可以使用 JSON 请求体)。POST 工具使用 JSON 对象作为请求体。本仓库中的 tools/pay.mjs 是一个依赖精简的付款方参考实现(使用 @noble/* 进行 EIP-712 签名)。
MCP
POST /mcp 使用可流式传输的 HTTP 进行 JSON-RPC 通信(无状态,JSON 响应)。initialize 和 tools/list 免费。tools/call 遵循 x402 MCP 传输协议:如果没有 params._meta["x402/payment"],结果将为 isError: true,并在 structuredContent 中包含 PaymentRequired 对象;将已签名的付款载荷发送到该字段后,结算信息会返回在 result._meta["x402/payment-response"] 中。
端点
* = 必填参数。完整的架构和结果示例见目录和 openapi.json。
DNS 和电子邮件
| 端点 | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/dns/lookup | $0.005 | 通过 DNS-over-HTTPS 查询任意记录类型的 DNS | name*、type |
GET /v1/dns/mx | $0.005 | 查询域名的邮件服务器(MX),按顺序排列并显示邮件服务提供商 | domain* |
GET /v1/dns/reverse | $0.005 | 查询 IPv4 或 IPv6 地址的反向 DNS(PTR),并进行正向确认 | ip* |
GET /v1/dns/spf | $0.008 | SPF 记录检查:完整的 include 树、DNS 查询次数和问题 | domain* |
GET /v1/dns/dmarc | $0.005 | DMARC 记录检查并解析策略 | domain* |
GET /v1/email/validate | $0.005 | 电子邮件地址检查:语法、MX、一次性邮箱、角色邮箱、免费服务提供商和拼写错误 | email* |
GET /v1/email/security | $0.02 | 域名电子邮件安全审计:MX、SPF、DMARC、DKIM、MTA-STS、TLS-RPT、BIMI 和评级 | domain*、dkimSelectors |
GET /v1/domain/rdap | $0.01 | 域名注册数据(RDAP/WHOIS):注册商、创建时间、到期时间、域名年龄和状态 | domain* |
Web
| Endpoint | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/web/extract | $0.01 | 获取网页并返回整理后的正文和 Markdown,以及标题和元数据 | url*、format、mode、maxChars |
GET /v1/web/metadata | $0.008 | 获取页面元数据,用于链接预览和 SEO:标题、描述、OpenGraph、Twitter 卡片、JSON-LD、网站图标 | url* |
GET /v1/web/links | $0.008 | 获取页面上的所有链接,转换为绝对链接、去重,并拆分为内部和外部链接 | url*、filter、limit |
GET /v1/web/headers | $0.005 | 获取 HTTP 状态、响应标头、重定向链和耗时,并执行安全标头审计 | url*、method |
GET /v1/web/robots | $0.005 | 根据 robots.txt 判断爬虫是否可以访问某个 URL,并获取规则、抓取延迟和站点地图 | url*、userAgent |
GET /v1/web/sitemap | $0.008 | 读取 sitemap.xml(或网站的默认站点地图):获取含 lastmod 的 URL 和子站点地图 | url*、limit |
POST /v1/html/extract | $0.005 | 将已有 HTML 转换为整理后的文本 / Markdown,并提取其中的元数据和链接 | html*、baseUrl、format、mode、maxChars |
GET /v1/url/parse | $0.003 | 解析、规范化并清理 URL(组件、查询参数、punycode,并移除跟踪参数) | url* |
EVM
| Endpoint | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/evm/address | $0.003 | 验证 EVM 地址并返回其 EIP-55 校验和格式 | address* |
GET /v1/evm/contract | $0.005 | 判断地址是合约还是钱包?获取代码大小、EIP-1967 代理实现 / 管理员 / 信标,以及 EIP-7702 委托信息 | address*、chain |
GET /v1/evm/selector | $0.003 | 获取 Solidity 签名对应的函数选择器和事件主题 | signature* |
GET /v1/evm/selector-lookup | $0.005 | 反向查找 4 字节函数选择器和 32 字节事件主题对应的签名 | selectors* |
POST /v1/evm/abi-encode | $0.003 | 对值进行 ABI 编码(或为函数签名生成完整调用数据) | signature、types、values* |
POST /v1/evm/abi-decode | $0.003 | 使用已知类型或签名对调用数据、返回数据或日志数据进行 ABI 解码 | data*、signature、types |
POST /v1/evm/calldata-decode | $0.005 | 解码未知交易调用数据:查找函数签名并解码参数 | data* |
GET /v1/evm/tx | $0.01 | 解析 EVM 交易:状态、费用、解码后的方法、ERC-20/721 转账 | hash*、chain |
GET /v1/evm/token | $0.005 | 获取 ERC-20 代币元数据:名称、符号、精度、总供应量(链上数据) | address*、chain |
GET /v1/evm/balance | $0.005 | 获取地址的原生代币和 ERC-20 余额 | address*、chain、tokens |
GET /v1/evm/gas | $0.003 | 获取 EVM 链当前的 Gas 价格、基础费用和优先费用 | chain |
GET /v1/evm/ens | $0.005 | ENS:将名称解析为地址,或将地址解析为其主要名称(已验证) | name、address |
GET /v1/evm/units | $0.003 | 在 wei、gwei、ether 或任意代币精度单位之间进行精确转换 | value*、from、to |
POST /v1/evm/verify-message | $0.003 | 恢复 EIP-191 personal_sign 消息的签名者,并核对其是否与某个地址匹配 | message、signature、address、messageEncoding |
x402
| Endpoint | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/x402/check | $0.01 | 探测 x402 端点:是否可用?收费多少、使用哪条链、付给谁?其 402 是否有效? | url*、method |
GET /v1/x402/search | $0.01 | 按关键词搜索 x402 Bazaar 目录中的付费 API,并查看价格 | query*、network、maxPriceUsd、limit |
IP 和 CIDR
| Endpoint | Price | 功能 | 参数 |
|---|---|---|---|
GET /v1/ip/info | $0.003 | 解析并分类 IPv4/IPv6 地址(私有地址、环回地址、CGNAT、文档专用地址等) | ip* |
GET /v1/ip/cidr | $0.003 | 计算 IPv4/IPv6 CIDR 网段的子网信息 | cidr* |
POST /v1/ip/contains | $0.003 | 检查哪些 IP 属于哪些 CIDR 范围(允许列表 / 阻止列表检查) | cidrs、ips |
GET /v1/ip/split | $0.003 | 将 CIDR 网段拆分为更小的子网 | cidr、newPrefix、limit |
POST /v1/ip/aggregate | $0.003 | 将 CIDR 列表合并 / 汇总为最小等效集合 | cidrs* |
GET /v1/ip/range | $0.003 | 将 IP 范围(起始 - 结束)转换为最少数量的 CIDR 网段列表 | start、end |
数据和文本
| Endpoint | Price | 功能 | 参数 |
|---|---|---|---|
POST /v1/json/validate | $0.003 | 根据 JSON Schema(draft 2020-12 / draft-07)验证 JSON 数据 | schema、data、formats |
POST /v1/json/format | $0.003 | 解析、美化打印、压缩或规范化 JSON(键排序);定位语法错误 | json*、mode、indent、sortKeys |
POST /v1/json/query | $0.003 | 使用 JSON Pointer 或点分路径(a.b[0].c、items[*].id)提取 JSON 中的值 | json*、path、paths |
POST /v1/json/diff | $0.003 | 将两个 JSON 文档进行结构化比较,并以 JSON-Patch 风格操作表示差异 | a、b |
POST /v1/csv/to-json | $0.003 | 将 CSV / TSV 转换为 JSON(遵循 RFC 4180 引号规则、自动检测分隔符、推断类型) | csv*、delimiter、header、inferTypes |
POST /v1/json/to-csv | $0.003 | 将 JSON 对象数组转换为 CSV(嵌套对象会展平为点分键名) | json*、delimiter、flatten |
POST /v1/text/stats | $0.003 | 文本统计:词数、句子数、阅读时间、可读性、热门关键词 | text*、top |
POST /v1/text/diff | $0.003 | 对两段文本进行逐行比较,生成统一差异,并统计新增 / 删除行数 | a、b、context |
POST /v1/text/transform | $0.003 | 转换为 slug 和不同大小写格式(camel、snake、kebab、title、constant 等)、修剪空白、去重行 | text、op |
编码和哈希
| Endpoint | Price | 功能 | 参数 |
|---|---|---|---|
POST /v1/hash | $0.003 | 对文本或字节计算哈希:SHA-1/2/3、Keccak-256、MD5、RIPEMD-160、BLAKE2/3 | data*、inputEncoding、algorithm、outputEncoding |
POST /v1/hmac | $0.003 | 计算 HMAC(SHA-256/384/512/1、MD5),例如用于检查 webhook 签名 | message、key、keyEncoding、algorithm、expected |
POST /v1/encode | $0.003 | 在 UTF-8、hex、base64、base64url、base32、base58 之间转换;进行 URL 和 HTML 转义 | data*、from、to |
GET /v1/uuid | $0.003 | 生成 UUID(v4 随机、v7 按时间排序),或解析 / 验证 UUID | uuid、version、count |
POST /v1/jwt/decode | $0.003 | 解码 JWT 并检查时间;可选择验证 HS256/384/512 签名 | token*、secret、secretEncoding |
GET /v1/random | $0.003 | 生成密码学安全的随机字节、令牌和密码 | kind、length、encoding、symbols、count |
转换
| Endpoint | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/convert/units | $0.003 | 转换长度、质量、体积、面积、速度、时间、数据、压力、能量、功率、温度和角度单位 | value、from、to* |
GET /v1/time/convert | $0.003 | 在时区和格式(ISO、unix、RFC 2822)之间转换时间,并支持感知夏令时的偏移量 | time、from、to |
GET /v1/time/diff | $0.003 | 计算两个日期/时间之间的时长、日历差异和工作日 | start*、end、tz |
GET /v1/cron/next | $0.003 | 解析 cron 表达式,并列出其在任意时区中的后续运行时间 | expression*、tz、count、from |
GET /v1/color | $0.003 | 转换颜色格式(hex、RGB、HSL),并计算两种颜色之间的 WCAG 对比度 | color*、against |
GET /v1/convert/currency | $0.005 | 使用欧洲央行官方欧元参考汇率转换货币(30 种法定货币) | amount、from、to |
验证与解析
| Endpoint | 价格 | 功能 | 参数 |
|---|---|---|---|
GET /v1/semver | $0.003 | 语义化版本:解析、比较、排序,并检查是否符合 npm 风格的范围 | versions*、range、compareTo |
GET /v1/iban/validate | $0.003 | 验证 IBAN:国家/地区长度、mod-97 校验位和格式化输出 | iban* |
GET /v1/user-agent | $0.003 | 解析 User-Agent:浏览器、引擎、操作系统、设备类型,以及已知机器人/AI 爬虫 | ua* |
限制
- 每个 IP 每分钟最多 120 次价格查询和 60 次付费调用。
- 请求正文最大为 64 KB(哈希、文本、JSON、CSV 和 HTML 工具为 1-2 MB);查询字符串最大为 16 KB。
- URL 工具最多下载 2 MB,超过 12 秒即停止;每次工具调用最长为 25 秒。
安全
- 先付款,再处理。 首先检查付款(金额、收款地址、网络、最长 15 分钟的有效期,以及本地验证签名是否属于付款方),然后验证输入,再询问 USDC 合约授权是否仍未使用,最后由 facilitator 验证。只有完成这些步骤后,工具才会运行;仅在确认结算后才会返回结果。已使用的授权会在处理开始前被拒绝。
- 服务器上不存放密钥。 部署只会向固定地址收款,不持有私钥或机密。
- SSRF 防护。 用户 URL 必须使用
http/https,端口为 80、443、8080 或 8443,且不得包含凭据。字面 IP 和每个 DNS 解析结果(A 和 AAAA)都必须是公共单播地址;拒绝私有、环回、链路本地、CGNAT、多播、文档示例、NAT64、6to4、Teredo 和 IPv4 映射形式。重定向由程序逐步跟随,并重新检查每一跳。只发送 GET 和 HEAD 请求,不发送调用方的标头或 Cookie。 - 固定上游服务。 其他所有服务(DNS-over-HTTPS、公共 EVM RPC、签名数据库、欧洲央行汇率、IANA RDAP 引导服务、facilitator 和发现目录)都连接到固定的允许名单主机,绝不跟随重定向。
- 限制处理范围。 每项输入都有大小限制;HTML 解析器采用线性时间算法;ABI 解码器、CSV 解析器和 diff 均有大小限制;JSON Schema 的
pattern使用线性时间匹配器运行,因此恶意正则表达式无法拖垮服务;绝不将用户提供的内容作为代码执行。 - 隐私。 输入仅在内存中处理,不会保存。日志仅记录工具名称、状态、付款方地址和结算哈希。
请参阅 SECURITY.md,了解威胁模型和问题报告方式。
自行运行
Cloudflare Workers、纯 JavaScript,以及两个固定版本的依赖项(@noble/hashes、@noble/curves)。
npm ci --ignore-scripts
node test/run.mjs # offline suite (mocked network)
node test/live.mjs # live smoke test of the network tools (no payments)
npx wrangler dev # local
npx wrangler deploy --env test # Base Sepolia twin (test USDC)
部署前,请在 wrangler.toml 中将 PAY_TO 设置为你自己的收款地址。
联系方式
批量使用、需要某个工具或发现错误:在 Telegram 上联系 @SwiftBotLabsBot。
MIT 许可证。由 Swift Bot Labs 制作。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。