mcpField
C
coinfello

coinfello

github.com/coinfelloその他847 回インストール28 週間前に更新
リポジトリ

coinfello について

CoinFello CLI Skillは、Node.jsのコマンドラインツールでCoinFelloを利用する方法を説明します。スマートアカウント作成、SIWE認証、プロンプトによる取引に対応し、委任要求は明示的に承認してから署名・送信します。

主な機能

  1. 01スマートアカウントの作成と確認
  2. 02SIWEによるサインイン
  3. 03自然言語プロンプトの送信
  4. 04委任要求の確認と承認
  5. 05署名デーモンの管理
  6. 06RPCエンドポイントの設定

活用シーン

  1. 01CoinFelloのスマートアカウント作成
  2. 02読み取り専用または取引プロンプトの送信
  3. 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 を実行してください。

内部での処理:

  1. /api/v1/automation/coinfello-agents から利用可能なエージェントを取得し、プロンプトを CoinFello の会話エンドポイントに送信します
  2. サーバーが読み取り専用の応答(clientToolCalls も txn_id もない応答)を返した場合 → 応答テキストを出力して終了します
  3. サーバーがツール呼び出しなしで txn_id を直接返した場合 → それを出力して終了します
  4. サーバーが chainId と scope を含む ask_for_delegation クライアントツール呼び出しを送信した場合:
    • 委任リクエスト(scope、チェーン ID、呼び出し ID、チャット ID)を ~/.clawdbot/skills/coinfello/pending_delegation.json に保存します
    • 委任リクエストの概要をわかりやすくターミナルに記録します
    • 署名せずに終了します。承認するには approve_delegation_request を実行してください
approve_delegation_request

send_prompt によって保存された保留中の委任リクエストを承認して署名し、CoinFello に送信します。

npx @coinfello/agent-cli@latest approve_delegation_request

内部で行われる処理:

  1. ~/.clawdbot/skills/coinfello/pending_delegation.json から保留中の委任を読み込みます
  2. CoinFello の委任先アドレスを取得します
  3. 委任リクエストに含まれるチェーン ID を使ってスマートアカウントを再構築します
  4. スコープを解析してサブ委任を作成します(スマートアカウントがまだオンチェーンにデプロイされていない場合は、ERC-6492 署名でラップします)
  5. chatId と callId を添えて、署名済みの委任を clientToolCallResponse として返送します
  6. 保留中の委任ファイルを消去します
  7. 追跡用の 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 を参照してください。

コメント