mcpField
1
1inch

1inch

github.com/starchild-ai-agentその他30352 回インストール6 日前に更新
リポジトリ

1inch について

エージェント向けの 1inch 取引スキルです。ローカルの Python スクリプトで 1inch API とウォレットサービスを呼び出し、トークン検索、見積もり、承認、スワップを行います。スクリプトは JSON を出力し、一連のスワップ後に残高変化を確認します。

主な機能

  1. 01チェーン上のトークン一覧と検索
  2. 02スワップ見積もりの取得
  3. 03Allowance の確認と承認送信
  4. 04トークンスワップの実行
  5. 05見積もり、スワップ、残高確認の一括処理

活用シーン

  1. 01対応チェーンのトークンを検索
  2. 02スワップ前に見積もりを確認
  3. 03トークン承認を確認または送信
  4. 04スワップ後の残高変化を検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/starchild-ai-agent/official-skills --skill 1inch

インストール後、Claude Code で/1inchを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

__init__.py
_trade_report.py
client.py
exports.py
fusion_client.py
fusion_tools.py
orderbook_tools.py
tools.py
scripts/
_cost_track.py
_oneinch_lib.py
approve.py
check_allowance.py
quote.py
run_cross_chain_flow.py
run_limit_order_flow.py
run_limit_order_v2.py
run_swap_flow.py
swap.py
test_create_limit_order_v3.py
tokens.py
scripts/fusion_node/
build_order.js
package.json

詳細

1inch (スクリプトファースト、インストールしてすぐ使える)

このスキルはあなたのアーキテクチャ向けに設計されています: プラットフォームが注入するツールに依存しないでください。

  • ✅ skills/1inch/scripts/ 配下のスキルローカルスクリプトのみを使用します
  • ✅ エージェントは bash (python3 ...) 経由でスクリプトを実行します
  • ✅ oneinch_* ツール呼び出しは不要です

このバージョンが「tool not found」を解決する理由

旧設計は実行時のツール登録 (oneinch_quote、oneinch_swap、...) に依存していました。 ツールの注入が失敗すると、エージェントはブロックされてしまいます。

新設計では決定的なローカルスクリプトを使用します:

  1. 1inch HTTP API を直接呼び出す
  2. ウォレットサービスを直接呼び出す (/.fly/api 経由の OIDC)
  3. JSON 結果を出力する

そのため、インストール後はエージェントが常に実行可能なパスを持ちます。


ファイル

  • scripts/_oneinch_lib.py — 共有クライアント + ウォレット/OIDC ヘルパー
  • scripts/tokens.py — トークンの検索/一覧
  • scripts/quote.py — クォートのみ
  • scripts/check_allowance.py — アローランスの確認
  • scripts/approve.py — approve トランザクションのブロードキャスト
  • scripts/swap.py — スワップの実行 (任意で自動 approve)
  • scripts/run_swap_flow.py — ワンコマンドフロー (クォート + 任意の approve + スワップ + 取引後の残高検証)

環境

必須:

  • ONEINCH_API_KEY
  • WALLET_SERVICE_URL (デフォルトのフォールバックあり)
  • 1inch API 向けの sc-proxy 接続性 (必須)

前提:

  • OIDC トークンの発行のために /.fly/api unix ソケットを持つ Fly Machine 上で実行されていること。
sc-proxy の要件 (重要)

このスキルは 1inch 呼び出しを sc-proxy 経由で強制します。

  • まず HTTP_PROXY/HTTPS_PROXY からプロキシを読み取り、なければ PROXY_HOST + PROXY_PORT にフォールバックします。
  • プロキシの環境変数が見つからない場合、スクリプトはサイレントに直接接続するのではなく、明確なエラーで即座に失敗します。

対応チェーン

ethereum, arbitrum, base, optimism, polygon, bsc, avalanche, gnosis


エージェントの実行ルール (重要)

ユーザーが 1inch の操作を求めた場合、次の正確なパターンに従ってください:

  1. 絶対に oneinch_* ツールを呼び出さない
  2. bash + python3 skills/1inch/scripts/<script>.py ... でローカルスクリプトを実行する
  3. JSON 出力を解析し、簡潔な要約で応答する
  4. 書き込み操作については、常にウォレット残高ツール (利用可能な場合) またはスクリプトベースのチェックの再実行で事後確認を行う
標準的なマッピング
  • 「トークンアドレスを調べる / トークンを一覧表示する」 → tokens.py
  • 「先にクォートする / いくらに交換できるか見る」 → quote.py
  • 「承認を確認する」 → check_allowance.py
  • 「承認する」 → approve.py
  • 「交換を実行する」 → swap.py

コマンド例

1) トークンを検索
python3 skills/1inch/scripts/tokens.py --chain polygon --search POL --limit 10
2) クォート: 1 USDC -> POL
python3 skills/1inch/scripts/quote.py --chain polygon --from USDC --to POL --amount 1
3) アローランスを確認 (USDC)
python3 skills/1inch/scripts/check_allowance.py --chain polygon --token USDC
4) USDC を承認 (無制限)
python3 skills/1inch/scripts/approve.py --chain polygon --token USDC
5) スワップ: 1 USDC -> POL (必要に応じて自動 approve)
python3 skills/1inch/scripts/swap.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve
6) ワンコマンドのフルフロー (推奨)
python3 skills/1inch/scripts/run_swap_flow.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve

