x402dispatcher
x402dispatcher
AIエージェント向けのローカル x402 Bazaar Aggregator:Coinbase x402 Bazaar から有料APIを発見し、Model Context Protocol (MCP) ツールとしてラップし、CDP トレジャリーウォレットからマイクロペイメントを決済し、アップストリームのデータをエージェントに返します。
このリポジトリは現在 V4 です。
なぜこれが存在するのか
AIエージェントは推論とツール使用は得意ですが、APIへの支払いは苦手です。x402 プロトコルは、HTTP 402 Payment Required をプログラム可能なステーブルコインのマイクロペイメントレール(通常は USDC)に変換します。
x402dispatcher は、ソロオペレーターに優しいアグリゲーターとして中間に位置します:
アイデア | 意味 |
発見 | 公開されている Coinbase x402 Bazaar カタログをクエリする |
MCP統合 | 発見したAPIを Cursor / エージェント向けのMCPツールとして公開する |
ディスパッチ |
|
収益化 | アップストリームのコストにマイクロマークアップを適用し、スプレッドを保持する |
資金はウォレット → マーチャントと移動します。プラットフォームは購入者資金をカストディしません。
Related MCP server: JMT x402 MCP Server
ロードマップ
バージョン | ステータス | 目標 |
V1 | 完了 | 有料スタイルのフローを手動でラップ(MBTAデモ + $0.01 USDC テストネット決済) |
V2 | 完了 | Base Sepolia Bazaar API を自動発見し、実際の x402 支払いで多数をMCPツールとしてラップ |
V3 | 完了 | スマートアービトラージ:検索、価格比較、タスクに最安のAPIを選択(フェイルオーバー付き) |
V4 | 現在 | 成功率/レイテンシを追跡;エコノミー vs 検証済みルーティングティア |
V5 | 計画中 | クラウドホスト、公開レジストリ、クローラー向け |
V4 の機能
V3 のルーティングに加えて、V4 は有料コールごとの成功とレイテンシを data/api-stats.json に記録し、2つのティアを提供します:
ティア | 動作 |
| 最安優先(V3 の動作) |
| 十分な成功履歴があるAPIのみ;信頼性/レイテンシ/価格スコアでランク付け |
しきい値(環境変数):VERIFIED_MIN_SAMPLES(デフォルト 2)、VERIFIED_MIN_SUCCESS_RATE(デフォルト 0.8)。
新しいツール:get_api_stats、list_verified_apis。quote_route / route_and_call はオプションの tier を受け付けます。
V3 の機能
V2 の発見と支払いに加えて、V3 はルーターを追加します:
quote_route— Bazaar で自然言語タスクを検索し、合計価格(アップストリーム + マークアップ)で候補をランク付けし、支払いなしでプランを返すroute_and_call— 同じランク付けで、最安に支払い・呼び出し;失敗した場合は次に安いものを試す(最大max_attempts回)
すべての支出は MAX_PRICE_USD で制限されます。
V2 の機能
起動時に MCP サーバーは:
.envから認証情報を読み込むCDP Treasury 支払いウォレットを解決する
Coinbase Bazaar で Base Sepolia (
eip155:84532) の HTTP リソースをMAX_PRICE_USD以下の価格で検索/一覧表示する各一致を MCP ツールとして登録する
ヘルパーツールも登録:
search_bazaar、list_discovered_apis、call_x402_apiV1 デモツール
get_mbta_predictionsを保持する
エージェントが発見されたツール(または call_x402_api)を呼び出すと:
アップストリーム価格 + マークアップ に
MAX_PRICE_USDを適用するCdpX402Client+@x402/fetchのwrapFetchWithPaymentで実際の x402 エンドポイントに支払うマークアップスプレッドを回収する(可能な場合、Treasury → Merchant USDC 転送)
{ payment, data }をエージェントに返す
V1 の get_mbta_predictions は、固定 $0.01 USDC Base Sepolia 転送を行い、その後無料の公開 MBTA 予測データを取得します。
アーキテクチャ
Agent / Cursor
│ MCP (stdio)
▼
x402dispatcher MCP server (src/index.ts)
│
├─ Discovery → listX402DiscoveryResources / searchX402Resources (@coinbase/cdp-sdk)
├─ Payment → CdpX402Client + wrapFetchWithPayment (@coinbase/cdp-sdk/x402, @x402/fetch)
├─ Routing → economy (price) / verified (stats score) with failover
├─ Stats → data/api-stats.json success + latency history
├─ Guardrails → MAX_PRICE_USD (+ SDK spend controls)
└─ Markup → MARKUP_BPS applied; optional USDC transfer to Merchant account
│
▼
Upstream x402 HTTP API (Bazaar listing)主要パッケージ
@coinbase/cdp-sdk— ウォレット、Bazaar 発見、CdpX402Client@x402/fetch/@x402/core/@x402/evm— HTTP 402 支払いループ@modelcontextprotocol/sdk— MCP サーバー + ツールdotenv、zod、viem
要件
Node.js 19+(CDP SDK の要件;22 LTS 推奨)
Coinbase Developer Platform の認証情報:
CDP_API_KEY_IDCDP_API_KEY_SECRETCDP_WALLET_SECRET(CDP ポータル → 非カストディアルウォレット → セキュリティ の Wallet Secret — MetaMask の秘密鍵ではありません)
Treasury アドレスに Base Sepolia USDC(+ ガス用の少量の ETH)
セットアップ
git clone https://github.com/jegamboafuentes/x402dispatcher.git
cd x402dispatcher
npm install
cp .env.example .env
# edit .env with your CDP credentials環境変数
変数 | 必須 | 説明 |
| はい | CDP API キー ID |
| はい | CDP API キーシークレット |
| はい | CDP Wallet Secret(ポータルからの base64 P-256 キー) |
| 推奨 | 自動支出前のハードキャップ(例: |
| 任意 | マークアップ(ベーシスポイント、デフォルト |
| 任意 | 起動時に登録する Bazaar ツールの最大数(デフォルト |
| 任意 | Verified に必要な成功履歴の最小コール数(デフォルト |
| 任意 | Verified に必要な成功率 0〜1(デフォルト |
| 任意 | 特定の EOA を CDP にインポートする場合のみ(デフォルトの V2+ 支払いパスでは使用しない) |
.env をコミットしないでください。追跡されるのは .env.example のみです。
トレジャリーに資金を供給
npx tsx -e "import 'dotenv/config'; import { CdpX402Client } from '@coinbase/cdp-sdk/x402'; const c = new CdpX402Client({ environment: 'development', walletConfig: { type: 'eoa', accountName: 'Treasury' } }); console.log(await c.getAddresses());"表示された evmAddress に Base Sepolia USDC(および少量の ETH)を送信します。
実行
MCP サーバー(stdio)
npm startCursor MCP 設定
プロジェクトファイル:.cursor/mcp.json(同梱済み)。Cursor は以下を起動するはずです:
{
"mcpServers": {
"x402dispatcher": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "${workspaceFolder}"
}
}
}クローン/インストール後に Cursor で MCP をリロードします。お使いの Cursor ビルドで ${workspaceFolder} が展開されない場合は、cwd をこのリポジトリの絶対パスに設定し、必要に応じて command を Node 22 バイナリに指定します。
MCP ツール
コア
ツール | 目的 |
| 一致する API をランク付け; |
| ティアに最適なものを支払い/呼び出し;フェイルオーバー;統計を記録 |
| V4 — ローカルの成功/レイテンシ履歴 |
| V4 — 現在 Verified として認定される API |
|
|
| 現在キャッシュ/登録されている API を一覧表示 |
|
|
| V1 デモ:$0.01 USDC 決済 + ライブ MBTA 予測 |
動的ツール
起動時に、x402dispatcher は発見された Bazaar リソースごとに 1 つの MCP ツールも登録します(x402_<host>_<path>_<n> のような名前)。それぞれがオプションの query / body を受け付け、アップストリーム URL に支払います。
テスト
V4 エンドツーエンド(推奨)
2 つのエコノミー天気コールをシードし、勝者を Verified に昇格させ、tier=verified でクォート/ルーティングします:
npm run test:v4期待:V4 SMOKE TEST PASSED
以前のバージョン
npm run test:v3
npm run test:v2Cursor での手動チェック
x402dispatcherMCP サーバーをリロードエコノミールーティングで天気を数回尋ねる(統計を構築)
「List verified APIs」/「Get API stats」と尋ねる
「Use the verified tier to get weather for Boston」と尋ねる
chosen.verifiedが true で、data/api-stats.jsonが増えたことを確認
ガードレールチェック
MAX_PRICE_USD をリストの合計より低く設定し、クォート/ルートが拒否するか、候補がゼロになることを確認します。
プロジェクト構成
x402dispatcher/
├── src/
│ ├── index.ts # MCP server, tool registration
│ ├── discovery.ts # Bazaar list/search → DiscoveredApi
│ ├── payment.ts # CdpX402Client, markup, MBTA settle
│ ├── routing.ts # quote + economy/verified route + failover
│ ├── stats.ts # V4 local success/latency store
│ └── config.ts # MAX_PRICE_USD, MARKUP_BPS, verified thresholds
├── scripts/
│ ├── v4-smoke-test.ts
│ ├── v3-smoke-test.ts
│ ├── v2-smoke-test.ts
│ ├── mcp-test.ts
│ └── smoke-test.ts
├── data/ # local api-stats.json (gitignored)
├── .cursor/
│ ├── mcp.json
│ └── rules/ # security + x402-stack agent rules
├── AGENTS.md # product / roadmap context for agents
├── .env.example
└── package.jsonセキュリティメモ
ウォレット認証情報は
.envからのみ読み込まれます — シークレットをハードコードしないでください。自動支出はすべて、署名前に
MAX_PRICE_USDで制限されます。V2 は CDP x402 支出制御(
maxAmountPerPayment+ Base Sepolia ネットワーク許可リスト)も設定します。Bazaar はカタログとして扱い、推奨とはみなさないでください。まずテストネットで少額の上限を好みます。
CDP_WALLET_SECRETはポータルの Wallet Secret(長い base64)でなければならず、MetaMask の hex キーではありません。
スタックリファレンス
ライセンス
ISC
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityDmaintenanceMCP server bringing 100+ x402-paid APIs to AI agents (Claude, Cursor, MCP-aware clients). Auto-discovers tools from CDP Bazaar; handles USDC micropayments on Base.100601MIT
- AlicenseBqualityCmaintenanceExposes 25 paid API endpoints as MCP tools for AI agents, with payments in USDC on Base mainnet via the x402 protocol, enabling tasks like web search, company intelligence, and crypto research.2568MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, query, and pay for HTTP endpoints and MCP tools using Stellar USDC/SEP-41 stablecoins through a federated P2P bazaar catalog and x402 payment facilitator.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, call, and pay for existing HTTP APIs over MCP with x402 paywalls, non-custodial settlement, and no code changes to the backend.3449Apache 2.0
Related MCP Connectors
Agent x402 Paywall MCP — Coinbase HTTP 402 protocol + on-chain settlement. Agents pay per-call
Agent Commerce Protocol MCP — bridges Stripe ACP + Google AP2 + Coinbase x402 for agent payments
Metered MCP tools: free discovery over MCP; per-call execution settled in USDC via x402 v2.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jegamboafuentes/x402dispatcher'
If you have feedback or need assistance with the MCP directory API, please join our Discord server