tab

io.github.paidwithtab由 GitHub 账号 paidwithtab 发布v3.0.0更新于 Nov 3, 2026

代理通过 HTTP 402 和 x402 按调用付费:8,600+ 个 API 路由,带签名的预算和收据。

AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。

原文描述

Agents pay per call over HTTP 402 and x402: 8,600+ API routes, signed budgets and receipts.

概览

tab 的本地 MCP 服务;无需登录;STDIO。

暂无 AI 概览:以下信息来自注册中心条目和服务本身。

安装

在 SourceWeft 中

  1. 打开 控制台中的 tab,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[tab]

Payments for software agents.

Give an agent a wallet with rules, instead of giving it your wallet.

[Spec draft 0.6] [Wire protocol tab/0] [Node 22.13+] [289 automated checks] [USDG settlement] [MIT license]

Quickstart · Run a company · For agents · For sellers · Protocol · Deployment · @paidwithtab


Contents

What is tab · Why tab · Mandates · New in 3.0 · How a payment works · Quickstart · For API providers · For agent developers · Companies · Settlement · x402 · Security model · Testing · Architecture · Roadmap


What is tab

tab is an open payment protocol for software agents.

It lets an agent discover a paid HTTP service, receive a price, authorize the purchase against rules set by its owner, pay, and receive the result. No human has to create an account, enter a card, or copy an API key.

Owners define those rules once, in a signed mandate:

ConstraintPurpose
Total budgetCaps lifetime spend
Maximum price per requestBlocks a single expensive call
Allowed sellersRestricts where money can go
Spending windowResets the budget each UTC day, or keeps one lifetime total
ExpirationEnds the authority automatically

The owner signs once. The agent then transacts on its own, and it cannot exceed what the owner authorized.

text
Owner  │  │ signs mandate  ▼Agent  │  │ HTTP request  ▼Gateway ────────► API  │  │ verifies mandate  │ enforces budget  │ settles payment  ▼USDG

Why tab

Software agents can already call APIs and use tools. Paying for those services is the part that still requires a person.

Today a human creates an account, enters payment information, generates an API key, configures billing, and hands credentials to the agent. tab replaces all of that with an HTTP payment.

Without tabWith tab
http
Agent calls API
HTTP/1.1 402 Payment Required

Account signup, card on file, API key handoff, billing setup.

http
Agent pays through tab
HTTP/1.1 200 OKTab-Receipt: evm:0x...

No account. No card details. No shared owner key. No unrestricted wallet.

Mandates

A mandate is a signed spending authorization from an owner to an agent.

FieldExample
Agent7f2c...
Budget$25.00
Maximum per call$0.05
Allowed sellersapi.example.com
Expires2026-10-01

The owner key never has to be online while the agent is working. Every payment is checked independently by the seller's gateway against the signed mandate, so changing the agent's prompt cannot increase its authority.

New in 3.0

Five things an owner can do after the mandate is signed, all optional, all backward compatible with 2.x mandates, clients and receipts.

FeatureWhat it doesFrom the CLI
Instant revokeThe owner signs a revocation; gateways refuse the mandate, and every sub-mandate under it, within seconds. Gateways pass revocations to each other.tab mandate revoke --key owner.json --mandate m.json --gateway https://pay.example.com
Sub-mandatesAn agent hands a narrower slice of its mandate to another agent key. Every limit stays inside the parent's, spend counts against every level, chains stop at three delegations.tab mandate delegate --agent-key agent.json --mandate m.json --to helper.json --budget 0.25
Approval above a thresholdapprove_above on the mandate: a bigger payment waits for a fresh approval the owner signs for exactly that call. The agent retries and it pays once.tab mandate issue ... --approve-above 0.50, then tab mandate approve --owner owner.json --request req.json --gateway ...
Pay on deliveryOn routes that offer it, the buyer's payment is held until the seller delivers a result, then released with a receipt that binds the request to the result. Undelivered by the deadline, it comes back.tab fetch --escrow --wait 300 -X POST -d '{...}' https://pay.example.com/jobs/essay
Payment channelsOne deposit, then a signed voucher per call with no transaction per call, settled once at close. Metered routes charge per token, second or unit, a fraction of a cent at a time.tab channel open --gateway https://pay.example.com --deposit 1.00, then tab fetch --channel ...

