three.ws Agent Payments について
@three-ws/agentcore-payments-mcp は、three.ws エージェント支払いセッション向けの MCP サーバーです。秘密鍵を持たせずに、予算・許可リスト・1 取引あたりの上限の範囲内でエージェントが x402 有料エンドポイントを呼び出せます。セッションは three.ws のクレジットから一度資金を入れ、支出はサーバー側で強制されます。
主な機能
- 01クレジットから資金を入れる予算付き支払いセッション
- 02ホストの許可リストと 1 取引あたりの上限
- 03セッショントークンによる x402 エンドポイントへの支払い
- 04セッションの残高、状態、支払い履歴の確認
- 05セッションのキャンセルと未使用予算の返金
活用シーン
- 01リサーチ用エージェントのデータ購入予算を固定
- 02エージェントの支払い先を承認済みホストに限定
- 03セッションの期限切れ・キャンセル時に残額を回収
MCP 対応
このプロジェクトは MCP サーバーであり、支払いセッションの作成、支払い、確認、一覧表示、キャンセルのツールを MCP クライアントに公開します。署名はプラットフォームのウォレットが行い、エージェントはウォレットを保持しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @three-ws/agentcore-payments-mcpTHREE_WS_SESSIONシークレットYour three.ws session token (value of the `__Host-sid` cookie from a signed-in browser). Required for account management operations: create_payment_session, list_payment_sessions, check_payment_session, cancel_payment_session.PAYMENT_SESSION_TOKENシークレットA payment session bearer token (starts with 'pss_') from create_payment_session. Used by the agent for pay_with_session calls when no inline token is passed. Treat like a spending card — it authorizes payments up to the session's budget.THREE_WS_BASEBase URL of the three.ws API. Override only when self-hosting or targeting a preview deployment.THREE_WS_TIMEOUT_MSPer-request HTTP timeout in milliseconds. x402 payments involve on-chain settlement so this should be generous (default: 30000).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| label | string | いいえ | このセッションの人が読めるラベル(例:"Research run #4")。 |
| network | string | いいえ | x402 決済の決済ネットワーク。Solana USDC のみ。 |
| agent_id | string | いいえ | 任意:このセッショントークンを特定のエージェント ID UUID に制限します。 |
| metadata | object | いいえ | 任意:記録管理用にこのセッションに添付する任意のメタデータ。 |
| budget_usd | number | はい | このセッションに割り当てる USD の総予算(クレジットから差し引かれます)。最小 $0.001、最大 $1000。 |
| allowed_hosts | array | いいえ | 設定した場合、これらのホスト上のエンドポイントへの支払いのみを許可します(例:["api.weather.com"])。空の場合はすべてのホストが対象です。 |
| expiry_seconds | integer | いいえ | セッションの有効期間(秒)。期限切れ後は支払いが拒否されます。デフォルト:3600(1 時間)。 |
| max_per_tx_usd | number | いいえ | 任意の 1 回あたりの支払い上限(USD)。この金額を超える支払いは、資金移動前に拒否されます。 |
詳細
@three-ws/agentcore-payments-mcp
three.ws Agent Payment Sessions 用の MCP サーバーです。秘密鍵を公開せずに、エージェントの x402 支出を管理します。
コンセプト
エージェントはウォレットを保持しません。支出を提案します。ガバナンスがポリシーを適用します。
Payment Session は、three.ws クレジットから一度だけ入金する予算枠です。セッションのベアラートークンをエージェントに渡すと、エージェントはこのサーバー経由で有料の x402 エンドポイントを呼び出します。すべてのトランザクションには、プラットフォームのウォレットが署名します。セッションの許可リスト、1 トランザクションあたりの上限額、合計予算はサーバー上でアトミックに適用されるため、エージェントが予算を超過することはありません。
クイックスタート
# Configure
export THREE_WS_SESSION="<the value of your __Host-sid cookie>"
export PAYMENT_SESSION_TOKEN="pss_<session-id>_<random>"
# Run
npx @three-ws/agentcore-payments-mcp
MCP クライアントの設定(~/.cursor/mcp.json、Claude Desktop など):
{
"mcpServers": {
"three-ws-payments": {
"command": "npx",
"args": ["-y", "@three-ws/agentcore-payments-mcp"],
"env": {
"THREE_WS_SESSION": "<the value of your __Host-sid cookie>",
"PAYMENT_SESSION_TOKEN": "pss_..."
}
}
}
}
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
THREE_WS_SESSION | セッション管理ツールで必要 | セッションの作成/一覧表示/キャンセルに使用する、ブラウザー Cookie __Host-sid の値(__Host-sid= のプレフィックスは不要です。サーバーが Cookie を送信します) |
PAYMENT_SESSION_TOKEN | pay_with_session のデフォルト値として必要 | セッション作成時に返されるベアラートークンです。インラインでトークンが指定されない場合に、デフォルト値として渡されます |
THREE_WS_BASE | いいえ | ベース URL(デフォルト:https://three.ws) |
THREE_WS_TIMEOUT_MS | いいえ | リクエストのタイムアウト(ミリ秒、デフォルト:30000) |
ツール
create_payment_session
クレジットから入金して新しいセッションを作成します。
{
"budget_usd": 10.00,
"label": "Research agent — June sprint",
"expiry_seconds": 86400,
"max_per_tx_usd": 0.50,
"allowed_hosts": ["api.example.com", "data.provider.io"],
"network": "solana"
}
{ session, token } を返します。トークンは一度しか表示されないため、すぐに保存してください。
pay_with_session
セッショントークンを使用して x402 エンドポイントに支払います。プラットフォームのウォレットが署名し、セッションのポリシーが適用されます。
{
"url": "https://api.example.com/data",
"method": "GET",
"session_token": "pss_...",
"idempotency_key": "run-42-fetch-data"
}
トランザクションハッシュ、エクスプローラーのリンク、更新後の予算を含む { ok, paid, result, payment, session } を返します。
session_token が省略された場合は、PAYMENT_SESSION_TOKEN 環境変数が使用されます。
check_payment_session
セッションの予算、ステータス、最近の支払いを確認します。
{ "session_id": "...", "include_executions": true }
list_payment_sessions
認証済みユーザーのすべてのセッションを、集計統計とともに一覧表示します。
{ "status": "active", "limit": 20 }
cancel_payment_session
セッションをキャンセルし、未使用の予算をクレジットに払い戻します。
{ "session_id": "..." }
ネットワークのサポート
セッションの network | プラットフォームの支払元 | USDC コントラクト |
|---|---|---|
solana(デフォルト) | X402_AGENT_SOLANA_SECRET_BASE58 | Solana メインネット USDC |
base | X402_EVM_AGENT_PRIVATE_KEY | Base メインネット USDC(0x8335…) |
@three-ws/x402-mcp との統合
@three-ws/x402-mcp の既存の pay_and_call ツールが、session_token を直接受け取れるようになりました。
{
"url": "https://api.example.com/endpoint",
"session_token": "pss_...",
"confirm": true
}
これにより、ローカルで署名する代わりに、/api/pay/execute 経由で支払いが行われ、セッションのガバナンスポリシーが適用されます。
例
実行可能で、支払いを伴わない例は examples/ にあります。
node examples/list-tools.mjs # every tool with its schema and safety annotations
node examples/plan-a-session.mjs # read live x402 prices, print the policy to authorize
どちらの例もウォレットを保持したり、認証情報を読み取ったり、pay_with_session を呼び出したりしないため、署名も支出も発生しません。plan-a-session.mjs はぜひ参考にしたい習慣を示しています。承認する予算を決める前に、エンドポイントの実際の料金を確認してください。examples/README.md を参照してください。
セッションのライフサイクル
create (budget debited from credits)
└─ active → pay_with_session calls spend against budget
├─ exhausted (budget fully consumed)
├─ expired (TTL elapsed — cron refunds remaining budget)
└─ cancelled (manual — remaining budget refunded immediately)
プログラムからの使用
パッケージのエントリーポイントは、すべてのツール定義(name、title、description、inputSchema、annotations、handler)を含む TOOLS と、トランスポートを接続せずに完全に登録された McpServer を返す buildServer() をエクスポートします。インポート時に副作用はなく、認証情報も必要ありません。そのため、独自のホストにこれらのツールをマウントしたり、オフラインで機能を確認したりできます。認証情報が必要になるのは、ハンドラーが実際に実行されたときだけです。
// run with: THREE_WS_SESSION=<your __Host-sid value> node this-file.mjs
import { TOOLS, buildServer } from '@three-ws/agentcore-payments-mcp';
for (const tool of TOOLS) {
const kind = tool.annotations.readOnlyHint ? 'read ' : 'write';
console.log(`${kind} ${tool.name}`);
}
// A tool handler is a plain async function against the live API.
const list = TOOLS.find((t) => t.name === 'list_payment_sessions');
console.log(await list.handler({ limit: 3 }));
// Or hand the whole registered server to your own MCP transport.
buildServer();
セキュリティ特性
- キーの非公開:セッショントークンは、有効期限付きの HMAC 署名済み許可証です。これが侵害された場合、攻撃者が使用できるのは、許可されたホストで残りの予算までです。それ以上はできません。
- 予算のアトミックな適用:同時に発生した支払いでは、SQL の
UPDATE … WHERE remaining >= amount RETURNINGを使用するため、2 つの同時リクエストが合計で予算を超過することはありません。 - 許可リスト:
allowed_hostsが設定されている場合、ゲートウェイは署名する前に、リストにないホストへのリクエストを拒否します。 - 1 回あたりの上限:
max_per_tx_usdにより、1 回の高額な支払いで予算全額が消費されることを防ぎます。 - SSRF 対策:すべての x402 対象 URL は、支払いの署名前に公開 IP アドレスの許可リストと照合して検証され、サーバー側で DNS 解決されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。