PetaSats について
PetaSatsは、AIアプリからBase上のUSDCをBSVに交換するローカルの非カストディアルMCPサーバーです。鍵を端末内に保管し、設定可能な支出制限、交換状態ツール、復旧コマンドを備えています。
主な機能
- 01Base上のUSDCをBSVに交換
- 02ローカルでの鍵生成と保管
- 03送金先と日次上限の設定
- 04見積もり、状態確認、交換ツール
- 05支出の停止と再開
- 06中断後の交換復旧
活用シーン
- 01AIアプリからBSV購入を依頼
- 02交換額と送金先アドレスの制限
- 03交換の進捗とウォレット情報の確認
- 04中断した交換の復旧
MCP 対応
PetaSatsはローカルstdio MCPサーバーとして動作し、対応するMCPクライアントに見積もり、交換、状態確認、ウォレット、出金などのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| to_asset | string | はい | 交換先の資産:USDC または BSV(フェーズ 1 では USDC → BSV のみ対応) |
| amount_in | string | はい | from_asset の金額を最小単位で指定した十進数文字列(例:USDC は小数点以下 6 桁で、"1000000" = 1 USDC。BSV は sats 単位)。 |
| from_asset | string | はい | 交換元の資産:USDC または BSV(フェーズ 1 では USDC → BSV のみ対応) |
詳細
PetaSats MCP
ローカルで動作する、カストディアルではない MCP サーバーを通じて、AI アプリから Base 上の USDC で BSV を購入できます。
できること
PetaSats がサポートしているのは、Base 上の USDC から BSV への交換のみです。秘密鍵はお使いのマシン上で生成・保管されます。
- Base 上のスワップコントラクトに USDC をロックします。
- マーケットメーカーが BSV をロックします。
- キットがマークル証明とブロックヘッダーに照らしてロックを検証し、BSV を請求してシークレットを公開します。
- マーケットメーカーは、そのシークレットを使って USDC を請求します。
スワップの金額は約 5~100 ドルです。購入者ごとに、1 日あたり 3 回、合計 200 ドルまでスワップできます。全体で共有される 1 日あたりの上限も適用されます。標準速度がデフォルトで、BSV の承認を 1 回待ちます。明示的に speed: "fast" を指定すると、双方が同意した場合に限り、最大 25 ドルまで待機時間を短縮できます。
インストールと接続
Node.js 22 以降を使用してください。[email protected] に固定することをおすすめします。
claude mcp add petasats -- npx -y petasats-mcp
Claude Desktop(claude_desktop_config.json)、Cursor(~/.cursor/mcp.json):
{"mcpServers":{"petasats":{"command":"npx","args":["-y","petasats-mcp"]}}}
VS Code(.vscode/mcp.json):
{"servers":{"petasats":{"type":"stdio","command":"npx","args":["-y","petasats-mcp"]}}}
Codex(CLI、IDE 拡張機能、またはアプリ):
codex mcp add petasats -- npx -y petasats-mcp
ローカルの stdio サーバーを起動できるクライアントであれば、コマンドに npx、引数に -y petasats-mcp を指定して使用できます。初回起動時に ~/.petasats にキーが作成されます。保存場所は PETASATS_HOME で変更できます。keys.json をバックアップしてください。これが唯一のコピーです。同じキットホームを使うインスタンスは 1 つだけ起動してください。同じキーのコピーを 2 つ起動すると、互いに確認できない Base の支払いをそれぞれ署名する可能性があります。
キットに資金を入れる
wallet_info で Base アドレスを確認できます。そのアドレスに Base 上の USDC と、ガス代用の少額の ETH を送ってください。0.0002 ETH あれば多くのスワップを実行できます。
使い方
「BSV を 20 ドル分購入して、1... に送って」と尋ねます。
| ツール | 資金を移動する |
|---|---|
| get_quote | いいえ |
| swap_asset_to_bsv | はい |
| wait_for_swap | いいえ |
| swap_status | いいえ |
| wallet_info | いいえ |
| stop_spending | いいえ |
| withdraw_bsv | はい |
| withdraw_base | はい |
| fund_wallet | いいえ — USDC から BSV へのスワップを計画し、見積もりを返すだけです |
| list_liquidity | いいえ |
自分で設定できる上限
~/.petasats/limits.json を作成すると、AI が資金を送れる宛先と、UTC の 1 日あたりのスワップ上限を制限できます。
{
"format": "petasats.limits/1",
"bsvDestinations": ["1BoatSLRHtKNngkdXEeobR76b53LETtpyT"],
"baseDestinations": ["0x1111111111111111111111111111111111111111"],
"maxSwapUsdPerDay": 50,
"allowFastSettlement": false
}
このファイルは自分のユーザーアカウントだけがアクセスできるようにしてください。chmod 600 ~/.petasats/limits.json を実行します。他のユーザーが読み取りまたは書き込みできる上限設定ファイルは、キットが拒否します。資金を移動する操作の前に、ファイルを毎回読み直します。拒否された場合は、上限設定ファイルによって拒否され、資金は送金されなかったことが通知されます。npx petasats-mcp limits を実行すると、設定を確認できます。
stop_spending を実行すると、新しいスワップと出金が直ちに停止します。再開できるのはユーザー本人だけです。npx petasats-mcp resume を実行してください。すでに開始されたスワップの復旧処理は引き続き動作します。
allowFastSettlement: false を設定すると、新しいスワップでの高速決済が禁止されます。このフィールドがない場合は、高速スワップを明示的に要求するとその利用を交渉できます。デフォルトは標準速度です。
これらの制御機能は、キットのツールしか使えない AI から保護するためのものです。お使いの AI アプリがシェルコマンドを実行したり、ファイルを編集したりできる場合は、ユーザーと同じように limits.json や STOP も編集できます。
進行状況と報告
サーバーは AI に操作ガイドを提供します。人が見守っている場合は、各段階で 1 行ずつ報告し、最後にトランザクション ID を含む概要を返します。プログラムに対しては結果のみを返します。報告によってスワップが遅れることはなく、スワップの開始後に確認を求めることもありません。
安全性の仕組み
資金の送金先は、Base 上のスワップコントラクト、キット自身のアドレス、またはユーザーが指定したアドレスに限られます。キットは公開の前に検証を行います。マーケットメーカーの BSV は、ロックから約 4 時間後(24 ブロック後)に返還される可能性があります。スワップが完了しない場合、ユーザーの USDC は約 16 時間後に返金されます。再起動後も復旧処理は再開されます。スワップは一度に 1 件だけ実行し、スワップ中はサーバーを稼働させてください。
高速モードでは、BSV のロックが未承認の状態でも、キットがシークレットを公開します。マーケットメーカーがそのロックを二重支払いすると、スワップの金額を失う可能性があります。高速モードは双方が同意し、金額が 25 ドル以下の場合に限り利用できます。それ以外の場合は、BSV の承認を 1 回待ちます。高速モードを選ぶのは購入者です。speed を省略すると、標準決済が使われます。
コスト
get_quote では、レートと市場中値との差を確認できます。Base のガス代を ETH で支払い、BSV の請求手数料と、deliver_to を指定した場合は少額の追加 BSV 手数料を支払います。プロトコル手数料については get_quote を参照してください。
実行する内容を確認する
npm パッケージは、タグ付きコミットから GitHub Actions でビルドされ、npm provenance 付きで公開されます。npm audit signatures を実行してください。npm のページでは、ビルドとそのコミットおよびワークフローの実行が関連付けられています。dist/petasats-mcp.mjs は難読化されていません。src/ のソースは、各リリースのたびに開発リポジトリからエクスポートされ、内部開発用コメントを削除し、内部名を一般的な名前に置き換えています。それ以外は同一です。
ファイル、状態、復旧
このキットは ~/.petasats を使用します。状態を確認するには npx petasats-mcp status を、処理が中断した後に復旧するには npx petasats-mcp recover を実行してください。
保留中の Base 出金(たとえば手数料の上昇後)は変更せずに再送されます。新しいスワップと Base 出金は、これが確定するまで待機します。保留中の出金を一覧表示するには npx petasats-mcp withdrawals を実行してください。確定済みの nonce が消費されたものの、レシートが見つからない場合は、Base エクスプローラーでトランザクションを確認してから、npx petasats-mcp withdrawal <hash> sent または npx petasats-mcp withdrawal <hash> not-sent を実行して結果を明示的に記録してください。
同じ Base 出金(資産、金額、アドレスが同一)を1時間以内に繰り返すと、再試行の可能性があるとして拒否されます。同じフォルダーで、このキットを使用する AI アプリを2つ同時に実行しないでください。
バージョン 0.2.0 または 0.2.1 で開始したスワップで、USDC ロックが確定しなかった場合、「Waiting for BSV lock」の状態のままになり、新しいスワップと出金がブロックされることがあります。そのスワップの実行中に同じフォルダーを使用した別のキットがなかった場合は、キットの環境で PETASATS_RESOLVE_OLD_STUCK_SWAPS=1 を設定し(たとえば、クライアントのサーバーエントリーに "env":{"PETASATS_RESOLVE_OLD_STUCK_SWAPS":"1"} を設定)、キットを再起動してください。これにより、キットは自身の Base アドレスにゼロ値のトランザクションを送信するため、古いロックが後から確定することはありません。このトランザクションが確定すると、通常は30分以内にスワップが失敗として記録されます。0.2.2 以降で開始したスワップは、この設定なしで解決されます。
トラブルシューティング
busy、limit、rate_limited、unavailable、declined は、何もロックされていないことを意味します。鍵ファイルの権限が正しくない場合は、所有者のみがアクセスできるように戻してください。RPC に問題がある場合は、ネットワーク接続を確認して再試行してください。
セキュリティ、ライセンス、免責事項
SECURITY.md を参照してください。PetaSats は Open BSV License v4 を使用しています。サードパーティーに関する通知は THIRD_PARTY_NOTICES.md に記載されています。このソフトウェアは実験的なものです。少額で使用してください。保証はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。