coinfello について
CoinFello CLI Skillは、Node.jsのコマンドラインツールでCoinFelloを利用する方法を説明します。スマートアカウント作成、SIWE認証、プロンプトによる取引に対応し、委任要求は明示的に承認してから署名・送信します。
主な機能
- 01スマートアカウントの作成と確認
- 02SIWEによるサインイン
- 03自然言語プロンプトの送信
- 04委任要求の確認と承認
- 05署名デーモンの管理
- 06RPCエンドポイントの設定
活用シーン
- 01CoinFelloのスマートアカウント作成
- 02読み取り専用または取引プロンプトの送信
- 03実行前の委任要求の承認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ coinfello/ agent-cli --skill coinfelloインストール後、Claude Code で/coinfelloを入力して読み込まれたか確認します。
同梱ファイルreferences/REFERENCE.md
詳細
CoinFello CLI スキル
npx @coinfello/agent-cli@latest CLI を使用して CoinFello とやり取りします。この CLI は、スマートアカウントの作成、SIWE 認証、委任の管理、プロンプトに基づくトランザクション、トランザクションのステータス確認に対応しています。
前提条件
- Node.js 20 以降(npx は Node.js に含まれています)
CLI は npx @coinfello/agent-cli@latest から利用できます。手動でのビルド手順は不要です。
環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
COINFELLO_BASE_URL | いいえ | https://app.coinfello.com/ | CoinFello API のベース URL |
RPC_BASE_URL | いいえ | — | QuickNode RPC のベース URL(例:https://your-endpoint-name) |
RPC_API_KEY | いいえ | — | QuickNode API キー |
RPC_URL_OVERRIDE | いいえ | — | 開発/テスト用のカスタム RPC URL の上書き設定(他のすべての RPC 設定より優先) |
RPC_BASE_URL と RPC_API_KEY の両方が設定されている場合、CLI は対応チェーン(Ethereum、Optimism、BSC、Polygon、Mantle、Base、Arbitrum、Linea、Sepolia、Base Sepolia)の RPC リクエストを QuickNode 経由でルーティングします。いずれかが設定されていない場合、またはチェーンが対応していない場合は、そのチェーンのデフォルトのパブリック RPC にフォールバックします。
RPC_URL_OVERRIDE(例:http://127.0.0.1:8545)を設定すると、チェーンや他の RPC 設定に関係なく、すべての RPC 呼び出しがカスタム URL 経由でルーティングされます。
セキュリティに関する注意
このスキルは、次の機密性の高い操作を実行します。
- キーの生成と保存:デフォルトでは、
create_accountはハードウェアで保護された P256 キーをmacOS Secure Enclave(利用可能な場合は TPM 2.0)で生成します。秘密鍵がハードウェアの外に出ることはなく、エクスポートもできません。公開鍵の座標とキーのタグのみが~/.clawdbot/skills/coinfello/config.jsonに保存されます。ハードウェアキーに対応していない場合、CLI は警告を表示し、ソフトウェア秘密鍵にフォールバックします。--use-unsafe-private-keyを指定して、平文のソフトウェアキーを明示的に使用することもできます。この場合、生の秘密鍵が設定ファイルに保存されます。これは開発とテストのみを目的としています。 - 署名者デーモン:
signer-daemon startを実行すると、Touch ID/パスワードで一度認証し、その認証がキャッシュされます。以降の署名操作では、このキャッシュされたコンテキストが再利用されるため、認証プロンプトが繰り返し表示されません。デーモンは、アクセス権が制限された(0600)ユーザー専用の Unix ドメインソケットを介して通信します。デーモンが実行されていない場合、署名操作は直接実行にフォールバックし、そのたびに Touch ID を求められます。 - セッショントークンの保存:
sign_inを実行すると、SIWE セッショントークンが同じ設定ファイルに保存されます。 - 委任への署名:
send_promptを実行すると、サーバーから委任リクエストを受け取り、ローカルファイルに保存することがあります。approve_delegation_requestを実行すると、委任が作成されて署名され、CoinFello API に送信されます。
委任のフローを実行する前に、COINFELLO_BASE_URL で設定された CoinFello API エンドポイントが信頼できることを確認してください。
クイックスタート
# 1. Start the signing daemon (optional, but avoids repeated Touch ID prompts)
npx @coinfello/agent-cli@latest signer-daemon start
# 2. Create a smart account (uses Secure Enclave by default)
npx @coinfello/agent-cli@latest create_account
# 3. Sign in to CoinFello with your smart account (SIWE)
npx @coinfello/agent-cli@latest sign_in
# 4. Send a natural language prompt — if a delegation is needed, it will be saved for review
npx @coinfello/agent-cli@latest send_prompt "send 5 USDC to 0xRecipient..."
# 5. Approve the delegation request (if one was saved by send_prompt)
npx @coinfello/agent-cli@latest approve_delegation_request
コマンド
create_account
MetaMask Hybrid スマートアカウントを作成します。デフォルトでは、署名鍵は macOS Secure Enclave(ハードウェアで保護され、エクスポート不可)で生成されます。Secure Enclave を利用できない場合、CLI は警告を表示し、ソフトウェア鍵にフォールバックします。ソフトウェア鍵を平文で使用する場合は、--use-unsafe-private-key を渡してください(開発/テスト専用)。
npx @coinfello/agent-cli@latest create_account [--use-unsafe-private-key]
- デフォルト(Secure Enclave):ハードウェア内で P256 鍵を生成し、
key_tag、public_key_x、public_key_y、key_id、smart_account_addressを~/.clawdbot/skills/coinfello/config.jsonに保存します。秘密鍵が Secure Enclave の外に出ることはありません。 --use-unsafe-private-key:ランダムな secp256k1 秘密鍵を生成し、設定ファイルに平文で保存します。開発およびテスト専用です。send_promptの前に実行する必要があります
get_account
ローカル設定から現在のスマートアカウントアドレスを表示します。
npx @coinfello/agent-cli@latest get_account
- 保存されている
smart_account_addressを出力します - まだアカウントが作成されていない場合は、エラーで終了します
sign_in
Sign-In with Ethereum(SIWE)とスマートアカウントを使用して CoinFello に認証します。セッショントークンをローカル設定に保存します。
npx @coinfello/agent-cli@latest sign_in
- 設定に保存されている秘密鍵を使用してサインインします
- セッショントークンを
~/.clawdbot/skills/coinfello/config.jsonに保存します - 以降の
send_prompt呼び出しでは、セッショントークンが自動的に読み込まれます - 認証が必要なフローでは、
create_accountの後、send_promptの前に実行する必要があります
set_delegation
署名済みの親委任(JSON)をローカル設定に保存します。
npx @coinfello/agent-cli@latest set_delegation '<delegation-json>'
<delegation-json>— MetaMask Smart Accounts Kit のDelegationオブジェクトを表す JSON 文字列です
new_chat
次回の send_prompt で新しい会話を開始できるよう、保存済みのチャットセッション ID をローカル設定から削除します。
npx @coinfello/agent-cli@latest new_chat
~/.clawdbot/skills/coinfello/config.jsonからchat_idを削除します- 会話コンテキストをリセットする場合(たとえば、コンテキストウィンドウのエラーが発生した後)に使用します
signer-daemon
Secure Enclave 署名デーモンを管理します。デーモンを起動すると、Touch ID/パスワードで一度認証し、その認証をキャッシュするため、以降の署名操作(アカウント作成、サインイン、委任への署名)では再度プロンプトが表示されません。
npx @coinfello/agent-cli@latest signer-daemon start # Start daemon (one-time auth)
npx @coinfello/agent-cli@latest signer-daemon status # Check if daemon is running
npx @coinfello/agent-cli@latest signer-daemon stop # Stop the daemon
- デーモンが実行されていない場合、すべての Secure Enclave 操作は直接実行にフォールバックし、その都度 Touch ID の入力を求めます
- デーモンは任意です。デーモンがなくても、すべてのコマンドを使用できます
send_prompt
自然言語のプロンプトを CoinFello に送信します。アクションの実行にサーバーが委任を必要とする場合、CLI は委任リクエストをローカルファイルに保存し、確認用の詳細をターミナルに記録します。委任は自動的には署名されません。approve_delegation_request で明示的に承認する必要があります。
npx @coinfello/agent-cli@latest send_prompt "<prompt>"
次のエラーが表示された場合:
Failed to send prompt: Conversation request failed (400): {"error":"Your input exceeds the context window of this model. Please adjust your input or start a new chat and try again."}
新しいコンテキストウィンドウでチャットを開始するため、npx @coinfello/agent-cli@latest new_chat を実行してください。
内部での処理:
/api/v1/automation/coinfello-agentsから利用可能なエージェントを取得し、プロンプトを CoinFello の会話エンドポイントに送信します- サーバーが読み取り専用の応答(
clientToolCallsもtxn_idもない応答)を返した場合 → 応答テキストを出力して終了します - サーバーがツール呼び出しなしで
txn_idを直接返した場合 → それを出力して終了します - サーバーが
chainIdとscopeを含むask_for_delegationクライアントツール呼び出しを送信した場合:- 委任リクエスト(scope、チェーン ID、呼び出し ID、チャット ID)を
~/.clawdbot/skills/coinfello/pending_delegation.jsonに保存します - 委任リクエストの概要をわかりやすくターミナルに記録します
- 署名せずに終了します。承認するには
approve_delegation_requestを実行してください
- 委任リクエスト(scope、チェーン ID、呼び出し ID、チャット ID)を
approve_delegation_request
send_prompt によって保存された保留中の委任リクエストを承認して署名し、CoinFello に送信します。
npx @coinfello/agent-cli@latest approve_delegation_request
内部で行われる処理:
~/.clawdbot/skills/coinfello/pending_delegation.jsonから保留中の委任を読み込みます- CoinFello の委任先アドレスを取得します
- 委任リクエストに含まれるチェーン ID を使ってスマートアカウントを再構築します
- スコープを解析してサブ委任を作成します(スマートアカウントがまだオンチェーンにデプロイされていない場合は、ERC-6492 署名でラップします)
chatIdとcallIdを添えて、署名済みの委任をclientToolCallResponseとして返送します- 保留中の委任ファイルを消去します
- 追跡用の
txn_idを返します
よく使われるワークフロー
基本:プロンプトの送信(サーバー主導の委任)
# Start the signing daemon (optional, reduces Touch ID prompts)
npx @coinfello/agent-cli@latest signer-daemon start
# Create account if not already done (uses Secure Enclave by default)
npx @coinfello/agent-cli@latest create_account
# Sign in (required for delegation flows)
npx @coinfello/agent-cli@latest sign_in
# Send a natural language prompt — if a delegation is needed, it will be saved for review
npx @coinfello/agent-cli@latest send_prompt "send 5 USDC to 0xRecipient..."
# Review the delegation request logged to the terminal, then approve it
npx @coinfello/agent-cli@latest approve_delegation_request
読み取り専用のプロンプト
トランザクションを必要としないプロンプトもあります。CLI はこれを自動的に検出し、応答を表示するだけです。
npx @coinfello/agent-cli@latest send_prompt "what is the chain ID for Base?"
ガス代の概算
実際のオンチェーンガス代はネットワークによって異なります。L2 チェーンにメインネット Ethereum のガス価格を適用しないでください。
| ネットワーク | スワップ/送金のガス代 |
|---|---|
| Base | $0.0003 – $0.0006 |
これらは、通常のネットワーク状況における概算範囲です。Base などの L2 は Ethereum メインネットより大幅に安価です。
エッジケース
- スマートアカウントがない:
send_promptの前にcreate_accountを実行してください。CLI は設定内に保存された秘密鍵とアドレスを確認します。 - サインインしていない:サーバーで認証が必要な場合は、
send_promptの前にsign_inを実行してください。 - 無効なチェーン名:CLI は有効な viem のチェーン名を一覧表示してエラーを返します。
- サポート対象外のチェーン:CoinFello のインフラストラクチャと MetaMask の委任コントラクトを利用できないチェーンは、CLI によって拒否されます。サポート対象のチェーン:Ethereum、OP Mainnet、BNB Smart Chain、Polygon、Mantle、Base、Arbitrum One、Linea、Sepolia、Base Sepolia。それ以外のチェーンでスマートアカウントに資金を入金すると、資金が永久にロックされます。
- 読み取り専用の応答:サーバーがトランザクションを伴わないテキスト応答を返した場合、CLI はその内容を表示して終了し、委任は作成しません。
バグ報告とサポート
トラブルシューティングの手順に従っても解決できないバグや予期しない動作が発生した場合は、問題の説明と関連するエラー出力を [email protected] にメールでお送りください。
リファレンス
設定スキーマ、サポート対象のチェーン、API の詳細、スコープの種類、トラブルシューティングについては、references/REFERENCE.md を参照してください。