mcpField
D
defillama

defillama

github.com/starchild-ai-agentデータ・データベース30329 回インストール1 週間前に更新
リポジトリ

defillama について

defillamaは、DeFiの調査でDefiLlama APIのデータを取得するPythonスクリプト型スキルです。プロトコル、チェーン、利回り、取引量、手数料、ステーブルコイン、ブリッジ、価格を扱います。

主な機能

  1. 01プロトコル、チェーン、TVLの照会
  2. 02ステーブルコインと利回りプールの確認
  3. 03DEX取引量と手数料の集計
  4. 04ブリッジデータとトークン価格の取得
  5. 05Pythonのexports.pyから関数を呼び出し

活用シーン

  1. 01プロトコルまたはチェーンのTVL比較
  2. 02APYによる利回りプールの選定
  3. 03DeFi市場スナップショットの作成
  4. 04トークンの現在価格や過去価格の確認

インストール

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

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

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

同梱ファイルexports.py

詳細

DefiLlama API

スクリプトモードのスキル(PoC)。 このスキルは Anthropic のツールとして登録されていません。 使用するには、このファイルを読み、bash で python を実行し、 exports.py からインポートしてください。以下の スクリプトの使用法 セクションを参照してください。

スクリプトの使用法

このスキルには、すべての関数を含む単一の exports.py が同梱されています。次のように bash ブロックから呼び出してください。

python3 - <<'EOF'
import sys, json
sys.path.insert(0, "/data/workspace/skills/defillama")
from exports import protocols, chains, yield_pools, dex_overview, fees_overview

# Top 10 protocols by TVL
data = protocols()
top = sorted(data, key=lambda p: p.get("tvl") or 0, reverse=True)[:10]
print(json.dumps([{"name": p["name"], "tvl": p["tvl"]} for p in top], indent=2))
EOF

exports.py で利用可能な関数:protocols、chains、protocol_tvl、 yield_pools、dex_overview、fees_overview、revenue_overview、 stablecoins、bridges、treasury。シグネチャについては exports.py を直接読んでください。

Trit: -1 (MINUS - バリデーター/データソース) Color: #4A90D9 (コールドブルー、210°)

DefiLlama の API エコシステムから提供される包括的な DeFi データ。

関数リファレンス(シグネチャ)

すべての関数は exports.py にあります。sys.path.insert(0, "/data/workspace/skills/defillama") の後に bash ブロックから呼び出してください。

プロトコル & TVL
関数説明
protocols()現在の TVL、チェーン内訳、カテゴリを含むすべてのプロトコルを一覧表示します。dict のリストを返します。
protocol(slug)1 つのプロトコルの詳細な履歴(slug は protocols() から取得)。
chains()現在の TVL を含む、サポートされているすべてのチェーン。
chain_tvl_history(chain)1 つのチェーンの日次 TVL シリーズ。
global_tvl_history()グローバルの日次 TVL シリーズ。
ステーブルコイン
関数説明
stablecoins(include_prices=True)チェーンごとの流通供給量を含むすべてのステーブルコイン。
stablecoin_chains()チェーンごとのステーブルコイン合計。
イールド
関数説明
yield_pools()APY、TVL、プロジェクト、チェーンを含むすべてのイールドプール。
yield_chart(pool_id)1 つのプールの過去の APY/TVL(pool_id は yield_pools() から取得)。
出来高 / 手数料 / 収益
関数説明
dex_overview(exclude_chart=True)すべてのチェーンにわたる集計された DEX 出来高。
dex_overview_chain(chain, exclude_chart=True)1 つのチェーンの DEX 出来高。
fees_overview(exclude_chart=True)すべてのプロトコルにわたる集計された手数料+収益。
fees_overview_chain(chain, exclude_chart=True)チェーンごとの手数料内訳。
ブリッジ
関数説明
bridges()出来高統計を含むすべてのブリッジを一覧表示します。
bridge_chain_volume(chain)チェーンごとのブリッジ出来高。
bridge_volume(bridge_id, start_timestamp=None, end_timestamp=None)1 つのブリッジの時系列。
価格
関数説明
current_prices(coins)現在の価格。coins = "ethereum:0x...,coingecko:bitcoin" のようなリスト/文字列。
historical_prices(coins, timestamp)特定の unix タイムスタンプ時点の価格。

マッチングキーワード(インテントトリガー)

