tab について
tabは、ソフトウェアエージェントが所有者のルールに沿って有料HTTPサービスを購入するためのオープンな決済プロトコルです。署名付きのmandateで予算、1回あたりの価格、販売者を制限し、MCPツールからサービスの検索と購入を行えます。
主な機能
- 01署名付きmandateによる支出制限
- 02HTTP 402リクエストの支払い
- 03リクエストの検証とレシート発行
- 04x402決済標準への対応
- 05サービスカタログとMCPツール
活用シーン
- 01予算内でエージェントに有料APIを呼び出させる
- 02HTTP APIに決済ゲートウェイを追加する
- 03MCP経由でサービスを検索・購入する
MCP 対応
互換エージェントがサービス検索、価格確認、有料リクエスト、残高確認、mandate制限の確認を行うための5つのMCPツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ソフトウェアエージェントのための決済。
自分のウォレットを渡すのではなく、ルールを設定したウォレットをエージェントに渡しましょう。
クイックスタート · 会社を運営する · エージェント向け · 販売者向け · プロトコル · デプロイ · @paidwithtab
目次
tab とは · tab を使う理由 · マンダート · 決済の仕組み · クイックスタート · API プロバイダー向け · エージェント開発者向け · 会社 · 決済 · x402 · セキュリティモデル · テスト · アーキテクチャ · ロードマップ
tab とは
tab は、ソフトウェアエージェント向けのオープンな決済プロトコルです。
エージェントは、有料の HTTP サービスを見つけ、価格を受け取り、所有者が設定したルールに基づいて購入を承認し、支払いを行い、結果を受け取ることができます。人間がアカウントを作成したり、カード情報を入力したり、API キーをコピーしたりする必要はありません。
所有者は、署名付きのマンダートでルールを一度だけ定義します。
| 制約 | 目的 |
|---|---|
| 総予算 | 生涯の支出に上限を設けます |
| リクエストごとの最大価格 | 1 回の高額な呼び出しを防ぎます |
| 許可する販売者 | 資金の送金先を制限します |
| 支出期間 | UTC の日ごとに予算をリセットするか、生涯の合計額を維持します |
| 有効期限 | 権限を自動的に終了します |
所有者が署名するのは一度だけです。その後、エージェントは自律的に取引を行い、所有者が許可した範囲を超えることはできません。
Owner
│
│ signs mandate
▼
Agent
│
│ HTTP request
▼
Gateway ────────► API
│
│ verifies mandate
│ enforces budget
│ settles payment
▼
USDG
tab を使う理由
ソフトウェアエージェントはすでに API を呼び出し、ツールを利用できます。しかし、こうしたサービスへの支払いには、依然として人間が必要です。
現在は、人間がアカウントを作成し、支払い情報を入力し、API キーを生成して、請求を設定し、認証情報をエージェントに渡しています。tab はこれらすべてを HTTP 決済に置き換えます。
| tab を使わない場合 | tab を使う場合 |
|---|---|
アカウント登録、カード情報の登録、API キーの受け渡し、請求設定。 |
アカウント不要。カード情報不要。所有者のキー共有不要。無制限のウォレットも不要。 |
マンダート
マンダートとは、所有者からエージェントへの、署名付きの支出承認です。
| フィールド | 例 |
|---|---|
| エージェント | 7f2c... |
| 予算 | $25.00 |
| 呼び出しごとの上限 | $0.05 |
| 許可する販売者 | api.example.com |
| 有効期限 | 2026-10-01 |
エージェントの作業中、所有者のキーをオンラインにしておく必要はありません。支払いはすべて、販売者のゲートウェイが署名付きマンダートに照らして個別に検証するため、エージェントのプロンプトを変更しても権限が拡大することはありません。
支払いの仕組み
tab は標準的な HTTP の支払いセマンティクスを使用します。料金が設定されたエンドポイントは 402 Payment Required を返し、購入内容を説明する署名済みのチャレンジを提示します。エージェントは価格が自身の委任条件に合致することを確認し、そのリクエストに厳密に紐づいたクレデンシャルに署名します。
その後、ゲートウェイがライフサイクル全体を処理します。
| 手順 | アクション |
|---|---|
| 1 | チャレンジを検証する |
| 2 | 委任条件を検証する |
| 3 | エージェントを検証する |
| 4 | リクエストが厳密に一致することを検証する |
| 5 | 予算を確保する |
| 6 | アップストリームサービスを呼び出す |
| 7 | レスポンスが成功した後にのみ決済する |
| 8 | 署名済みのレシートを返す |
アップストリームサービスが失敗した場合、支払いは無効になります。
レシートには、ゲートウェイが公開する鍵で署名します。レシートは、購入全体をひとつに紐づけます。つまり、購入を許可した委任条件、エージェントが署名した正確なリクエスト、返されたレスポンスボディのハッシュ、販売者、そして支払い(Robinhood Chain ではトランザクションハッシュ)です。そのためレシートは、単に資金が移動したことではなく、何が購入されたかを証明します。クライアントは受信したバイト列と照合し、少しでも変更があると検証に失敗します。
クイックスタート
Node.js 22.13 以降が必要です。
1 つのコマンドで、エージェントに tab を用意できます。
npx paidwithtab init
このコマンドは ~/.tab に所有者鍵とエージェント鍵を作成し、委任条件(1 日あたり $1.00、1 回の呼び出しあたり $0.05、90 日間)に署名して、pay.paidwithtab.com の公開ゲートウェイで $1.00 分のスタータークレジットを請求します。資金の入金も、チェーンも、API キーも必要ありません。
このクレジットで実際のサービスを利用できます。ウェブ検索、翻訳、音声テキスト変換から 42 のチェーンに対応するブロックエクスプローラーまで、484 のサービスにある 8,638 のルートを利用できます。さらに、20 の取引所のマーケットデータ、48 言語版の Wikipedia、SEC 提出書類、米国財務省のデータ、ゲノム、タンパク質、化学、パッケージレジストリ、RDAP と DNS、気象と宇宙天気も利用でき、料金は 1 回あたり $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 を使ってリスボンの天気を調べて」のように、支払いが必要なことを頼んでください。Claude は 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 で 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 サービスを提供し続けます。
エージェント開発者向け
1. エージェント鍵を作成します。
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 を実行してください。上記 3 つの手順をすべて行い、公開ゲートウェイでスタータークレジットを請求します。
tab は 5 つの MCP ツールも公開しているため、対応するエージェントは所有者の秘密鍵を受け取ることなく、サービスを見つけて購入できます。
| ツール | 用途 |
|---|---|
tab_search | カタログでサービスを検索する |
tab_discover | サービスと料金を確認する |
tab_fetch | 有料リクエストを実行する |
tab_balance | 残りの予算を確認する |
tab_limits | 有効な委任条件の制約を読み取る |
特定のエージェントへの tab の接続方法については、Cursor、Codex、Windsurf、Claude Desktop 用の MCP JSON、フレームワークツール、サブプロセス経由での Python の使用方法、本番環境での鍵の保管場所を含む docs/agents.md をご覧ください。
企業
tab 2.2 は決済レイヤー上でエージェントの企業を運営します。tab company と、app.paidwithtab.com のダッシュボードを利用します。企業にはミッション、予算、役割を持つエージェント、チケットがあります。エージェントは Claude で、企業に追加した Anthropic API キーと 5 つの tab ツールだけで動作するか、指定した任意の HTTP エンドポイントで動作します(セルフホストサーバーで Claude Code を実行することもできます)。一般的なエージェントオーケストレーターとの違いは、資金の管理方法にあります。
- 実行ごとに、企業のオーナーキーで署名された個別の指示書が発行されます。上限額は、企業の残予算、エージェントの実行ごとの予算、チケットの上限額のうち最も小さい額です。ゲートウェイがこれを強制するため、エージェントが上限を超えることはできません。
- 実行で使用した金額は、レシートごとに、その実行、チケット、企業に紐づけて、ゲートウェイが指示書に対して計上します。モデルの費用も計上されます。企業は予算の 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 には、エージェントが受け取るパケット、返す必要のある結果、アダプター、ボードログ、サーバーの信頼境界が記載されています。
決済
tab は、デリバリーを先に行うモデルに従い、Robinhood Chain メインネットでは USDG、テストネットではテスト用 USDC で決済します。また、ゲートウェイが請求通貨として選択した任意の ERC-20 でも決済できます。この場合、価格、チャレンジ、レシートの currency にそのトークンが指定されます。上流サービスが正常に応答するまで、ゲートウェイは決済を実行しません。
authorize
│
▼
reserve
│
▼
call API
│
├── failure ──► void
│
▼
success
│
▼
settle
│
▼
receipt
x402
tab は、Coinbase が開始し、Cloudflare、Visa、Mastercard が採用する HTTP 402 決済標準の x402 に、双方向で対応しています。
x402 の購入者は tab ゲートウェイに支払えます。 evm レールでは、すべての 402 応答に、tab 独自のチャレンジとともに x402 の要件(PAYMENT-REQUIRED ヘッダー)が含まれます。x402 クライアントは、販売者に価格と同額を送金する EIP-3009 トランスファーに署名し、PAYMENT-SIGNATURE として送信します。すると、PAYMENT-RESPONSE と署名済みの tab レシートを含む応答が返されます。ゲートウェイは署名、金額、受取人、時間枠を検証し、トランスファーをドライランして上流サービスを呼び出した後、独自の少額のガスウォレット(--x402-settler)からオンチェーンでトランスファーを決済します。決済されない場合、応答は返されません。現在、公開メインネットゲートウェイは Robinhood Chain(eip155:4663)上の USDG で x402 決済を受け付けているため、tab のソフトウェアを一切使わない x402 エージェントにも、すべてのルートが開放されています。
tab エージェントは x402 サイトに支払えます。 サイトが x402 の要件だけを含む 402 応答を返した場合、tab クライアントはオーナーの指示書の範囲内で支払います。対象範囲(サイトのホスト名)、呼び出しごとの上限額、予算、期限が適用され、クライアントが対応するトークン(Robinhood Chain 上の USDG、Base 上の USDC)が使われます。x402 では支払者自身がトランスファーに署名するため、オーナーはエージェント自身のアドレスに少額を入金します(tab evm fund --amount 5.00 --token 0x...)。この残高は、指示書に加えて適用される厳格な上限になります。x402 サイトは tab の予算を管理しないため、クライアントは署名した金額をエージェントのキーの隣にある x402-spent.json で指示書に対して記録します。
両方に対応するゲートウェイには、tab クライアントが tab の方式で支払うため、オーナーは資金の管理権を保持でき、両側で指示書が強制されます。
セキュリティモデル
tab は、権限を限定する設計を基盤としています。
| 特性 | 保証 |
|---|---|
| オーナーキーはオフラインで保管 | オーナーが委任内容に署名します。エージェントがオーナーの秘密鍵を受け取ることはありません。 |
| エージェントには明示的な制限があります | エージェントが侵害されても、漏えいするのは委任内容で付与された権限だけです。 |
| リクエストは暗号学的に紐付けられます | 認証情報は、クエリ文字列や本文ダイジェストを含む、正確なリクエストを確定します。 |
| 支払いはリプレイできません | チャレンジは一度だけ使用でき、チェーン上の決済ではノンスによる境界が加わります。 |
| ゲートウェイは購入者のキーを保持しません | ゲートウェイは、エージェントが承認した内容を検証してブロードキャストします。独自に支払いを作成することはできません。 |
支払いに関する不変条件に関わるセキュリティ上の問題は、SECURITY.md を通じて非公開で報告してください。
テスト
tab では現在、プロトコルの動作、敵対的な条件、EVM 決済、company オーケストレーターを対象とする 282 件の自動チェックに加え、ダッシュボードの 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 ドルの委任内容に対して、0.01 ドルのリクエストを 150 件同時に送信します。決済されるのは正確に 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 にあります。
現在のバージョン: Draft 0.6 · ワイヤープロトコル: tab/0、および x402 バージョン 2
ロードマップ
現在検討中の分野:
- 従量制料金と決済チャネル
- オンチェーン予算の期間制限
- ヘッダーの紐付けとサブスクリプション
- 手数料の分配とガス代のスポンサー提供
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。