In tab OS each one has a home: a Revoke button on runs and agents, delegated budgets on a manager's card, payment approvals in the Inbox (with a thumb sized Approve on a phone), orders paid on delivery in Receipts, and channels in the Wallet. SPEC.md sections 2.1, 2.2, 5.4, 5.5 and 5.6 are the wire format.

How a payment works

tab uses standard HTTP payment semantics. A priced endpoint answers with 402 Payment Required and a signed challenge describing the purchase. The agent checks the price against its mandate and signs a credential bound to that exact request.

The gateway then runs the full lifecycle:

StepAction
1Verify the challenge
2Verify the mandate
3Verify the agent
4Verify the exact request
5Reserve the budget
6Call the upstream service
7Settle only after a successful response
8Return a signed receipt

If the upstream service fails, the payment is voided.

The receipt is signed by a key the gateway publishes, and it binds the whole purchase together: the mandate that allowed it, the exact request the agent signed, a hash of the response body that came back, the seller, and the payment (on Robinhood Chain, the transaction hash). So a receipt proves what was bought, not just that money moved. The client checks it against the bytes it received, and any edit breaks it.

Quickstart

Requires Node.js 22.13 or newer.

Give an agent a tab in one command:

sh
npx paidwithtab init

This creates an owner key and an agent key in ~/.tab, signs a mandate ($1.00 per day, $0.05 per call, 90 days), and claims $1.00 of starter credits on the public gateway at pay.paidwithtab.com. Nothing to fund, no chain, no API keys.

Those credits buy real things: 8,638 routes across 484 services, from web search, translation and speech to text to block explorers for 42 chains, market data from 20 exchanges, Wikipedia in 48 languages, SEC filings, US Treasury data, genomes, proteins and chemistry, package registries, RDAP and DNS, weather and space weather, between $0.001 and $0.02 a call. The full list with prices is in the quickstart.

1. Pay for something from the shell.

sh
npx paidwithtab fetch "https://pay.paidwithtab.com/wikipedia/api/rest_v1/page/summary/Lisbon"
paid 0.001 (ledger:cpKKYHocOLKlDW8n){"type":"standard","title":"Lisbon", ...}

2. Let Claude Code spend.

sh
claude mcp add --scope user tab -- npx -y paidwithtab mcp

Then ask Claude for something it needs to pay for, for example "find the weather in Lisbon through tab". It searches the catalog at paidwithtab.com/catalog, pays per request, and can never exceed the mandate.

3. See a price tag.

sh
curl -i https://pay.paidwithtab.com/fx/latest?base=USD
http
HTTP/1.1 402 Payment RequiredWWW-Authenticate: Tab challenge="eyJ2ZXIiOiJ0YWIvMCIs..."

The starter credits are sandbox money on that one gateway. For real money, fund an agent with USDG on Robinhood Chain: docs/buyers.md.

Want the whole stack on your machine? git clone https://github.com/paidwithtab/tab && cd tab && npm install && npm run demo starts a paid API, a gateway, a catalog and a local wallet. Full walkthrough

For API providers

Any HTTP API becomes payable with a small JSON specification. Leave out rail to run on sandbox balances while you develop.

json
{  "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" }  ]}

Start the gateway:

sh
tab serve \  --spec spec.json \  --announce https://paidwithtab.com

The gateway handles payment negotiation, authorization, settlement, receipts, and proxying. Your application keeps serving normal HTTP.

Read the seller documentation

For agent developers

1. Create an agent key.

sh
tab key new --out agent.json

2. Issue it a mandate.

sh
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. Spend within those limits.

ts
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 }

Or skip the key handling: npx paidwithtab init does all three steps and claims starter credits on the public gateway.

tab also exposes five MCP tools, so compatible agents can discover and purchase services without ever receiving the owner's private key:

ToolPurpose
tab_searchFind services in a catalog
tab_discoverInspect a service and its pricing
tab_fetchMake a paid request
tab_balanceCheck remaining budget
tab_limitsRead the active mandate constraints