ユーザーが次のいずれかについて尋ねた場合に、このスキルを使用してください:

  • TVL:TVL ランキング、プロトコル TVL、チェーン TVL、TVL の変化、DeFi の市場シェア
  • ステーブルコインイールド:ステーブルコインイールド、USDC/USDT APY、低リスクのイールドプール、安全なイールド、債券に似た DeFi
  • イールド / ファーミング:APY ランキング、イールドプールのスクリーニング、ボールトイールド、レンディング APY、借入金利、LSD/LRT イールド
  • DEX / 手数料 / 収益:DEX 出来高、プロトコル手数料、プロトコル収益、収益の成長、どの DEX の収益が最も速く成長しているか
  • フロー / ローテーション:資本フロー、チェーンの流入/流出、ステーブルコインのネットフロー、流動性ローテーション
  • プロトコルリサーチ:プロトコルのファンダメンタルズ、複数プロトコルの比較、セクター比較、DeFi スナップショット/レポート

このスキルがマッチすべき典型的なユーザープロンプト:

  • 「最近最も収益の成長が強い DEX はどれですか?」
  • 「そこそこのリターンがある低リスクのステーブルコインイールドの選択肢をいくつか見つけてください。」
  • 「今日の DeFi 市場スナップショットを作成してください(TVL / 出来高 / 手数料)。」
  • 「過去 30 日間の ETH と SOL のオンチェーンフローの変化を比較してください。」

ベース URL

APIベース URL認証
無料 APIhttps://api.llama.fiなし(キー不要)
Pro APIhttps://pro-api.llama.fi/{API_KEY}パス内のキー /API_KEY/endpoint
Bridge APIhttps://bridges.llama.fiなし

キーのルール: すべての無料エンドポイント(TVL、チェーン、DEX、手数料、価格)には https://api.llama.fi を使用します。 Pro エンドポイント(イールド、デリバティブ、エミッション)にのみ https://pro-api.llama.fi/{API_KEY} を使用します。 環境変数: DEFILLAMA_API_KEY — Pro URL のパスで使用され、HTTP ヘッダーとしては使用されません。

最も一般的なエンドポイント(ここから始める)

DeFi 分析タスクの 90% には、これらの無料エンドポイント(api.llama.fi)を使用します:

タスクエンドポイント例
TVL 上位 N プロトコルGET /protocols.tvl フィールドで並べ替え
単一プロトコルの詳細GET /protocol/{slug}例: /protocol/aave
チェーン TVL 履歴GET /v2/historicalChainTvl/{chain}.date + .tvl フィールド
DEX 出来高GET /overview/dexs?excludeChart=true.total24h、.total7d
プロトコル手数料GET /overview/fees?excludeChart=true.total24h
全チェーン TVLGET /v2/chainsグローバル合計には .tvl を合算