必要に応じてリトライを調整:

python3 skills/1inch/scripts/run_swap_flow.py --chain polygon --from USDC --to POL --amount 1 --slippage 1.0 --auto-approve --swap-retries 3 --swap-retry-backoff 2

「X USDC 分の POL を買う」のデフォルトワークフロー

推奨される決定的な手順:

  1. run_swap_flow.py --auto-approve
  2. JSON 結果を読み取り、クォート、トランザクション送信結果、検証の差分を報告する

フォールバックの手動手順 (ユーザーがステップバイステップを求めた場合):

  1. quote.py (予想される出力を確認)
  2. swap.py --auto-approve
  3. 最新の残高で検証する (前後)

スワップがウォレットポリシーによる拒否を返した場合:

  • wallet-policy スキルをロードする
  • ワイルドカードのベースライン (DENY exportPrivateKey、ALLOW *) を提案する
  • ユーザーが確認した後、スワップコマンドを再実行する

エラーハンドリング

  • Unknown chain → ユーザーに対応チェーンを選ぶよう求める
  • 1inch API 4xx/5xx → 生のエラーを表示する。run_swap_flow.py は一時的な /swap の 5xx を自動的にリトライします (デフォルト: 指数バックオフで 2 回リトライ)
  • 1inch からの Not enough <token> balance → シンボルが別のトークンバリアント (例: USDC.e と USDC) にマッピングされている可能性が高いです。tokens.py から明示的なトークンアドレスを指定して再実行してください
  • Wallet API 4xx/5xx → 生のエラーを表示し、tx ハッシュを捏造しない
  • insufficient allowance (自動 approve なし) → --auto-approve を付けて再実行するか、approve.py を実行する
  • policy による拒否 → ポリシー更新を提案してからリトライする

注意事項

  • 金額入力は人間単位です(例: --amount 1 = 1 USDC)。小数点変換はスクリプトが処理します。
  • トークンシンボルの解決は、選択したチェーン上の 1inch /tokens から行われます。
  • チェーン上でシンボルに複数のバリアントがある場合(例: USDC / USDC.e)、曖昧さを避けるためにトークンコントラクトアドレスを明示的に渡すことを推奨します。
  • ネイティブトークンを入力する場合は、native / ETH を使用してください。

クイックスモークテスト

python3 skills/1inch/scripts/quote.py --chain polygon --from USDC --to POL --amount 1

これが動作すれば、スキルはスクリプトモードで機能しています。


スクリプトリファレンス(CLI 引数)

このスキルはスクリプトを公開しています(Python 関数ではありません)。bash + python3 skills/1inch/scripts/<name>.py <args> で実行してください。すべてのスクリプトは stdout に JSON を出力します — json.loads(...) でパースするか、そのまま出力を表示してください。

共通引数
引数必須備考
--chainはいethereum、arbitrum、base、optimism、polygon、bsc、avalanche、gnosis のいずれか
--from、--toはい(swap/quote)トークンシンボル(USDC、POL など)またはコントラクトアドレス。ネイティブガストークンには native / ETH を使用してください。
--amountはい(swap/quote)人間単位(例: 1 = 1 USDC、小数点変換は内部で処理されます)
--slippage任意パーセント(デフォルト 1.0)
--tokenはい(allowance/approve)トークンシンボルまたはアドレス
--auto-approve任意フラグswap/run_swap_flow のみ — allowance が不足している場合に approve を自動ブロードキャストします
--swap-retries任意run_swap_flow のみ — /swap の 5xx でリトライします(デフォルト 2)
--swap-retry-backoff任意run_swap_flow のみ — バックオフ秒数(デフォルト 1)
スクリプト
スクリプト目的必須引数
tokens.pyチェーン上のトークンを一覧表示または検索--chain + --search SYM および/または --limit N
quote.pyクォートを取得(ブロードキャストなし)--chain --from --to --amount
check_allowance.py1inch ルーターへの ERC-20 allowance を確認--chain --token
approve.pyapprove トランザクションをブロードキャスト(無制限)--chain --token
swap.pyスワップを実行--chain --from --to --amount(+ 任意の --slippage、--auto-approve)
run_swap_flow.pyワンコマンドでクォート +(自動 approve)+ スワップ + トレード後の残高確認swap.py と同じ(+ 任意のリトライ引数)
推奨フロー

ユーザーからの「X を Y にスワップ」というあらゆるリクエストに対して、デフォルトで run_swap_flow.py --auto-approve を使用してください。これはチェーン全体をエンドツーエンドで処理し、ブロードキャスト後の ウォレット残高読み取りによって検証します。

ユーザーが「クォートだけで、実行はしないで」と依頼した場合 → quote.py のみ。

出力スキーマ(run_swap_flow.py)

以下のトップレベルキーを持つ JSON:

  • quote — {fromToken, toToken, fromAmount, toAmount, estimatedGas, ...}
  • approve — {required, txHash, success}(--auto-approve の場合のみ)
  • swap — {txHash, success, error?}
  • verification — {from_balance_before, from_balance_after, to_balance_before, to_balance_after, delta_in, delta_out}

ウォレットがポリシー拒否を返した場合、swap.success = false となり、 swap.error に policy が含まれます。wallet-policy スキルを読み込み、 ワイルドカードのベースラインを提案してから再実行してください。

コメント