关于 tab
tab 是面向软件 Agent 的开放支付协议,让 Agent 按所有者设定的规则购买付费 HTTP 服务。签名授权限定总预算、单次价格和卖家等,MCP 工具可供兼容 Agent 搜索服务并付款。
主要功能
- 01签名授权设置支出上限
- 02按 HTTP 402 付费请求
- 03验证请求并签发收据
- 04支持 x402 支付标准
- 05提供服务目录与 MCP 工具
适用场景
- 01让 Agent 在预算约束内调用付费 API
- 02为 HTTP API 添加支付网关
- 03通过 MCP 搜索并购买服务
MCP 相关
tab 提供五个 MCP 工具,供兼容 Agent 搜索服务、查看定价、发起付费请求、查询余额和授权限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y paidwithtabTAB_AGENTAgent key file. Default ~/.tab/agent.json, which `npx paidwithtab init` creates with a mandate and starter credits.TAB_MANDATEOwner-signed mandate file. Default ~/.tab/mandate.json.TAB_MAX_PER_CALLRefuse any single call priced above this many dollars, e.g. 0.05.TAB_CATALOGCatalog to search. Default https://paidwithtab.com.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
为软件 Agent 提供支付服务。
为 Agent 配置带规则的钱包,而不是把你的钱包交给它。
快速开始 · 运营一家公司 · 面向 Agent · 面向卖家 · 协议 · 部署 · @paidwithtab
目录
什么是 tab · 为什么选择 tab · 授权书 · 支付如何运作 · 快速开始 · 面向 API 提供商 · 面向 Agent 开发者 · 公司 · 结算 · x402 · 安全模型 · 测试 · 架构 · 路线图
什么是 tab
tab 是一种面向软件 Agent 的开放支付协议。
它让 Agent 能够发现收费的 HTTP 服务、获取价格、根据所有者设定的规则授权购买、完成支付并接收结果。整个过程无需任何人创建账户、输入银行卡信息或复制 API 密钥。
所有者只需在签名的授权书中定义一次规则:
| 限制条件 | 用途 |
|---|---|
| 总预算 | 限制整个生命周期内的支出 |
| 单次请求最高价格 | 阻止单次高价调用 |
| 允许的卖家 | 限制资金的去向 |
| 支出周期 | 每个 UTC 日重置预算,或使用单一的终身总额 |
| 到期时间 | 自动终止授权 |
所有者只需签名一次。之后 Agent 就能自行交易,且不能超出所有者授权的范围。
Owner
│
│ signs mandate
▼
Agent
│
│ HTTP request
▼
Gateway ────────► API
│
│ verifies mandate
│ enforces budget
│ settles payment
▼
USDG
为什么选择 tab
软件 Agent 已经能够调用 API 和使用工具。为这些服务付费,仍然需要人工参与。
如今,人工需要创建账户、输入支付信息、生成 API 密钥、配置账单,并将凭据交给 Agent。tab 用 HTTP 支付取代了这一切。
| 不使用 tab | 使用 tab |
|---|---|
注册账户、绑定银行卡、交接 API 密钥、设置账单。 |
无需账户。无需银行卡信息。无需共享所有者密钥。无需不受限制的钱包。 |
授权书
授权书是所有者签发给 Agent 的签名支出授权。
| 字段 | 示例 |
|---|---|
| Agent | 7f2c... |
| 预算 | $25.00 |
| 单次调用最高金额 | $0.05 |
| 允许的卖家 | api.example.com |
| 到期时间 | 2026-10-01 |
Agent 工作期间,所有者密钥无需保持在线。卖家的网关会依据签名授权书独立检查每笔支付,因此修改 Agent 的提示词也无法扩大其权限。
支付流程
tab 使用标准 HTTP 支付语义。定价端点会返回 402 Payment Required 和一个描述购买内容的签名质询。Agent 会根据其授权检查价格,并签署绑定到该确切请求的凭证。
随后,网关会执行完整流程:
| 步骤 | 操作 |
|---|---|
| 1 | 验证质询 |
| 2 | 验证授权 |
| 3 | 验证 Agent |
| 4 | 验证确切请求 |
| 5 | 预留预算 |
| 6 | 调用上游服务 |
| 7 | 仅在收到成功响应后结算 |
| 8 | 返回签名收据 |
如果上游服务失败,支付将作废。
收据由网关公布的密钥签署,并将整个购买过程绑定在一起:允许此次购买的授权、Agent 签署的确切请求、返回的响应正文哈希、卖家以及支付(在 Robinhood Chain 上为交易哈希)。因此,收据证明了购买了什么,而不仅仅是资金发生了转移。客户端会根据收到的字节验证收据,任何编辑都会导致验证失败。
快速入门
需要 Node.js 22.13 或更高版本。
只需一条命令,即可为 Agent 配置 tab:
npx paidwithtab init
此命令会在 ~/.tab 中创建一个所有者密钥和一个 Agent 密钥,签署一份授权(每天 $1.00、每次调用 $0.05,有效期 90 天),并在 pay.paidwithtab.com 公共网关领取 $1.00 的入门额度。无需充值,无需链,也无需 API 密钥。
这些额度可以购买真实服务:8,638 个路由,涵盖 484 项服务,包括网页搜索、翻译、语音转文本、42 条链的区块浏览器、20 家交易所的市场数据、48 种语言的 Wikipedia、SEC 文件、美国财政部数据、基因组、蛋白质和化学数据、软件包注册表、RDAP 和 DNS、天气与空间天气,每次调用费用为 $0.001 至 $0.02。完整服务列表及价格请参阅快速入门。
1. 在命令行中为服务付费。
npx paidwithtab fetch "https://pay.paidwithtab.com/wikipedia/api/rest_v1/page/summary/Lisbon"
paid 0.001 (ledger:cpKKYHocOLKlDW8n)
{"type":"standard","title":"Lisbon", ...}
2. 让 Claude Code 支付费用。
claude mcp add --scope user tab -- npx -y paidwithtab mcp
然后向 Claude 提出需要付费的请求,例如“通过 tab 查询里斯本的天气”。它会在 paidwithtab.com/catalog 搜索目录,按请求付费,且支出永远不会超过授权额度。
3. 查看价格标签。
curl -i https://pay.paidwithtab.com/fx/latest?base=USD
HTTP/1.1 402 Payment Required
WWW-Authenticate: Tab challenge="eyJ2ZXIiOiJ0YWIvMCIs..."
入门额度是该网关上的沙盒资金。要使用真实资金,请在 Robinhood Chain 上为 Agent 充值 USDG:docs/buyers.md。
想在自己的机器上运行完整技术栈?git clone https://github.com/paidwithtab/tab && cd tab && npm install && npm run demo 会启动一个付费 API、一个网关、一个目录和一个本地钱包。完整操作指南
面向 API 提供商
只需一份简短的 JSON 规范,任何 HTTP API 都可以支持付费。开发期间省略 rail,即可使用沙盒余额运行。
{
"realm": "api.example.com",
"recipient": "<wallet>",
"rail": "evm",
"evm": {
"rpc": "https://rpc.testnet.chain.robinhood.com",
"chain_id": 46630,
"token": "0x5B6C7cAF7F99f99154fD8375ec935Fcf03F326f5",
"decimals": 6, // the token's decimals, 0 to 18; USDG and USDC have 6
"recipient": "<your 0x payout address>"
},
"upstream": "http://127.0.0.1:8080",
"routes": [
{ "method": "GET", "path": "/v1/things/:id", "price": "0.01" },
{ "method": "POST", "path": "/v1/generate", "price": "0.002" }
]
}
启动网关:
tab serve \
--spec spec.json \
--announce https://paidwithtab.com
网关负责处理支付协商、授权、结算、收据和代理转发。你的应用仍可像往常一样提供 HTTP 服务。
面向 Agent 开发者
1. 创建 Agent 密钥。
tab key new --out agent.json
2. 为其签发授权。
tab mandate issue \
--owner owner.json \
--agent agent.json \
--budget 5.00 \
--window day \
--max-per-call 0.05 \
--allow 'api.example.com' \
--out mandate.json
3. 在这些限额内支出。
import { TabClient, receiptOf } from 'paidwithtab/client';
const client = new TabClient({
agent,
mandate,
maxPerCallUsd: '0.05',
});
const url = 'https://api.example.com/v1/things/42';
const res = await client.fetch(url);
const body = new Uint8Array(await res.arrayBuffer());
console.log(receiptOf(res)?.ref);
console.log(await client.verify(url, res, body)); // { ok: true }
或者跳过密钥管理:npx paidwithtab init 会完成以上三个步骤,并在公共网关领取入门额度。
tab 还提供五种 MCP 工具,让兼容的 Agent 无需接触所有者的私钥,即可发现和购买服务:
| 工具 | 用途 |
|---|---|
tab_search | 在目录中查找服务 |
tab_discover | 查看服务及其定价 |
tab_fetch | 发起付费请求 |
tab_balance | 查看剩余预算 |
tab_limits | 查看当前授权限制 |
将 tab 接入特定 Agent,包括 Cursor、Codex、Windsurf 和 Claude Desktop 的 MCP JSON 配置、框架工具、通过子进程使用 Python,以及生产环境中的密钥存放位置:docs/agents.md
公司
tab 2.2 在支付层之上运行一家公司 Agent:tab company 和 app.paidwithtab.com 上的控制面板。公司有使命、预算、分配了角色的 Agent 和工单。Agent 是 Claude,运行时使用你添加到公司的 Anthropic API 密钥,并且只使用五个 tab 工具,不做其他操作;也可以使用你指定的任意 HTTP 端点(可自托管的服务器也能运行 Claude Code)。它与普通 Agent 编排器的区别在于资金所在的位置:
- 每次运行都有自己的授权,由公司所有者密钥签署,额度上限取公司剩余预算、Agent 的单次运行预算和工单上限三者中的最小值。网关会强制执行;Agent 无法超出额度。
- 网关记入授权的支出,就是该次运行的实际支出,并逐笔收据归属到该次运行、工单和公司。模型费用也会记账。公司在预算使用达到 80% 时发出警告,达到 100% 时暂停。
- 没有证据就不能结单:收据 ID、URL、文件或原样输出。没有证据的“已完成”会转交审核。
- 雇用、设定预算、批准、暂停和发布都是由所有者密钥签署的董事会操作,并在每次读取时验证。可以导出密钥并离线签署这些操作。
- 公司可以盈利:发布其销售服务所经由的网关,其收据就会显示为收入。
tab company serve --host app.example.com # one process, SQLite, no dependencies
tab company signup --email [email protected] --password ...
tab company new --template examples/companies/research.json
tab company model-key --key sk-ant-... # your Anthropic key, sealed at rest; your agents run on it
tab company fund && tab company status
docs/company.md 介绍 Agent 收到的数据包、必须返回的结果、适配器、董事会日志以及服务器的信任边界。
结算
tab 按交付优先模式,以 USDG 在 Robinhood Chain 主网结算,以测试网 USDC 在其测试网上结算;也可以使用网关选择收费的任何 ERC-20(此时其价格、支付请求和收据会在 currency 中标明该代币)。网关只有在上游服务成功响应后才会结算付款。
authorize
│
▼
reserve
│
▼
call API
│
├── failure ──► void
│
▼
success
│
▼
settle
│
▼
receipt
x402
tab 支持双向 x402,这是一种由 Coinbase 发起、Cloudflare、Visa 和 Mastercard 正在扩展的 HTTP 402 支付标准。
x402 买家可以向 tab 网关付款。 在 evm 支付轨道上,每个 402 响应都会在 tab 自身的支付请求旁附带 x402 支付要求(PAYMENT-REQUIRED 标头)。x402 客户端会签署一笔金额恰好等于价格、支付给卖家的 EIP-3009 转账,并通过 PAYMENT-SIGNATURE 发送;随后会收到包含 PAYMENT-RESPONSE 和已签名 tab 收据的响应。网关会检查签名、金额、收款方和时间窗口,模拟执行转账,调用上游,然后才从自己的小额 Gas 钱包在链上结算转账(--x402-settler)。如果未结算,就不会返回响应。目前,公共主网网关接受以 USDG 在 Robinhood Chain(eip155:4663)支付的 x402 款项,因此所有路由都对任何 x402 Agent 开放,无需任何 tab 软件。
tab Agent 可以向 x402 网站付款。 当网站返回的 402 仅包含 x402 支付要求时,tab 客户端会在所有者授权范围内为其付款:支付范围(网站的主机名)、单次调用上限、预算和有效期;可使用客户端支持的代币(Robinhood Chain 上的 USDG、Base 上的 USDC)。x402 要求付款方自行签署转账,因此所有者需要为 Agent 自己的地址注入少量资金(tab evm fund --amount 5.00 --token 0x...);这笔余额会在授权之外构成硬性上限。客户端会把签署的金额计入与 Agent 密钥放在一起的 x402-spent.json,因为 x402 网站不会记录 tab 预算。
同时支持这两种支付方式的网关,会由 tab 客户端按 tab 方式付款,因此所有者仍可保管资金,并且授权会在两端得到强制执行。
安全模型
tab 以权限受限为核心。
| 属性 | 保证 |
|---|---|
| 所有者密钥保持离线 | 所有者签署授权书。Agent 永远不会获得所有者的私钥。 |
| Agent 有明确的限制 | Agent 遭到入侵时,只会暴露其授权书授予的权限。 |
| 请求经过密码学绑定 | 凭证会绑定到确切的请求,包括查询字符串和请求体摘要。 |
| 支付无法重放 | 挑战只能使用一次,链上结算还会增加一个 nonce 边界。 |
| 网关不持有买方密钥 | 网关会验证并广播 Agent 授权的内容。它无法自行发起支付。 |
涉及支付不变量的安全问题,请通过 SECURITY.md 私下报告。
测试
tab 目前运行 282 项自动化检查,覆盖协议行为、对抗性条件、EVM 结算和公司编排器;此外还有 21 项针对仪表板的浏览器检查。
| 测试套件 | 检查项 | 覆盖范围 |
|---|---|---|
npm test | 81 | 网关、目录、MCP、收据、支付生命周期、入门额度、tab init、请求体规则、按授权书支出、目录健康状态和过期服务 |
npm run test:adversarial | 48 | 并发、重放、篡改、SSRF、持久化、请求体混淆、伪造和篡改的收据 |
npm run test:evm | 59 | 密码学、EVM 交易、Robinhood Chain、双向 x402 |
npm run test:company | 94 | 账户和信任边界、在真实网关付款的运行、凭据和已验证收据、预算、签名的董事会日志、密封的模型密钥、针对脚本化 Messages API 的 claude 适配器、通过伪造二进制运行的 claude-code |
npm run test:dashboard | 21 | 在真实浏览器中测试仪表板(Playwright,需先运行一次 npx playwright install chromium):注册、从模板中发现、添加模型密钥、领取额度、工单运行至完成、凭据和运行日志、退出;--live 还会加载公开站点和应用 |
并发测试套件会向一个 $1.00 授权书同时发起 150 个 $0.01 请求。恰好 100 个请求完成结算。
架构
┌─────────────┐
│ Owner │
└──────┬──────┘
│
signed mandate
│
▼
┌─────────────┐ ┌─────────────┐
│ Catalog │◄──────►│ Agent │
└─────────────┘ └──────┬──────┘
│
HTTP + payment
│
▼
┌─────────────┐
│ tab Gateway │
└──────┬──────┘
│
verify + authorize
│
┌─────────────┴─────────────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ API │ │ USDG │
└──────────┘ └──────────┘
仓库布局
src/ protocol, gateway, catalog, client, CLI and MCP
src/tools.ts the five tab tools, shared by the MCP server and the company's claude adapter
src/company/ the company orchestrator: store, engine, adapters, model (the Messages API loop), secrets, packet, board, server
src/evm/ EVM cryptography, transactions and JSON RPC
src/rails/ sandbox and EVM settlement rails
web/ site, catalog and the company dashboard
examples/ demos, example specifications and company templates
test/ protocol, adversarial, EVM and company tests
SPEC.md protocol specification
DEPLOY.md deployment and operations
协议
规范见 SPEC.md。
当前版本: 草案 0.6 · 线协议: tab/0,以及 x402 version 2
路线图
目前正在探索的方向:
- 计量定价和支付通道
- 窗口化链上预算
- 标头绑定和订阅
- 费用分成和 Gas 赞助
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。