⚠️ Pro エンドポイント(/yields/*、/emissions など)には、URL パス内に DEFILLAMA_API_KEY が必要です。

プロキシ要件(sc-proxy)

偽の API キー(たとえば fake-defillama-key-12345)を使用する場合、リクエストは上流でキーを置き換えられるよう、必ず sc-proxy を経由する必要があります。

  • 環境変数のキー名: DEFILLAMA_API_KEY
  • 自動プロキシ検出の環境変数: PROXY_HOST、PROXY_PORT
  • HTTP_PROXY / HTTPS_PROXY が未設定の場合、直接リクエストが上流に到達し、キーエラーが返される可能性があります。
Python テンプレート(推奨)
import os
import requests

host = os.getenv("PROXY_HOST")
port = os.getenv("PROXY_PORT")
session = requests.Session()
if host and port:
    if ":" in host and not host.startswith("["):
        host = f"[{host}]"  # IPv6-safe
    proxy = f"http://{host}:{port}"
    session.proxies.update({"http": proxy, "https": proxy})

# Free endpoint (no key needed):
r_free = session.get("https://api.llama.fi/protocols", timeout=25)
print("Free:", r_free.status_code)

# Pro endpoint (key in URL path):
api_key = os.environ["DEFILLAMA_API_KEY"]
r_pro = session.get(f"https://pro-api.llama.fi/{api_key}/yields/pools", timeout=25)
print("Pro:", r_pro.status_code)
クイックテストコマンド
set -a && source .env && set +a
python3 - << 'PY'
import os, requests
s = requests.Session()
host, port = os.getenv('PROXY_HOST'), os.getenv('PROXY_PORT')
if host and port:
    if ':' in host and not host.startswith('['):
        host = f'[{host}]'
    p = f'http://{host}:{port}'
    s.proxies.update({'http': p, 'https': p})

# Free endpoint
r1 = s.get('https://api.llama.fi/protocols', timeout=25)
print('free /protocols:', r1.status_code)

# Pro endpoint
k = os.environ['DEFILLAMA_API_KEY']
r2 = s.get(f'https://pro-api.llama.fi/{k}/yields/pools', timeout=25)
print('pro /yields/pools:', r2.status_code)
PY

クイックリファレンス

TVL とプロトコル
# All protocols with TVL
GET /protocols

# Single protocol detail
GET /protocol/{slug}

# Chain TVL
GET /v2/chains
GET /v2/historicalChainTvl/{chain}
価格
# Current prices (chain:address format)
GET /coins/prices/current/{coins}

# Historical
GET /coins/prices/historical/{timestamp}/{coins}

# Chart data
GET /coins/chart/{coins}?period=30d
イールド(Pro)
GET /yields/pools           # All yield pools
GET /yields/chart/{pool}    # Pool history
GET /yields/poolsBorrow     # Borrow rates
GET /yields/perps           # Perp funding
GET /yields/lsdRates        # LSD rates
出来高
GET /overview/dexs?excludeChart=true              # DEX volumes (recommended)
GET /overview/dexs/{chain}?excludeChart=true      # Chain DEX
GET /summary/dexs/{protocol}                       # Protocol detail
GET /overview/options?excludeChart=true           # Options
GET /overview/derivatives?excludeChart=true       # Derivatives (Pro)
手数料と収益
GET /overview/fees?excludeChart=true              # All fees/revenue (recommended)
GET /overview/fees/{chain}?excludeChart=true      # Chain fees
GET /summary/fees/{protocol}                      # Protocol fees
# dataType: dailyFees | dailyRevenue | dailyHoldersRevenue
ブリッジ
# Base: https://bridges.llama.fi
GET /bridges                        # All bridges
GET /bridge/{id}                    # Bridge detail
GET /bridgevolume/{chain}           # Volume by chain
GET /transactions/{id}              # Bridge txs
DAT(デジタル資産トレジャリー)
GET /dat/institutions               # All institutions
GET /dat/institutions/{symbol}      # e.g., MSTR

使用スクリプト

;; See scripts/defillama.bb for full implementation
(require '[defillama :as dl])

;; TVL
(dl/protocols)
(dl/protocol "aave")
(dl/chain-tvl "Ethereum")

;; Prices
(dl/price "ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48")
(dl/price-chart "coingecko:ethereum" {:period "30d"})

;; Yields
(dl/yield-pools)
(dl/pool-chart "747c1d2a-c668-4682-b9f9-296708a3dd90")

;; Volumes
(dl/dex-overview)
(dl/dex-protocol "uniswap")

;; Fees
(dl/fees-overview)
(dl/fees-protocol "hyperliquid")

エンドポイントカテゴリ

無料エンドポイント
  • /protocols、/protocol/{slug}、/tvl/{slug}
  • /v2/chains、/v2/historicalChainTvl
  • /coins/prices/*、/coins/chart/*
  • /overview/dexs、/overview/options
  • /overview/fees、/summary/fees/*
Pro エンドポイント(API キー必須)
  • /yields/* - すべてのイールドエンドポイント(ステーブルコインプール、APY ランキング、借入/パープス/LSD)
  • /overview/derivatives
  • /tokenProtocols/{symbol}
  • /inflows/{protocol}/{timestamp}
  • /chainAssets
  • /emissions、/emission/{protocol}
  • /categories、/forks、/oracles
  • /entities、/treasuries
  • /hacks、/raises
  • /etfs/*、/dat/*
  • bridges.llama.fi 上のブリッジエンドポイント

レスポンスパターン

TVL レスポンス
{"id": "2269", "name": "Aave", "tvl": 5200000000, "chains": ["Ethereum"]}
価格レスポンス
{"coins": {"ethereum:0x...": {"price": 0.999, "symbol": "USDC", "confidence": 0.99}}}
イールドプールレスポンス
{"pool": "uuid", "chain": "Ethereum", "project": "aave-v3", "apy": 3.5, "tvlUsd": 1500000000}

GF(3) 統合

このスキルは、トライアドにおいて MINUS (-1) バリデータとして機能します:

  • 信頼できる DeFi データを提供します
  • プロトコルメトリクスを検証します
  • 実データで分析を制約します

次と組み合わせて使用します:

  • aptos-agent (+1): データに基づいて実行
  • exa-search (0): Web コンテキストで強化

出力形式ガイドライン(中国語/英語クエリ)

DeFi データのレスポンスは常に人間が読める Markdown としてフォーマットしてください。中国語と英語の両方のクエリをサポートします。

数値フォーマット
  • TVL ≥ $1B → $X.XXB、TVL ≥ $1M → $XXXM
  • APY → XX.X%
  • 24 時間変動 → +X.X% または -X.X%
  • 常に単位を含めます: $、%、B(10 億)、M(100 万)
推奨出力テンプレート

TVL リーダーボード:

| # | Protocol | TVL | Chains |
|---|--------------|-----|-----------|
| 1 | Aave V3      | $24.7B | Ethereum, Arbitrum |

イールドプール:

| Pool | APY | TVL | Risk |
|---------|-----|-----|---------|
| USDC    | 5.2% | $500M | ✅ Low risk |

マーケットスナップショット:

| Metric | Value |
|------------|-----------|
| Total TVL       | $96B       |
| DEX 24h volume  | $5.7B      |
| Fees 24h        | $49M       |
リスクラベル

イールドプールには常にリスク指標を含めてください:

  • ✅ 低リスク — 安定した APY < 20%、IL リスクなし
  • ⚠️ 中リスク — APY 20-100%、または IL リスクあり
  • 🔴 高リスク — APY > 100%(インセンティブ主導の可能性が高く、持続不可能)
ヒント: excludeChart パラメータ

出来高/手数料の概要エンドポイントでは、レスポンスサイズを削減するために常に ?excludeChart=true を追加してください:

GET /overview/dexs?excludeChart=true    # DEX volumes (much faster)
GET /overview/fees?excludeChart=true    # Fee data (much faster)

よくある落とし穴と注意点

1. 無料エンドポイントの誤ったベース URL

❌ 誤り: https://pro-api.llama.fi/protocols → 404 "Path needs to start with /yields/..." を返します ✅ 正しい: https://api.llama.fi/protocols

無料エンドポイントは pro-api.llama.fi を経由しません。

2. API キーなしの Pro エンドポイント

❌ 誤り: https://pro-api.llama.fi/yields/pools → 401 または誤ったルート ✅ 正しい: https://pro-api.llama.fi/{DEFILLAMA_API_KEY}/yields/pools

API キーはヘッダーではなく URL パス に含まれます。

3. Volume/Fee エンドポイントで excludeChart=true が欠落

このパラメータがないと、/overview/dexs は大きなチャート履歴配列を返します。 サマリークエリには常に ?excludeChart=true を追加してください。

4. TVL の null 値の扱い

プロトコルを TVL でソートする場合は、まずフィルタリングします:

valid = [p for p in protocols if isinstance(p.get('tvl'), (int, float)) and p['tvl'] > 0]
5. ステーブルコインと TVL

DefiLlama のチェーン TVL には、ステーブルコインだけでなくすべての DeFi 資産が含まれます。 ステーブルコイン固有のフローには、stablecoins.llama.fi API を使用してください (pro-api とは別です)。 「ステーブルコインフロー」について尋ねられた場合、チェーン TVL の変化は妥当な近似値です。

6. Yields プール UUID

/yields/pools の pool フィールドは "747c1d2a-c668-4682-b9f9-296708a3dd90" のような UUID です。 /yields/chart/{pool} の履歴には、この UUID (トークンアドレスではない) を使用してください。

7. ステーブルコイン利回りスクリーニングのベースライン

「保守的なステーブルコイン利回り」のリクエストには、このベースラインフィルターから始めてください:

  • stablecoin == true
  • tvlUsd >= 50_000_000
  • apy が 2 から 20 の間 (極端なインセンティブスパイクを除外)
  • ilRisk == "no"
  • 保守的なプロファイルには exposure == "single" を推奨

ワークフロー例 (エージェントレシピ)

レシピ 1: DeFi TVL トップ 10 (1 回の呼び出し)
r = requests.get("https://api.llama.fi/protocols")
protocols = r.json()
top10 = sorted([p for p in protocols if p.get('tvl',0) > 0], key=lambda x: x['tvl'], reverse=True)[:10]
# Output: markdown table with | # | Protocol | TVL | Chain |
レシピ 2: ETH 対 SOL の 30 日間 TVL 比較 (2 回の呼び出し)
r1 = requests.get("https://api.llama.fi/v2/historicalChainTvl/Ethereum")
r2 = requests.get("https://api.llama.fi/v2/historicalChainTvl/Solana")
# Filter last 30d: [d for d in r1.json() if d['date'] >= time.time() - 30*86400]
# Output: | Chain | TVL 30d ago | TVL today | Change % |
レシピ 3: ステーブルコイン利回り候補リスト (1 回の呼び出し)
r = requests.get(f"https://pro-api.llama.fi/{API_KEY}/yields/pools")
raw = r.json()
pools = raw.get('data', raw) if isinstance(raw, dict) else raw
safe = [p for p in pools
        if p.get('stablecoin') is True
        and (p.get('tvlUsd') or 0) >= 50_000_000
        and (p.get('apy') or 0) >= 2
        and (p.get('apy') or 0) <= 20
        and p.get('ilRisk') == 'no']
top = sorted(safe, key=lambda x: x.get('apy', 0), reverse=True)[:10]
# Output: | Project | Chain | Symbol | APY | TVL | Risk |
レシピ 4: DeFi 市場スナップショット (3 回の呼び出し)
chains = requests.get("https://api.llama.fi/v2/chains").json()
dexs   = requests.get("https://api.llama.fi/overview/dexs?excludeChart=true").json()
fees   = requests.get("https://api.llama.fi/overview/fees?excludeChart=true").json()
# total_tvl = sum(c['tvl'] for c in chains if isinstance(c.get('tvl'), (int,float)))
# Output: snapshot table with TVL, DEX 24h vol, Fee 24h
レシピ 5: プロトコル TVL スパイク分析 (2 回の呼び出し)
r1 = requests.get("https://api.llama.fi/protocols")  # find protocol with big change_1d
r2 = requests.get(f"https://api.llama.fi/protocol/{slug}")  # get chainTvls detail
# Output: | Hypothesis | Explanation | How to verify | (table + step-by-step verification)

ステーブルコインデータ

ステーブルコイン固有の分析 (一般的な TVL とは異なります) には、stablecoins API を使用してください:

# Stablecoins overview (separate from pro-api)
GET https://stablecoins.llama.fi/stablecoins?includePrices=true

# Chain-specific stablecoin data
GET https://stablecoins.llama.fi/stablecoincharts/{chain}
# chain = "Ethereum", "Solana", "BSC", etc.

# All chains stablecoin summary
GET https://stablecoins.llama.fi/stablecoinchains

ユーザーが「ステーブルコインの純フロー」や「ステーブルコインの流入」について尋ねた場合:

  1. 30 日間のステーブルコイン TVL 変化には stablecoincharts/{chain} を使用してください (一般的な TVL より正確です)
  2. または、stablecoin API が利用できない場合は /v2/historicalChainTvl/{chain} を近似値として使用してください

Yields プールデータの扱い

/yields/pools のレスポンスは {"data": [...], "status": "success"} です:

r = session.get(f"https://pro-api.llama.fi/{api_key}/yields/pools")
raw = r.json()
pools = raw.get('data', raw) if isinstance(raw, dict) else raw
# Filter example: TVL > $50M and APY > 0
filtered = [p for p in pools if p.get('tvlUsd', 0) >= 50_000_000 and (p.get('apy') or 0) > 0]

主要なプールフィールド:

フィールド型説明
poolUUID 文字列一意のプール識別子
chain文字列チェーン名
project文字列プロトコル名
symbol文字列トークンペア (例: "USDC-WETH")
tvlUsd数値USD 建ての TVL
apy数値現在の APY %
apyBase数値ベース APY (貸付/取引手数料)
apyReward数値インセンティブ APY (トークン報酬)
ilRisk"yes"/"no"インパーマネントロスリスク
exposure"single"/"multi"単一資産か複数資産かのエクスポージャー
apyPct7D数値過去 7 日間の APY 変化

コメント