Read the buyer documentation

Hooking tab into a particular agent, with the MCP JSON for Cursor, Codex, Windsurf and Claude Desktop, framework tools, Python by subprocess, and where keys live in production: docs/agents.md

Companies

tab 2.2 runs a company of agents on top of the payment layer: tab company and the dashboard at app.paidwithtab.com. A company has a mission, a budget, agents with roles, and tickets. An agent is Claude, running on the Anthropic API key you add to the company with the five tab tools and nothing else, or any HTTP endpoint you point at (a self-hosted server can also run Claude Code). The difference from a plain agent orchestrator is where the money lives:

  • Every run gets its own mandate, signed by the company's owner key and capped at the smallest of the company's remaining budget, the agent's per-run budget and the ticket's cap. The gateway enforces it; the agent cannot exceed it.
  • What a run spent is what the gateways booked against that mandate, attributed to the run, the ticket and the company, receipt by receipt. Model cost is booked too. The company warns at 80 percent and pauses at 100.
  • Nothing closes without evidence: a receipt id, a URL, a file, the literal output. "Done" without it goes to review.
  • Hire, budget, approve, pause and publish are board actions signed with the owner key and verified on every read. Export the key and sign them offline.
  • A company can earn: publish the gateway it sells through and its receipts show up as earnings.

The first run takes under a minute and needs no key: sign up and press Start, or run tab company quickstart. A starter agent pays $0.002 for two Wikipedia lookups and hands back the answer with both signed receipts.

sh
tab company serve --host app.example.com          # one process, SQLite, no dependenciestab company signup --email [email protected] --password ...tab company quickstart                            # a $1 company; its starter agent pays and answers at oncetab company new --template examples/companies/research.jsontab company model-key --key sk-ant-...            # your Anthropic key, sealed at rest; your agents run on ittab company fund && tab company status

docs/company.md has the packet an agent receives, the result it must return, the adapters, the board log and the server's trust boundary.

Settlement

tab settles in USDG on Robinhood Chain mainnet and test USDC on its testnet, or in any ERC-20 a gateway chooses to charge in (its prices, challenges and receipts then name that token in currency), following a delivery first model. The gateway does not settle a payment until the upstream service has responded successfully.

text
authorize    │    ▼reserve    │    ▼call API    │    ├── failure ──► void    │    ▼success    │    ▼settle    │    ▼receipt

x402

tab speaks x402, the HTTP 402 payment standard that Coinbase started and Cloudflare, Visa and Mastercard build on, in both directions.

x402 buyers can pay a tab gateway. On the evm rail, every 402 carries x402 requirements (a PAYMENT-REQUIRED header) next to tab's own challenge. An x402 client signs an EIP-3009 transfer of exactly the price to the seller, sends it as PAYMENT-SIGNATURE, and gets the response with PAYMENT-RESPONSE and a signed tab receipt. The gateway checks the signature, the amount, the recipient and the time window, dry-runs the transfer, calls the upstream, and only then settles the transfer on chain from a small gas wallet of its own (--x402-settler). If it does not settle, the response is withheld. The public mainnet gateway takes x402 payments in USDG on Robinhood Chain (eip155:4663) today, so all of its routes are open to any x402 agent with no tab software at all.

tab agents can pay x402 sites. When a site answers 402 with only x402 requirements, the tab client pays it within the owner's mandate: realm (the site's hostname), per-call cap, budget and expiry, in a token it knows (USDG on Robinhood Chain, USDC on Base). x402 has the payer sign the transfer itself, so the owner funds the agent's own address with a small amount (tab evm fund --amount 5.00 --token 0x...), and that balance is a hard ceiling on top of the mandate. The client counts what it signs against the mandate in x402-spent.json next to the agent's keys, since an x402 site keeps no tab budget.

A gateway that speaks both is paid the tab way by a tab client, so owners keep custody and the mandate is enforced on both sides.

Security model

tab is built around bounded authority.

