mcpField
A
agentwallet

agentwallet

ローカル
github.com/hifriendbot金融データ32 日前に更新

agentwallet について

agentwalletは、AIエージェントがEVMチェーンとSolanaでウォレットを作成し、署名や取引を行うためのMCPサーバーです。ローカルでのセルフカストディとホスト型カストディを選べ、支出制限やx402決済にも対応します。

主な機能

  1. 01ローカルまたはホスト型の署名
  2. 02EVMとSolanaの取引
  3. 03設定可能な支出上限
  4. 04x402決済と検証
  5. 05人間の承認を含む支出ポリシー

活用シーン

  1. 01オンチェーン取引の署名と送信
  2. 02トークンやネイティブ資産の支出制限
  3. 03x402対応APIの支払い
  4. 04支出ポリシー付きのウォレット利用

MCP 対応

ウォレット作成、取引の署名・送信、トークン承認、x402決済などのMCPツールを提供します。MCPクライアントはローカル署名またはホスト型ウォレットを利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"hifriendbot-agentwallet": {
"command": "npx",
"args": [
"-y",
"agentwallet-mcp"
],
"env": {
"AGENTWALLET_USER": "<AGENTWALLET_USER>",
"AGENTWALLET_PASS": "<AGENTWALLET_PASS>",
"AGENTWALLET_API_URL": "<AGENTWALLET_API_URL>",
"AGENTWALLET_WALLET_ID": "<AGENTWALLET_WALLET_ID>",
"AGENTWALLET_DASHBOARD_URL": "<AGENTWALLET_DASHBOARD_URL>",
"AGENTWALLET_PRIVATE_KEY": "<AGENTWALLET_PRIVATE_KEY>",
"AGENTWALLET_KEYFILE": "<AGENTWALLET_KEYFILE>",
"AGENTWALLET_SOLANA_KEY": "<AGENTWALLET_SOLANA_KEY>",
"AGENTWALLET_SOLANA_KEYFILE": "<AGENTWALLET_SOLANA_KEYFILE>",
"AGENTWALLET_RPC_URL": "<AGENTWALLET_RPC_URL>",
"AGENTWALLET_RPC_<chainId>": "<AGENTWALLET_RPC_<chainId>>",
"AGENTWALLET_SOLANA_RPC": "<AGENTWALLET_SOLANA_RPC>",
"AGENTWALLET_SOLANA_RPC_<chainId>": "<AGENTWALLET_SOLANA_RPC_<chainId>>",
"AGENTWALLET_CHAIN_ID": "<AGENTWALLET_CHAIN_ID>",
"AGENTWALLET_MAX_TX_NATIVE": "<AGENTWALLET_MAX_TX_NATIVE>",
"AGENTWALLET_MAX_TX_TOKEN": "<AGENTWALLET_MAX_TX_TOKEN>",
"AGENTWALLET_MAX_TX_SOL": "<AGENTWALLET_MAX_TX_SOL>",
"AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS": "<AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS>",
"AGENTWALLET_ALLOW_UNLIMITED_APPROVAL": "<AGENTWALLET_ALLOW_UNLIMITED_APPROVAL>",
"AGENTWALLET_TOKEN_DECIMALS": "<AGENTWALLET_TOKEN_DECIMALS>",
"AGENTWALLET_MAX_AUTOPAY": "<AGENTWALLET_MAX_AUTOPAY>",
"AGENTWALLET_MAX_AUTOPAY_PER_HOUR": "<AGENTWALLET_MAX_AUTOPAY_PER_HOUR>",
"AGENTWALLET_AUTOPAY_ASSETS": "<AGENTWALLET_AUTOPAY_ASSETS>",
"AGENTWALLET_X402_MAX_TIMEOUT": "<AGENTWALLET_X402_MAX_TIMEOUT>",
"AGENTWALLET_APPROVALS": "<AGENTWALLET_APPROVALS>",
"AGENTWALLET_PERMIT2_AUTO_APPROVE": "<AGENTWALLET_PERMIT2_AUTO_APPROVE>",
"AGENTWALLET_TOKEN_RISK": "<AGENTWALLET_TOKEN_RISK>",
"AGENTWALLET_LEGACY_PAYWALL_ORIGINS": "<AGENTWALLET_LEGACY_PAYWALL_ORIGINS>",
"AGENTWALLET_MAX_FEE_NATIVE": "<AGENTWALLET_MAX_FEE_NATIVE>",
"AGENTWALLET_POLICY": "<AGENTWALLET_POLICY>",
"AGENTWALLET_LEDGER": "<AGENTWALLET_LEDGER>",
"AGENTWALLET_WEBHOOK_URL": "<AGENTWALLET_WEBHOOK_URL>",
"AGENTWALLET_WEBHOOK_SECRET": "<AGENTWALLET_WEBHOOK_SECRET>",
"AGENTWALLET_KEYFILE_PASSPHRASE": "<AGENTWALLET_KEYFILE_PASSPHRASE>",
"AGENTWALLET_KEYFILE_PASSPHRASE_FILE": "<AGENTWALLET_KEYFILE_PASSPHRASE_FILE>"
}
}
}
}
起動コマンドnpx -y agentwallet-mcp
設定が必要な環境変数
AGENTWALLET_USERHosted mode: your hifriendbot.com username
AGENTWALLET_PASSシークレットHosted mode: an AgentWallet application password from hifriendbot.com/wallet/
AGENTWALLET_API_URLHosted mode: the API base (default https://hifriendbot.com/wp-json/agentwallet/v1); must be https, or http on localhost
AGENTWALLET_WALLET_IDHosted mode: wallet id that pays hosted billing 402s automatically (POST /wallets, /sign, /send only); unset means never
AGENTWALLET_DASHBOARD_URLHosted mode: dashboard link shown in tool text
AGENTWALLET_PRIVATE_KEYシークレットLocal (self-custody) mode: 0x-prefixed EVM private key; signing then happens in this process
AGENTWALLET_KEYFILEシークレットLocal mode: path of a file holding the EVM private key (instead of AGENTWALLET_PRIVATE_KEY; not both)
AGENTWALLET_SOLANA_KEYシークレットLocal mode for Solana: secret key as a JSON array, base58 or base64
AGENTWALLET_SOLANA_KEYFILEシークレットLocal mode for Solana: path of a key file (instead of AGENTWALLET_SOLANA_KEY; not both)
AGENTWALLET_RPC_URLLocal mode: one EVM RPC for every chain
AGENTWALLET_RPC_<chainId>Local mode: EVM RPC per chain, e.g. AGENTWALLET_RPC_8453; eth_chainId is checked
AGENTWALLET_SOLANA_RPCLocal mode: one Solana RPC for every cluster
AGENTWALLET_SOLANA_RPC_<chainId>Local mode: Solana RPC per cluster (900 mainnet, 901 devnet, 902 testnet); the genesis hash is checked
AGENTWALLET_CHAIN_IDLocal mode: default EVM chain when a call names none (default 8453)
AGENTWALLET_MAX_TX_NATIVELocal mode: per-transaction ceiling in native units
AGENTWALLET_MAX_TX_TOKENシークレットLocal mode: per-transaction ceiling for ERC-20 and SPL transfers and approvals, in token units
AGENTWALLET_MAX_TX_SOLLocal mode: per-transaction ceiling in SOL (also charged for a recipient token account the send creates)
AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLSシークレットLocal mode: 1 lets calldata the token cap cannot price reach a token contract (refused by default)
AGENTWALLET_ALLOW_UNLIMITED_APPROVAL1 lets an unlimited ERC-20 allowance or an NFT operator grant through while no spend policy is set (refused by default, and always refused under a policy)
AGENTWALLET_TOKEN_DECIMALSシークレットPin decimals for tokens outside the registry, e.g. 8453:0x<token>=6,<mint>=9; used for amounts and caps instead of the RPC answer
AGENTWALLET_MAX_AUTOPAYPer-payment x402 ceiling in stablecoin units (default 1); the agent cannot raise it
AGENTWALLET_MAX_AUTOPAY_PER_HOURHosted mode: how many internal 402 auto-payments an hour (default 20; 0 disables)
AGENTWALLET_AUTOPAY_ASSETSAssets pay_x402 may pay in beyond registry stablecoins, e.g. 8453:native,0x<token>
AGENTWALLET_X402_MAX_TIMEOUTLongest x402 authorization window in seconds (default 3600; 60 to 31536000)
AGENTWALLET_APPROVALSHosted mode: 0 disables emailing the wallet owner for an over-cap payment
AGENTWALLET_PERMIT2_AUTO_APPROVEHosted mode: 1 approves exactly an upto payment maximum to Permit2 for registry stablecoins
AGENTWALLET_TOKEN_RISKシークレット0 skips the GoPlus lookup approve_token performs
AGENTWALLET_LEGACY_PAYWALL_ORIGINSComma-separated https origins whose legacy-shaped 402 may be paid by an on-chain transfer proved by hash (the API host always may)
AGENTWALLET_MAX_FEE_NATIVELocal mode: the most a transaction may burn in fees (gas x max fee per gas), in native units; default 0.01
AGENTWALLET_POLICYPath of a spend policy JSON file: rolling dollar and native budgets, host, recipient, chain, asset and tool lists, and a human-approval threshold, enforced from a hash-chained ledger
AGENTWALLET_LEDGERPath of the append-only ledger the policy is enforced from (default: agentwallet-ledger.jsonl beside the policy file)
AGENTWALLET_WEBHOOK_URLhttps URL (or http on localhost) that receives every ledger line as it is written
AGENTWALLET_WEBHOOK_SECRETシークレットHMAC-SHA256 key for the X-AgentWallet-Signature header on webhook posts
AGENTWALLET_KEYFILE_PASSPHRASEシークレットPassphrase that opens an encrypted keyfile (made with `agentwallet-mcp encrypt-keyfile`)
AGENTWALLET_KEYFILE_PASSPHRASE_FILEシークレットPath of a file holding the keyfile passphrase (instead of AGENTWALLET_KEYFILE_PASSPHRASE; not both)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmagentwallet-mcp1.14.8

ツール

29

掲載時のツール一覧 · 2 日前に更新

パラメーター型必須説明
labelstringいいえウォレットのわかりやすい名前
chain_idintegerいいえデフォルトのチェーン ID(1=Ethereum、8453=Base、42161=Arbitrum、10=Optimism、137=Polygon、43114=Avalanche、56=BSC、7777777=Zora、369=PulseChain、900=Solana、901=Solana Devnet)

詳細

AgentWallet MCP サーバー

AI エージェント向けのパーミッションレスなウォレットインフラストラクチャです。あらゆる EVM チェーンと Solana でウォレットを作成し、トランザクションに署名して、オンチェーンにブロードキャストできます。ガード機能を内蔵しています。KYC は不要です。API 手数料の支払いに暗号資産を受け付ける唯一の AI エージェントウォレットです。

秘密鍵をお使いのマシンに置いたままにできます。 環境変数を 1 つ設定するだけで、すべての署名はお使いのプロセス内で行われます。サーバーが鍵を見ることはなく、企業がウォレットを凍結することもできません。src/local-wallet.ts を読むか、API の接続先を閉じたポートにしてサーバーを実行すれば、その説明を検証できます。

KYC なし。KYT なし。承認プロセスなし。トランザクションの監視なし。誰もウォレットをブロックできません。オンチェーンで USDC を使って支払えます。クレジットカードは不要です。

2 つのモード

ローカル(自己管理型)ホステッド(カストディアル)
鍵の保管者お使いのプロセス内のあなたAgentWallet サーバー上で暗号化して保管
セットアップ環境変数 1 つ。アカウントは不要API キー
チェーンEVM + SolanaEVM + Solana
誰かが凍結できるかいいえはい。そのための一時停止機能です
支出ガードAGENTWALLET_MAX_TX_NATIVE、AGENTWALLET_MAX_TX_TOKEN、AGENTWALLET_MAX_TX_SOL、AGENTWALLET_MAX_AUTOPAYサーバー側の上限、一時停止、レート制限
ペイウォール、利用状況、請求API キーも必要含まれています

いつでも wallet_mode を実行すると、現在どちらのモードを使っているかと、どのアドレスを管理しているかがサーバーから通知されます。

1つの変数でローカル署名
{
  "mcpServers": {
    "agentwallet": {
      "command": "npx",
      "args": ["-y", "agentwallet-mcp"],
      "env": {
        "AGENTWALLET_PRIVATE_KEY": "0xyour_key",
        "AGENTWALLET_RPC_8453": "https://your-own-rpc",
        "AGENTWALLET_MAX_TX_NATIVE": "0.05"
      }
    }
  }
}

キーをシェルの設定ファイルに置きたくない場合は、代わりに AGENTWALLET_KEYFILE=/path/to/key を使用してください(どちらか一方のみ指定してください。両方が設定されていると、サーバーは起動を拒否します)。キーは一度だけ読み込まれ、ディスクへの書き込み、ログへの記録、エラーメッセージへの記載は一切されません。

AGENTWALLET_RPC_<chainId>(またはすべてのチェーンに対する AGENTWALLET_RPC_URL)には、信頼できるエンドポイントを指定します(https を使用してください。平文の http は localhost 上でのみ使用できます)。指定しない場合はパブリック RPC が使用され、パブリック RPC には、問い合わせたアドレスが知られる可能性があります。レジストリにないトークンの小数桁数はその RPC から取得され、18 以下の場合のみ受け入れられます。それ以外の値を使用する場合は、AGENTWALLET_TOKEN_DECIMALS で固定してください。

AGENTWALLET_MAX_TX_NATIVE は、ネイティブ通貨単位(ETH、MATIC など)での1トランザクションあたりの上限です。ホスト型モードではサーバーが上限を適用しますが、ローカルモードにはサーバーがないため、ここで設定するガードが唯一の制限です。必ず設定してください。

AGENTWALLET_MAX_TX_TOKEN は、ERC-20 の送金に対する同等の上限で、トークンの一般的な単位で指定します。ステーブルコインを保有している場合は、こちらも必ず設定してください。 ネイティブ通貨の上限ではトークン送金を検知できません。ERC-20 の送金では、金額が calldata に含まれ、value = 0 となるため、AGENTWALLET_MAX_TX_NATIVE だけでは USDC の残高に上限が設定されません。AGENTWALLET_MAX_TX_TOKEN は、transfer、transferFrom、approve、increaseAllowance、Permit2 の approve、およびチェーン固有のラップ済みネイティブトークンのコントラクトに対する deposit() / withdraw(uint256) を対象とします(このため、上限を設定した状態でも wrap_eth と unwrap_eth は引き続き動作します)。承認も対象とするのは、上限のない許可が資金流出の原因になりうるためです。ERC-721 および ERC-1155 の calldata(setApprovalForAll、safeTransferFrom)は、NFT の価格を算定する手段がないため、上限の設定中は拒否されます。上限を設定していない場合は、任意の金額の ERC-20 送金と同様に許可されます。ただし、オペレーターへの許可は無制限の承認となるため、デフォルトではどの状況でも拒否されます(AGENTWALLET_ALLOW_UNLIMITED_APPROVAL を参照)。トークンコントラクトまたは Permit2 に対するその他の calldata は、ガードが価格を算定できないため、上限の設定中は拒否されます。そのような呼び出しを意図的に許可するには、AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS=1 を設定してください。increaseAllowance は増額後の合計で判定されます。まず現在の許可額が読み取られ、読み取れない場合は呼び出しが拒否されるため、個々の増額が上限内でも、複数回の増額によって許可額の合計が上限を超えることはありません。その他のコントラクト(ルーター、ブリッジ)への呼び出しは許可されます。これらが引き出せるのは、すでに承認された範囲内の金額だけだからです。コントラクトが「その他」と見なされるのは、decimals() を明確に拒否する場合に限られます。異常または不正な応答が返された場合や、RPC に接続できない場合は、許可ではなく拒否されます。小数桁数は、まず信頼できるレジストリから、次にトークン自身の decimals() からローカルで解決されます。どちらからも解決できないトークンは、小数桁数 0 として評価されます。これは、フェイルオープンを起こさない唯一の値です。レジストリにないトークンでは、RPC だけが小数桁数の取得元となります。制御できない RPC では、金額と上限が同じ比率でスケーリングされる可能性があります。そのようなトークンは AGENTWALLET_TOKEN_DECIMALS で固定してください(例:8453:0x<token>=6)。固定値は、RPC の応答が使われるはずだったすべての箇所で使用されます。

Solana のローカル署名
"env": {
  "AGENTWALLET_SOLANA_KEY": "[12,34...]",
  "AGENTWALLET_SOLANA_RPC": "https://your-own-rpc",
  "AGENTWALLET_MAX_TX_SOL": "1",
  "AGENTWALLET_MAX_TX_TOKEN": "25"
}

すでにお持ちの形式をそのまま使用できます。solana-keygen の id.json 配列、Phantom からエクスポートした base58 の秘密鍵、または base64 に対応しています。ファイルを指定するには AGENTWALLET_SOLANA_KEYFILE を使用してください。ネイティブ SOL と SPL トークンの両方の送金がローカルで署名され、送金先に対応するトークンアカウントがない場合は、自動的に作成されます。

どちらか一方、または両方のキーを設定してください。これらは独立しているため、EVM をローカルで実行し Solana をホスト型で実行することも、その逆も可能です。

対応するローカルキーがない操作は拒否され、ホスト型署名に黙って振り替えられることはありません。 EVM キーを設定した状態で、Solana キーを設定せずに Solana の送金を要求すると、サーバーは処理を停止し、不足している変数を通知します。セルフカストディだと信じている間に、保有していないキーへ黙って資金を移動させることは、このサーバーが起こしうる最悪の事態です。

依存関係ツリーについて

ローカル署名では、EVM に viem、Solana に @solana/web3.js を使用し、キーの解析には bs58 を使用しています。SPL 命令は @solana/spl-token を使わず、手作業で構築しています。このパッケージは重大度の高いバッファーオーバーフローの勧告がある bigint-buffer を依存関係に含むためです。命令のエンコードを十数行節約するために、ウォレットにこのような依存関係を含める理由はありません。

npm audit では 1.13.5 時点で勧告は報告されません。package.json のオーバーライドにより、@solana/web3.js の jayson に関する2件の勧告を解消しています。以前のリリースでは、@modelcontextprotocol/sdk の HTTP トランスポート依存関係に勧告が含まれていました。このサーバーは stdio を使用するため、そのコードは読み込まれません。また、このパッケージから SDK にパッチを適用することもできません。ご自身で監査を実行してください。確認可能な依存関係ツリーを公開することが目的です。

AgentWallet のデモ。AI エージェントが x402 請求書を自動で支払います

機能

  • 40 個の MCP ツール:ウォレットの作成、トランザクションの送信、トークンの承認、ETH のラップ、SPL トークンの送金、見積もり、検出、x402 決済の支払いと受け取り、カストディモードの確認など
  • 支出ポリシー:日次・月次のローリング予算、ホストごとの上限、ホストと受取人のリスト、MCP エリシテーションによる人間の承認、ツールの許可リストを1つの JSON ファイルで設定し、ハッシュチェーン付き台帳によって適用します。キーはあなたの手元にあり、エージェントが使いすぎることもありません。
  • EVM + Solana:Ethereum、Base、Polygon、BSC、Arbitrum、Optimism、Avalanche、Zora、PulseChain、Solana、およびその他すべての EVM 互換チェーン
  • SOL + SPL トークン:ネイティブ SOL の送金と SPL トークン(USDC、USDT など)の送金に対応し、アカウントを自動作成します
  • 組み込みの保護機能:ホステッドモードでは、日次支出上限、ガス価格保護、緊急停止、レート制限がデフォルトでサーバー側に適用されます。ローカルモードでは、設定したトランザクションごとの上限(AGENTWALLET_MAX_TX_NATIVE、AGENTWALLET_MAX_TX_TOKEN、AGENTWALLET_MAX_TX_SOL、AGENTWALLET_MAX_AUTOPAY)が保護機能となります。どちらのモードでも、x402 のリプレイ保護とオンチェーン検証が適用されます
  • x402 決済:x402 対応 API の料金を自動で支払うか、ご自身のエンドポイントで x402 決済を受け取れます(EVM と Solana)
  • セルフカストディの選択肢:ローカルモードではキーがマシンの外に出ることはありません。ホステッドモードでは、キーは保存時に暗号化され、署名時のみ復号され、その直後にメモリからゼロ化されます。どちらのモードでも、キーをエクスポートしていつでも利用をやめられます。
  • パーミッションレス:KYC なし。KYT なし。本人確認なし。承認プロセスなし。コンプライアンス上の制限なし。登録して API キーを取得すれば、すぐにトランザクションを開始できます。
  • 30 秒でセットアップ:設定は3行です。インストールする SDK はありません。管理する依存関係もありません。

料金

  • 操作あたり $0.00345
  • 月あたり6,000操作まで無料
  • x402 検証あたり $0.0005
  • 月あたり1,000件の x402 検証まで無料
  • x402 経由でオンチェーンの USDC で支払い可能。クレジットカードは不要です
  • 月額料金なし。料金プランなし。使った分だけのお支払いです

競合他社との比較は、最終確認日とともに hifriendbot.com/wallet/#pricing に掲載しています。他社が価格を変更したときに公開済みの npm README を修正できないため、比較情報は README ではなくこちらに掲載しています。

クイックスタート

クレジットカード不要、KYC 不要、承認待ち不要で、hifriendbot.com/wallet から無料の API キーを取得できます。

Claude Desktop / OpenClaw

設定に追加します。

{
  "mcpServers": {
    "agentwallet": {
      "command": "npx",
      "args": ["-y", "agentwallet-mcp"],
      "env": {
        "AGENTWALLET_USER": "your_username",
        "AGENTWALLET_PASS": "your_api_key",
        "AGENTWALLET_WALLET_ID": "1"
      }
    }
  }
}

AGENTWALLET_WALLET_ID は任意です。x402 の自動支払いを有効にするには、この値を設定します。クレジットカードなしで無料枠を超えた場合、MCP サーバーはこのウォレットの USDC で操作料金を自動的に支払います。この方法で支払われるのは、従量課金のルート(ウォレットの作成、署名、送信)のみで、1 時間あたり最大 AGENTWALLET_MAX_AUTOPAY_PER_HOUR 回(デフォルトは 20 回)です。また、自動支払いの内容はすべて、ツールの結果の autopay_payment に報告されます。それ以外のルートで 402 が発生した場合は報告されますが、支払いは行われません。

自動支払いの安全上限。 AGENTWALLET_MAX_AUTOPAY(任意、デフォルトは 1)は、1 回の x402 支払いで承認できる上限額をステーブルコイン単位で指定します。1 は 1 ドルを意味します。価格の判定対象は、レジストリに登録されたステーブルコイン(サポートされているチェーン上の USDC、USDT、USDbC、DAI、および Solana 上の USDC と USDT)のみです。チェーンのネイティブ資産やその他のトークンでの支払い要求は拒否されます。ETH での「1」は数千ドルに相当するためです。そのような資産を許可するには、AGENTWALLET_AUTOPAY_ASSETS に資産を追加します(アドレスまたはミントをカンマ区切りで指定するか、native を指定します)。この場合、上限は各資産固有の単位で適用されます。上限を超える要求は支払わずに拒否されるため、不正な、または改ざんされた支払い要求によってウォレットの資金が引き出されることはありません。この自動支払い経路で処理されるのは exact の要求のみです。API からの upto のオファーは、ウォレットへの呼び出し前に拒否されます。使用量の最大額を前払いすることはオファーの意味に沿わないためです(その場合は、Permit2 承認に署名する pay_x402 を使用してください)。上限はオペレーターが設定する限度額です。max_payment 引数で 1 回の呼び出しの上限を下げることはできますが、上げることはできません。より高額な自動支払いが本当に必要な場合は、変数自体の値を引き上げてください(たとえば、1 回あたり最大 5 USDC にするには "5" を指定します)。

Claude Code
claude mcp add agentwallet \
  -e AGENTWALLET_USER=your_username \
  -e AGENTWALLET_PASS=your_api_key \
  -e AGENTWALLET_WALLET_ID=1 \
  -- npx -y agentwallet-mcp
VS Code

設定に追加します。

{
  "mcp": {
    "servers": {
      "agentwallet": {
        "command": "npx",
        "args": ["-y", "agentwallet-mcp"],
        "env": {
          "AGENTWALLET_USER": "your_username",
          "AGENTWALLET_PASS": "your_api_key",
          "AGENTWALLET_WALLET_ID": "1"
        }
      }
    }
  }
}

ツール

ツール説明
create_wallet新しい EVM または Solana ウォレットを作成します
list_walletsすべてのウォレットを一覧表示します
get_walletID でウォレットの詳細を取得します
get_balance任意のチェーンでネイティブトークンの残高を確認します
get_token_balanceERC-20 または SPL トークンの残高を確認します
get_token_infoERC-20 トークンの名前、シンボル、小数桁数を取得します
transferネイティブトークン(ETH、SOL、POL、BNB など)を送金します
transfer_tokenERC-20 または SPL トークン(USDC、USDT など)を送金します
send_transaction生のトランザクションに署名してブロードキャストします
sign_transactionブロードキャストせずにトランザクションに署名します
call_contract読み取り専用のコントラクト呼び出し(eth_call)を行います
approve_tokenDeFi での利用に向けて ERC-20 トークンの使用を承認します
get_allowanceERC-20 トークンの使用許容量を確認します
wrap_ethネイティブトークンを WETH/WAVAX などにラップします
unwrap_ethWETH をネイティブトークンに戻します
pay_x402x402 請求書を支払います(EIP-3009 による exact、Permit2 による upto)。上限を超える承認にも対応します
quote_x402x402 エンドポイントの請求額と、上限、ポリシー、予算によって支払いが許可されるかどうかを確認します。署名は行いません
discover_x402公開 x402 インデックス(Bazaar)から、テーマ別に x402 対応 API を探します
list_payments台帳に記録された支出とその結果を、新しい順に一覧表示します
export_receipts経費記録用に台帳を CSV または JSONL で出力します
spend_policy適用中のポリシー、その sha256、支出済みおよび残りの予算、台帳の整合性を確認します
simulate_transactionEVM トランザクションをドライランします。ガード、ポリシー、ガス見積もり、手数料、戻り値を確認します。署名は行いません
check_approval上限超過の pay_x402 によって作成された人間による承認の状態を確認します
approve_permit2upto エンドポイント用に Permit2 へのトークン使用を一度だけ承認します
check_token_riskトークンのハニーポット、税、所有者権限、保有者集中に関するフラグを確認します
create_paywallリソースに課金するための x402 ペイウォールを作成します
list_paywallsすべての x402 ペイウォールを一覧表示します
get_paywallID でペイウォールの詳細を取得します
update_paywallペイウォールの料金、リソース、またはステータスを更新します
delete_paywallペイウォールを削除します
get_paywall_paymentsペイウォールの支払い履歴を表示します
get_x402_revenueすべてのペイウォールの収益統計を集計します
wallet_mode署名がローカル(自己管理)かホスト型か、および使用中のアドレスを報告します
export_wallet_keyホスト型ウォレットのキーをエクスポートして自己管理に移行する方法を確認します
buy_verification_creditsオンチェーンで USDC を使って x402 検証クレジットを購入します
get_usage月間の使用量と請求状況を確認します
get_chainsサポートされているすべてのチェーンを一覧表示します
pause_walletウォレットを緊急停止します
unpause_wallet一時停止中のウォレットを再開します
delete_walletウォレットを削除します

対応チェーン

チェーンIDネイティブトークンステーブルコイン
Ethereum1ETHUSDC
Base8453ETHUSDC
Polygon137POLUSDC
BSC56BNBUSDT
Arbitrum42161ETHUSDC
Optimism10ETHUSDC
Avalanche43114AVAXUSDC
Zora7777777ETHUSDC
PulseChain369PLSUSDC
Solana900SOLUSDC
Solana Devnet901SOLUSDC

ユースケース:GuessMarket

guessmarket-mcp と組み合わせると、AI エージェントが予測市場で取引できます。

  1. Base でウォレットを作成します
  2. USDC の使用を承認します
  3. 予測市場で YES/NO のシェアを購入します
  4. 流動性を提供して取引手数料を獲得します
  5. 賞金を請求します

すべてオンチェーンで完結します。すべて MCP 経由です。フロントエンドは不要です。

x402 決済

AgentWallet は、仕様で定義されている方法で x402 オープン決済標準 に対応します。AI エージェントが HTTP 402 を返す API にアクセスすると、pay_x402 が一連の処理をすべて実行します。

  1. URL を取得し、v2 の PAYMENT-REQUIRED ヘッダーまたは v1 の JSON 本文から支払い要件を読み取ります。
  2. exact オプションを選択します(prefer_chain で指定できます)。
  3. その金額ちょうどの EIP-3009 TransferWithAuthorization に署名します。ブロードキャストは行われず、支払者にガス代はかかりません。エンドポイントのファシリテーターがオンチェーンで決済します。
  4. 支払いヘッダー(v2 では PAYMENT-SIGNATURE、v1 では X-PAYMENT)を付けてリクエストを再試行します。
  5. レスポンス、決済レシート(PAYMENT-RESPONSE / X-PAYMENT-RESPONSE)、およびエンドポイントが拒否した場合は、その理由を retry_error で返します。

Coinbase の公開ファシリテーター(v1 と v2 のペイロードで isValid: true)および Base 上の稼働中の x402 サーバーで検証済みです。どちらのカストディモードでも動作します。ローカルキーはプロセス内で署名し、ホステッドウォレットは POST /wallets/{id}/x402/authorize を介して署名します。この限定されたエンドポイントが署名するのはこの構造体のみで、送金と同じ一時停止チェックとトークン上限チェックを実行します。

pay_x402(
  url="https://api.example.com/premium-data",
  wallet_id=1,
  max_payment="1.00"
)

max_payment は1回の呼び出しに対する上限を引き下げます。引き上げることはできません。AGENTWALLET_MAX_AUTOPAY(デフォルトは 1)がオペレーターの上限であり、これを超える max_payment は無視され、max_payment_ignored として通知されます。そのため、悪意のある402エンドポイントやプロンプトインジェクションを受けたエージェントが、オペレーターの許可を超える金額を承認することはできません。ホステッドウォレットでは、以下のメールによる所有者の承認を通じた場合に限り上限を超えられます。ローカルモードではこの変数を引き上げます。ローカルモードでは、承認は他者が実行する送金であるため、AGENTWALLET_MAX_TX_TOKEN は承認にも適用されます。エンドポイントが求める時間の長さにかかわらず、承認の有効期間は最大 AGENTWALLET_X402_MAX_TIMEOUT 秒(デフォルトは3600秒)です。また、同じエンドポイント、金額、受取人に対する pay_x402 の再呼び出しでは、この期間内であれば新たに署名せず、以前の署名を再送します(ノンスは1回のみ使用できるため、決済後にサーバーがリソースを渡さなかった場合でも、二重に支払われることはありません。新しい署名を強制するには fresh_authorization=true を渡します)。アセットの表示名はレジストリまたはチェーンから取得し、402 本文からは取得しません。

スキーム。 exact(EIP-3009、支払者はガス代不要)を優先し、AgentWallet が対応するすべての EVM チェーンで動作します。upto(販売者が実際の使用量に応じて決済する Permit2 の上限)は、エンドポイントのファシリテーターに紐づけた PermitWitnessTransferFrom として署名されます。トークンごとに1回 approve_permit2 を実行するか、AGENTWALLET_PERMIT2_AUTO_APPROVE=1 を設定する必要があります。extra.facilitatorAddress のない upto オプションは拒否され、前払い送金で代用されることはありません。ネイティブアセットと Solana のリクエスト、および AgentWallet 独自のペイウォールでは、オンチェーン送金をトランザクションハッシュで証明して支払います。これが各サーバーの検証方法です。

上限を超える承認。 ホステッドウォレットでは、上限を超える支払いを必ずしも失敗させる必要はありません。request_approval(デフォルトで有効。無効にするには AGENTWALLET_APPROVALS=0 を設定)を使うと、ウォレットの所有者に承認リンクと拒否リンクを記載したメールが届き、pay_x402 は approval_id を返します。check_approval が承認済みと報告した後、エージェントはその ID を使って再試行します。承認は1つのウォレット、チェーン、アセット、受取人、上限に紐づき、有効期限は24時間で、1回の署名に使用されます。ローカルモードには承認チャネルがありません。環境変数で設定した上限がポリシーとなり、そのモードで渡された approval_id は拒否されます。

アセットのリスク。 check_token_risk(およびすべての approve_token の結果)は、GoPlus Security の情報とオンチェーンのフォールバックに基づき、ハニーポット、税、所有者の権限、ソースコードの検証状況、保有者の集中度、流動性に関するフラグを報告します。これは呼び出し側が判断するための警告であり、ブロックはしません。 証明。 実際の決済はPAYMENTS.mdに掲載されています。最初の決済は、Baseでの0.02 USDCのexact決済で、ガス代はファシリテーターが負担しています。同じ一覧をBasescanへのリンク付きで表示したものはhifriendbot.com/wallet/paymentsで確認できます。また、インストールから実際の決済までを5分で解説する手順はhifriendbot.com/wallet/quickstartにあります。セキュリティポリシー、固定の開示情報、リリース履歴については、hifriendbot.com/securityとhifriendbot.com/changelogをご覧ください。

3つの手順でClaudeから任意のx402 APIに支払う

  1. サーバーを追加します(クイックスタートのスニペットのいずれかを使用します)。セルフカストディの場合は、Base上にUSDCを保有するキーをAGENTWALLET_PRIVATE_KEYに設定します。ホステッドの場合は、hifriendbot.com/walletから取得したAGENTWALLET_USERとAGENTWALLET_PASSを設定します。
  2. 次のように依頼します:「pay_x402を使って、本文{"year":2026,"state":"BY"}でhttps://api.ozdreamtools.de/api/holidays にPOSTし、max_paymentを0.05にしてください。」
  3. 結果を確認します:payment_made: true、金額、payment_method、オンチェーンハッシュであるsettlement.transactionが返されます。exactではETHは不要です。エンドポイントのファシリテーターがガス代を負担します。

トークンドメイン。 EIP-712ドメインは、エンドポイントのextra.name/extra.version、次にUSDCデプロイ先の短いレジストリ、最後にトークンコントラクト自体のname()/version()から取得されます。いずれからも取得できない場合は、推測したドメインで署名するのではなく、支払いが拒否されます。

委任された支払者。 支払い元アドレスがEIP-7702委任アカウントの場合、pay_x402はその情報をpayer_delegation(委任先と、ERC-1271に応答するかどうか)に報告します。ERC-1271に対応していない委任先は、署名者を復元する前にアカウントコードを確認するファシリテーターによって拒否されます。その際に返される理由は署名エラーのように見えますが、警告には実際の原因が示されます。確実に決済するには、通常のEOAから支払ってください。

x402の受け入れ

AgentWalletでは、x402決済を受け入れることもできます。ペイウォールを作成して任意のリソースを指定すると、エージェントに自動で課金する公開URLを取得できます。

create_paywall(
  wallet_id=1,
  name="Premium API",
  amount="0.01",
  token_name="USDC",
  token_address="0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  chain_id=8453,
  resource_url="https://your-api.com/data"
)

エージェントがペイウォールURLにアクセスすると:

  1. 支払い要件とともにHTTP 402が返されます
  2. pay_x402(またはx402互換クライアント)を使ってオンチェーンで支払います
  3. 支払い証明を添えて再試行します
  4. 保護されたコンテンツを受け取ります

オンチェーン検証により、すべての支払いが実際のものであることを確認できます。リプレイ保護により二重支払いを防止します。収益トラッキングでは、誰がいついくら支払ったかを確認できます。毎月1,000件まで無料で検証でき、それ以降は1件あたり$0.0005です。比較については、料金の比較をご覧ください。

比較

機能Coinbase CDPAgentWallet
セットアップ時間SDKのインストール+設定設定3行
承認プロセス本人確認が必要不要、即時利用可能
KYCが必要はいいいえ
KYT/トランザクション監視はいいいえ
ウォレットのブロックはいいいえ
組み込みガードはい(セットアップが必要)はい(ホステッド:デフォルトで有効、ローカル:設定した環境変数の上限を適用)
無料の月間操作数5,0006,000
操作あたりのコスト$0.005$0.00345
x402検証コスト$0.001$0.0005
月間の無料x402検証数1,0001,000
x402の受け入れ(ペイウォール)いいえはい
API料金を暗号資産で支払ういいえ(クレジットカードのみ)はい(x402経由のUSDC)
対応チェーンEVM 8種類+Solana任意のEVM+Solana
トークンツールはいERC-20+SPL(34ツール)
MCP サーバーはいはい

クレジットカード不要で暗号資産で支払い

AgentWalletは、API料金を暗号資産で支払える唯一のAIエージェントウォレットインフラストラクチャです。競合するCoinbase CDP、Circle、MoonPay、Crossmint、Turnkeyはいずれも、クレジットカードまたは月次請求書が必要です。AgentWalletでは、エージェントがx402プロトコルを通じてオンチェーンのUSDCで操作の料金を支払えます。クレジットカードも請求書も請求ポータルも不要です。オンチェーン決済だけで完結します。

無料枠(月6,000回の操作)を超えたとき、クレジットカードが設定されていない場合は、APIがUSDCでの支払い手順を含むHTTP 402を返します。エージェントはオンチェーンで支払い、支払い証明を添えて再試行すると、操作が実行されます。MCPサーバーを通じて、すべて自動で行われます。

buy_verification_creditsツールを使ってUSDCでx402検証クレジットを事前購入することもできます。これにより、クレジットカードなしで、月1,000回の無料検証を超えてもペイウォールを稼働させ続けられます。

組み込みの保護機能

適用される保護機能は、誰がキーを保持しているかによって異なります。

ホステッドモード(サーバーがキーを保持):以下の保護機能はすべてデフォルトで有効で、設定は不要です。

  • 保存時の暗号化:秘密鍵は保存前に暗号化され、サーバーの外に出ることはありません
  • メモリのゼロ化:署名操作のたびに、キーは直後にメモリから消去されます
  • 1日の支出上限:ウォレットごとに1日あたりの上限額を米ドルで設定でき、サーバーがすべてのトランザクションで適用します
  • ガス価格保護:ガス価格が安全なしきい値を超えて急騰した場合、トランザクションはブロックされます
  • 緊急停止:ワンクリックで任意のウォレット、またはすべてのウォレットを即座に凍結できます
  • レート制限:不正使用や総当たり攻撃を防ぐため、APIリクエスト数を1分あたりの上限内に制限します

ローカルモード(ユーザーがキーを保持):署名処理にサーバーが介在しないため、上記のサーバー側の制限や停止機能では、ローカルで署名されたトランザクションを確認したり停止したりできません。また、当社を含め、誰もローカルウォレットを凍結できません。保護機能として、署名の前にご自身のプロセス内で適用される、トランザクションごとの上限を設定してください。ウォレットに資金を入れる前に設定してください。上限を設定しない場合、制限はありません。

  • AGENTWALLET_MAX_TX_NATIVE:ネイティブ通貨単位(ETH、MATIC など)での、1 トランザクションあたりの上限です

  • AGENTWALLET_MAX_FEE_NATIVE:1 トランザクションで支払える手数料の上限です。ネイティブ通貨単位で、gas x max fee per gas で計算します(デフォルトは 0.01)。金額の上限だけでは手数料を制限できません。ノードが異常に高いチップやガス見積もりを返すと、上限内の送金でも残高全額が優先手数料として使われる可能性がありました。呼び出し元が指定した gas_limit/max_fee/priority_fee は適用されたうえで、この上限によって制限されます

  • AGENTWALLET_MAX_TX_TOKEN:ERC-20 の送金または承認 1 回あたりの上限です。トークンの人間向け単位で指定します

  • AGENTWALLET_ALLOW_UNKNOWN_TOKEN_CALLS:1 に設定すると、トークン上限で価格を算出できない calldata がトークンコントラクトまたは Permit2 に到達できるようになります(上限が設定されている場合、デフォルトでは拒否されます)

  • AGENTWALLET_ALLOW_UNLIMITED_APPROVAL:1 に設定すると、支出ポリシーが設定されていない場合に、無制限の ERC-20 許容量("max" を指定した approve_token、金額を指定しない approve_permit2)または NFT オペレーターの承認(setApprovalForAll)を許可します(デフォルトでは拒否され、ポリシー適用中は常に拒否されます)

  • AGENTWALLET_TOKEN_DECIMALS:レジストリにないトークンの小数桁数を固定します(8453:0x<token>=6,<mint>=9)。金額と上限の算出には、RPC への問い合わせに代えて固定した値が使用されます

  • AGENTWALLET_MAX_TX_SOL:ネイティブ SOL の送金 1 回あたりの上限です(SPL 送信で作成が必要な受取人のトークンアカウントの rent も対象です)。SPL トークンの金額は対象外です。EVM と同様、Solana でも AGENTWALLET_MAX_TX_TOKEN が適用されます

  • AGENTWALLET_MAX_AUTOPAY:x402 による自動支払い 1 回あたりの、ステーブルコイン単位での上限です(デフォルトは 1)。AGENTWALLET_AUTOPAY_ASSETS を指定すると、ネイティブ通貨またはステーブルコイン以外の資産も対象になります。AGENTWALLET_X402_MAX_TIMEOUT は、署名済みの承認が有効な期間の上限を指定します(デフォルトは 3600 秒)

  • AGENTWALLET_SOLANA_RPC_<chainId>(全クラスターに適用する場合は AGENTWALLET_SOLANA_RPC):送信前に RPC の genesis hash と chain id が照合されます。同様に EVM RPC の eth_chainId も照合されるため、指定した URL が要求したものとは異なるネットワークに接続していても、気付かれないまま処理されることはありません

  • AGENTWALLET_TOKEN_RISK=0:approve_token が行う GoPlus への問い合わせをスキップします(承認しようとしているトークンを第三者に開示する呼び出しです)

  • AGENTWALLET_CHAIN_ID:呼び出しでチェーンが指定されていない場合に使用する EVM チェーンです(デフォルトは 8453)

  • AGENTWALLET_LEGACY_PAYWALL_ORIGINS:オンチェーン送金をハッシュで証明することで、従来形式の 402 の決済を許可する https オリジンをカンマ区切りで指定します。それ以外のホストには署名済みの承認が必要です

  • AGENTWALLET_POLICY:支出ポリシーファイルです(後述)。合計額、ホスト、受取人、チェーン、資産、ツールを制限します。AGENTWALLET_LEDGER は、ポリシーの適用元となる台帳を指定します

  • AGENTWALLET_KEYFILE_PASSPHRASE または AGENTWALLET_KEYFILE_PASSPHRASE_FILE:暗号化されたキーファイルを開きます(後述)

  • AGENTWALLET_WEBHOOK_URL(https、または localhost 上の http)と AGENTWALLET_WEBHOOK_SECRET:台帳の各行を JSON として POST します。シークレットが設定されている場合は、X-AgentWallet-Signature: sha256=<hmac> で署名されます。Webhook が署名処理を遅らせたり、失敗させたりすることはありません

すべての AGENTWALLET_* 変数は起動時に検証されます。不正な上限値があると、サーバーは「制限なし」として読み込むのではなく停止します。また、認識されない名前(上限値の入力ミスなど)がある場合も停止します。wallet_mode は、解析された値とともにすべてのガードを報告します。ツール引数は厳密に検証されます。認識されない引数名(max_payment の入力ミスなど)は、無視されずエラーになります。pay_x402 はリソースごとに有効な承認を 1 つ署名します。同じリソースに対する異なる要件がある場合、fresh_authorization が渡されない限り、先の承認が期限切れになるまで拒否されます。Node.js 22.19 以降が必要です。

支出ポリシー:1 回の支払いだけでなく、合計額を制限する

トランザクションごとの上限で制限できるのは、1 つの署名です。上限が 1 のとき、0.99 の支払いが 500 回目であることまでは把握できません。支出ポリシーなら可能です。AGENTWALLET_POLICY に JSON ファイルを指定してください。

{
  "version": 1,
  "name": "research agent",
  "budget": { "daily": "5", "monthly": "50" },
  "native_budget": { "8453": { "daily": "0.01" } },
  "hosts": { "allow": ["*.example.com", "api.ozdreamtools.de"], "deny": ["evil.example.com"] },
  "per_host": { "*.example.com": { "daily": "2", "per_payment": "0.25" } },
  "recipients": { "deny": ["0x0000000000000000000000000000000000000000"] },
  "chains": { "allow": [8453, 900] },
  "approval": { "above": "0.50", "max": "20" },
  "tools": { "allow": ["pay_x402", "quote_x402", "discover_x402", "get_balance", "list_payments", "spend_policy", "wallet_mode"] }
}
  • budget:すべてのチェーンを対象とした、直近24時間、直近30日間、全期間のローリングドル予算です。x402 決済、ステーブルコインの送金、レジストリ内のステーブルコインの承認をカウントします。予算が設定されているとき、予算額を算出できない支出(レジストリにないトークン)は、"unpriced_spends": "allow" を指定しない限り拒否されます。SPL 送金はミント固有の小数桁数で価格が算出されます。ミントと異なる token_decimals のヒントは、リクエストを行う前に拒否されます。
  • native_budget:チェーンごとに、そのチェーン固有の通貨で設定する同様の予算です。ネイティブ送金と、あらゆるコントラクトに送られるネイティブ通貨の価値(wrap_eth、値と calldata を指定した send_transaction)をカウントします。トークンの送金や承認の呼び出しに含まれる価値も対象です(payable なトークンコントラクトはそれを保持するため、コントラクトへの別の支出として扱われます)。また、ローカル Solana モードでは、SPL 送金が受取人のトークンアカウント作成のために支払う rent も対象です(アカウントの所有者は受取人で、lamport を回収するために閉じることができます。台帳には受取人宛て、メソッド rent の独立した項目として記録され、この支出について assets.allow に native を指定する必要はありません)。
  • 承認は支出です。 ERC-20 の使用許可(approve_token、approve_permit2、increaseAllowance、approveAndCall、Permit2 の approve、または send_transaction を介した同じ calldata)は、後で spender が引き出す資金であるため、付与時に価格が算出され、確認され、台帳に予約されます。spender は受取人リストに照らして確認されます。また、無制限の承認(2^128 基本単位以上)は予算でカウントできないため拒否されます。正確な額を付与してください。NFT のオペレーター権限(setApprovalForAll、ERC-777 の authorizeOperator)は仕様上無制限であり、同様に拒否されます。ERC-721 または ERC-1155 の送金は、予算額を算出できないコレクションから受取人への支出であるため、ドル予算のもとでは unpriced_spends が "allow" でない限り拒否されます。いずれの場合も受取人は確認されます。その他のコントラクト(ルーター、ブリッジなど)へのゼロ価値の呼び出しでは何も予約されません。すでに付与された承認分しか引き出せません。
  • hosts、per_host:pay_x402 が支払い可能なエンドポイントと、ホストごとの日次、月次、各支払いの上限です。拒否されたホストには、見積もりの問い合わせも含め、一切接続しません。ホストは正規化された DNS 名(小文字で、ルートラベル末尾のドットを除去)で照合されるため、api.example.com. とそのパーセントエンコード表記は、すべてのリストおよび台帳のホスト別合計で api.example.com として扱われます。
  • recipients:資金の送付先(送金、x402 の payTo、承認の spender、ネイティブ価値を受け取るコントラクト)です。許可リストは資金の送付先を対象とします。ゼロ価値の呼び出し先となるコントラクト(承認対象のトークン、ルーター)は、拒否リストとチェーンリストに照らして確認されます。
  • chains、assets:許可リストです。アセットの項目には、"8453:0x..." のようなスコープを指定することも、native を指定することもできます。
  • approval:above を超える場合、すべての x402 決済について、elicitation を通じて MCP クライアント上の人間に確認を求めます(クライアントには金額、トークン、受取人、リソースが表示され、承認するか拒否するかを尋ねます。elicitation に対応しないと宣言したクライアントは回答できないため、決済は拒否されます)。ローカルモードでは、承認された回答により、決済が各支払いの上限を超えて max まで許可される場合があります。誰かの承認によって予算が引き上げられることはありません。
  • tools:モデルに公開するツールです。支払い専用のデプロイでは7つが公開され、残りは登録されません。wallet_mode と spend_policy は常に存在するため、オペレーターはサーバーの状態を確認できます。

未知のキーがあるとサーバーは停止するため、budgets のスペルミスによって無制限に実行されることはありません。spend_policy はファイル、その sha256(レビューしたファイルと照合してください)、各予算の支出額と残額、ポリシーによって非表示にされたツールを報告します。quote_x402 は、署名する前に URL への支払いが行われるかどうかを回答します。 台帳。 予算は、追記専用のハッシュチェーン形式の JSONL ファイル(AGENTWALLET_LEDGER、またはポリシーの ledger、あるいは予算が必要な場合にポリシーと同じ場所にある agentwallet-ledger.jsonl)によって適用されます。署名が作成される前に支出がこのファイルに予約され、署名に失敗した予約は後続の行で無効化されます。その後、エンドポイントまたはチェーンからの応答がこのファイルに記録され、精算されます。すでに送信された可能性がある支出(バイト送信後に失敗したブロードキャストや、ホスト型リクエストを受け取った後に破棄した API ホストなど)は、無効化せず unknown として計上し続けます。ポリシーによる拒否やローカルモードによる拒否を含め、このプロセスから何も送信される前の失敗は常に無効化され、予算を消費しません。読み込みのたびにチェーンが検証され、検証に失敗した台帳は、オペレーターが確認するまで、すべての支出を拒否します。複数の agentwallet-mcp プロセスで同じ台帳を共有できます(1つのウォレットで2つの MCP クライアントを使用する場合など)。すべての確認の前にファイルが再読み込みされ、プロセス間で排他ロックファイル(<ledger>.lock)を保持したまま確認と追記を行うため、予算を適用するプロセスの数にかかわらず、予算は1つです。30秒より古いロックは、停止したプロセスが残したものと見なされます。ブロードキャストせずに署名したトランザクション(sign_transaction)も、保有者がブロードキャストできるため、送信と同様に予約され、計上されます。2つのものを移動する呼び出し(ネイティブ価値も併せて送るトークン転送など)は2つの行として順番に予約され、どちらかが拒否された場合は両方とも解放されます。list_payments は台帳を読み取り、export_receipts は CSV または JSONL に変換します。また、AGENTWALLET_WEBHOOK_URL には各行の書き込み時にその行が送信されます。

暗号化されたキーファイル

シェル設定やファイル内の平文のキーは、ディスクを読み取れるものなら誰でも読めます。暗号化しましょう。

npx agentwallet-mcp encrypt-keyfile ./plain.key ./agent.keyfile

パスフレーズはターミナルで尋ねられます(スクリプトで使用する場合は AGENTWALLET_KEYFILE_PASSPHRASE から取得されます)。scrypt でキーを導出し、Node 標準の crypto を使って追加の依存関係なしで AES-256-GCM によりデータを暗号化します。AGENTWALLET_KEYFILE または AGENTWALLET_SOLANA_KEYFILE に暗号化したファイルのパスを設定し、AGENTWALLET_KEYFILE_PASSPHRASE または AGENTWALLET_KEYFILE_PASSPHRASE_FILE を設定します。wallet_mode で同じアドレスが表示されることを確認してから、平文のファイルを削除してください。パスフレーズが間違っている場合は、キーを決して含まない固定メッセージが表示されます。

どちらのモードでも、ホスト型 API 経由で利用する x402 ペイウォールでは、次の機能を利用できます。

  • リプレイ保護:すべての x402 支払いについて、オンチェーンで検証し、一意のトランザクションとして追跡します
  • オンチェーン検証:ブロックチェーン上で x402 支払いを直接検証し、finalized コミットメントを使用します

バグ報奨金プログラム:責任ある情報開示に対して50~500ドルを進呈します(詳細)。

リンク

セキュリティ

pay_x402 は、送信リクエストのたびに、またリダイレクトの各ホップでも、リクエスト先 URL を検証します。IP リテラルは正規化され([::ffff:127.0.0.1] のような IPv4 マップ IPv6 アドレスを含みます)、ホスト名は名前解決されます。ループバック、プライベート、リンクローカル、キャリアグレード NAT、マルチキャスト、クラウドメタデータへの接続先は拒否されます。

検証と接続では、同じ DNS 応答が使用されます。各ホップで名前解決は 1 回だけ行われ、ソケットはその応答に含まれるアドレスに固定されます。そのため、検証時にはホスト名がパブリックアドレスに解決され、接続時にはプライベートアドレスに解決されることはありません。ホスト名は引き続き Host ヘッダー、TLS SNI、証明書の検証に使用されるため、この固定は正規のエンドポイントには影響しません。

認証情報は、送信先として指定されたオリジンに留まります。エンドポイントが pay_x402 を別のオリジンへリダイレクトする場合、呼び出し元が指定した Authorization、Cookie、X-PAYMENT ヘッダーと、その他すべてのカスタムヘッダーは次のホップに進む前に削除されます。引き継がれるのは、コンテンツネゴシエーションヘッダー(Accept、Accept-Language、Accept-Encoding、User-Agent、Content-Type)のみです。リダイレクトによって POST が GET に変わる場合、本文に関するヘッダーも削除されます。同一オリジンへのリダイレクトでは、ブラウザーと同様にすべてのヘッダーが維持されます。

セキュリティ上の問題は、[email protected] まで非公開でご報告ください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。