arbitova について
Arbitovaは、Base上のエージェント間USDC決済向け非カストディ型エスクローとAI仲裁プロトコルです。資金はコントラクトにロックされ、納品の確認や異議申し立てができ、SDKとMCPサーバーも提供します。
主な機能
- 01オンチェーンでUSDCをロック・決済
- 02納品確認、異議申し立て、仲裁に対応
- 03納品内容のハッシュをオンチェーンに記録
- 04案件ごとの仲裁判定を公開
- 05Node.js・Python SDKとMCPサーバーを提供
活用シーン
- 01エージェント間取引の支払いをエスクロー
- 02納品が確認されない場合に異議を申し立て
- 03MCPツールでエスクローを管理・照会
MCP 対応
`@arbitova/mcp-server`は、Claude Desktop、Claude CodeなどのMCPクライアントに6種類のオンチェーンエスクローツールを提供します。署名はethers v6を通じてローカルで行われます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @arbitova/mcp-serverARBITOVA_API_KEYシークレットYour Arbitova API key. Register an agent at https://arbitova.com to get one.ARBITOVA_BASE_URLOverride the Arbitova API base URL. Defaults to production.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
47掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| service_id | string | はい | 雇用する販売者のサービス ID |
| requirements | string | いいえ | 必要な納品内容を記述した詳細な要件または JSON オブジェクト |
詳細
Arbitova
Base 上のエージェント間決済向け、非カストディ型 USDC エスクローと AI 仲裁。
2 つのエージェントが USDC をコントラクトにロックし、一方が納品すると、もう一方が確認または異議申し立てを行い、中立的な AI 仲裁者が解決します。Arbitova が資金を保管することはありません。資金を保管するのはコントラクトです。
API キー不要。登録不要。資金の保管なし。Ethereum アドレスがあなたの ID です。
- コントラクト:Base Sepolia 上の
EscrowV1、アドレス0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC— Basescan で検証済み、メインネットは監査後にローンチ予定 - 仕様:
A2A-ESCROW-RFC-v0.1 - 機械可読な記述子:
/.well-known/arbitova.json - ケースごとの判定ダッシュボード:arbitova.com/verdicts
- 統合方法:arbitova.com/integrate(生のコントラクト/リファレンス SDK/エージェントネイティブ)
- リファレンス UI(非公式、人間向け):arbitova.com/pay
- 15 分チュートリアル:
docs/tutorials/15-min-paid-agent.md
これが必要な理由
世にある A2A/エージェントコマースの仕様(MCP、Google の A2A、ERC-7683、Coinbase の Agent Commerce)は、いずれもエージェント同士の通信方法を定義しています。しかし、エージェント同士が信頼し合っていない場合に、資金をどう移動させるかを定義したものはありません。
Arbitova は、欠けていた決済基盤のプリミティブです。
- 決定論的な状態マシン。
createEscrow → markDelivered → {confirmDelivery | dispute → resolve | cancel}。隠れた分岐も、管理者による上書きもありません。 - タイムアウト後の自動リリースなし。 レビュー期間が終了すると、売り手への支払いではなく
DISPUTEDに移行します。誤った確認より、沈黙のほうが安全です。 - コンテンツハッシュをオンチェーンに固定。 買い手による確認後に、売り手が納品ファイルを差し替えることはできません。
- ケースごとの判定を透明化。 仲裁者のすべての判断は署名付き JSON blob で、その
keccak256がオンチェーンに保存されます。判定履歴全体は/verdictsで照会できます。集約も遅延もありません。
これはマーケットプレイスではありません。Arbitova アカウントも、出品手数料も、Pro プランもありません。プロトコル全体が製品です。
クイックスタート — Node.js SDK
npm install @arbitova/sdk ethers
import { Arbitova } from '@arbitova/sdk';
const buyer = await Arbitova.fromPrivateKey({ privateKey: process.env.BUYER_PK });
const { escrowId, txHash } = await buyer.createEscrow({
seller: process.env.SELLER_ADDRESS,
amount: '5.00',
deliveryHours: 24,
reviewHours: 24,
verificationURI: 'https://example.com/spec.json',
});
console.log(`Escrow #${escrowId} locked — ${buyer.explorerTx(txHash)}`);
売り手側、仲裁者側、ブラウザーウォレットとの統合については、packages/sdk-js/README.md を参照してください。
クイックスタート — Python SDK
pip install "arbitova[path_b]"
from arbitova import path_b
result = path_b.arbitova_create_escrow(
seller="0x...",
amount=5.00,
verification_uri="https://example.com/spec.json",
)
print(result)
クイックスタート — Claude/任意の MCP クライアント
{
"mcpServers": {
"arbitova": {
"command": "npx",
"args": ["-y", "@arbitova/mcp-server"],
"env": {
"ARBITOVA_RPC_URL": "https://sepolia.base.org",
"ARBITOVA_ESCROW_ADDRESS": "0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC",
"ARBITOVA_USDC_ADDRESS": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"ARBITOVA_AGENT_PRIVATE_KEY": "0x..."
}
}
}
}
6 つのツール:arbitova_create_escrow、arbitova_mark_delivered、arbitova_confirm_delivery、arbitova_dispute、arbitova_cancel_if_not_delivered、arbitova_get_escrow。すべて ethers v6 を使ってローカルで署名します。秘密鍵がプロセスの外に出ることはありません。
読み取り専用の確認モード(可観測性の確保に便利)を使う場合は、ARBITOVA_AGENT_PRIVATE_KEY を指定しないでください。
ライフサイクル
┌──────────────────┐
│ CREATED │ buyer locked USDC
└────────┬─────────┘
│
▼ seller.markDelivered()
┌──────────────────┐
│ DELIVERED │ deliveryHash on-chain
└────────┬─────────┘
│
buyer.confirmDelivery()│ │ buyer.dispute()
│ │ or seller.dispute()
▼ ▼
┌─────────────┐ ┌──────────┐
│ RELEASED │ │ DISPUTED │ waiting for arbiter
└─────────────┘ └────┬─────┘
│ arbiter.resolve(bps split + verdictHash)
▼
┌──────────┐
│ RESOLVED │
└──────────┘
図に示していない終端状態が 2 つあります。CANCELLED(納品期間の終了後に買い手が cancelIfNotDelivered を呼び出した場合)と、確認がないままレビュー期間が終了した場合に DISPUTED へ自動移行する状態です。
フレームワークリファレンスエージェント
Base Sepolia 上で実際に動作する AI 仲裁者と連携する、A2A のエンドツーエンドデモを 3 つ用意しています。
- Claude Agent SDK — インプロセス MCP ツール
- LangGraph — ReAct エージェント、買い手+売り手+仲裁者
- CrewAI — エージェント+タスク+クルー
各デモでは、実際のオンチェーントランザクションを使って、CREATED → DELIVERED → CONFIRMED(または DISPUTED → RESOLVED)の一連のフローを実行します。
パッケージ
| パッケージ | 用途 |
|---|---|
@arbitova/sdk | Node.js / ブラウザー向け SDK(ethers v6) |
arbitova | Python SDK。オンチェーンサポートを利用するには [path_b] エクストラを指定してインストールします |
@arbitova/mcp-server | Claude Desktop、Claude Code、任意の MCP クライアント向け MCP サーバー(オンチェーンツール 6 種) |
どのパッケージも同じ 6 つのエントリーポイントを提供するため、Python SDK を使うエージェントは MCP サーバーを使うエージェントと精算できます。どちらも同じコントラクトを利用しています。
手数料
| タイミング | 手数料 | 支払者 |
|---|---|---|
confirmDelivery / レビュー期間の終了による自動精算 | 0.5% | 販売者への支払額から差し引かれます |
| 仲裁人による紛争の解決 | 2% | 仲裁人の判定に従って分配されます |
手数料はコントラクト内に蓄積されます。プロトコルは手数料で運営され、サブスクリプションはありません。
ネットワーク
| ネットワーク | 状態 | コントラクト |
|---|---|---|
| Base Sepolia | 稼働中、実際の Circle USDC | 0xA8a031bcaD2f840b451c19db8e43CEAF86a088fC |
| Base mainnet | 監査およびマルチシグ仲裁人の準備待ち | TBA |
メインネットのローンチ情報は開発ログをご確認ください。
レガシー(Path A)
SDK の v2.x と MCP サーバーの v3.4.0 は、api.arbitova.com を利用するカストディアル HTTP クライアントでした。このアーキテクチャには 4 つの構造的な問題(データベースとオンチェーンの不整合、カストディアルウォレットのガス代、単一の ADMIN_KEY、単一の WALLET_ENCRYPTION_KEY による単一障害点)があり、上記で説明したノンカストディアルなオンチェーン設計の Path B に移行するため、非推奨となりました。
- SDK ユーザー向けの移行ガイド:
sdk/MIGRATION_PATH_A_TO_B.md - MCP ユーザー向けの移行ガイド:
mcp-server/MIGRATION.md
古いパッケージは npm/PyPI に残っていますが、非推奨です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。