PropertyGuarantee
Owner keys stay offlineThe owner signs the mandate. The agent never receives the owner's private key.
Agents have explicit limitsCompromising an agent exposes only the authority its mandate granted.
Requests are cryptographically boundCredentials commit to the exact request, including query string and body digest.
Payments cannot be replayedChallenges are single use, and chain settlement adds a nonce boundary.
Gateways hold no buyer keysThe gateway verifies and broadcasts what the agent authorized. It cannot create payments on its own.

Security issues involving payment invariants should be reported privately through SECURITY.md.

Testing

tab currently runs 475 automated checks across protocol behavior, the 3.0 features, adversarial conditions, EVM settlement and the company orchestrator, plus 40 browser checks of the dashboard and 20 checks of the channel contract on a real EVM.

SuiteChecksCoverage
npm test90Gateway and its home page, catalog, MCP, receipts, payment lifecycle, starter credits, tab init, body rules, spend by mandate, catalog health and stale serving, amounts in a token gateway's own currency
npm run test:v3103Revoke and gateways sharing revocations, sub-mandates and their limits, approval above a threshold, pay on delivery, payment channels and metered routes, the 3.0 MCP tools and CLI
npm run test:adversarial58Concurrency, replay, mutation, SSRF, persistence, body smuggling, forged and tampered receipts, voucher floods against one deposit, sibling sub-mandates racing one budget
npm run test:evm91Cryptography, EVM transactions, Robinhood Chain, x402 both ways, the testnet faucet, escrow and channels through an escrow address
npm run test:company133Accounts and the trust boundary, runs that pay at a real gateway, evidence and verified receipts, budgets, hire requests with model and per call cap, the signed board log, sealed model keys, the claude adapter against a scripted Messages API, claude-code through a fake binary, payment approvals, revoke, delegated budgets, orders and channels
npm run test:dashboard40tab OS in a real browser (Playwright, npx playwright install chromium once): sign up, the quickstart's starter agent paying and answering, found from a template, add a model key, claim credits, a ticket runs to done, evidence and run log, a payment approved at phone width, a revoked run, a channel opened and settled, an order released, log out; --live also loads the public site and app
npm run test:contract20contracts/TabChannel.sol on a real EVM (needs GANACHE): open, cumulative vouchers, payee close, replay, forged and oversized vouchers, unilateral close and the dispute window, deployment from the CLI

The concurrency suite fires 150 simultaneous $0.01 requests at a $1.00 mandate. Exactly 100 settle.

Architecture

text
                        ┌─────────────┐                        │    Owner    │                        └──────┬──────┘                               │                         signed mandate                               │                               ▼┌─────────────┐        ┌─────────────┐│   Catalog   │◄──────►│    Agent    │└─────────────┘        └──────┬──────┘                              │                         HTTP + payment                              │                              ▼                       ┌─────────────┐                       │ tab Gateway │                       └──────┬──────┘                              │                     verify + authorize                              │                ┌─────────────┴─────────────┐                ▼                           ▼          ┌──────────┐                ┌──────────┐          │   API    │                │   USDG   │          └──────────┘                └──────────┘
Repository layout
text
src/          protocol, gateway, catalog, client, CLI and MCPsrc/tools.ts  the five tab tools, shared by the MCP server and the company's claude adaptersrc/company/  the company orchestrator: store, engine, adapters, model (the Messages API loop), secrets, packet, board, serversrc/evm/      EVM cryptography, transactions and JSON RPCsrc/rails/    sandbox and EVM settlement railsweb/          site, catalog and the company dashboardexamples/     demos, example specifications and company templatestest/         protocol, adversarial, EVM and company tests
SPEC.md       protocol specificationDEPLOY.md     deployment and operations

Protocol

The specification lives in SPEC.md.

Current version: Draft 0.7 · Wire protocol: tab/0, and x402 version 2

Roadmap

Areas currently under exploration:

  • Gateways settling channels through the TabChannel contract
  • Windowed onchain budgets
  • Header binding and subscriptions
  • Fee splits and gas sponsorship

License

MIT. See LICENSE.

Protocol · Buyers · Agents · Sellers · Deploy · Security · @paidwithtab

来源:README.md,提交 156c73f

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

2
  1. v3.0.0最新Nov 3, 2026
  2. v2.3.1Oct 23, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分