intentkit 0.8.6.dev2__py3-none-any.whl → 0.8.17__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of intentkit might be problematic. Click here for more details.
- intentkit/__init__.py +1 -1
- intentkit/abstracts/agent.py +4 -5
- intentkit/abstracts/engine.py +5 -5
- intentkit/abstracts/graph.py +10 -5
- intentkit/abstracts/skill.py +6 -144
- intentkit/abstracts/twitter.py +4 -5
- intentkit/clients/__init__.py +3 -2
- intentkit/clients/cdp.py +53 -92
- intentkit/clients/twitter.py +56 -57
- intentkit/clients/web3.py +1 -3
- intentkit/config/config.py +5 -0
- intentkit/core/agent.py +16 -388
- intentkit/core/asset.py +64 -18
- intentkit/core/client.py +1 -1
- intentkit/core/credit.py +19 -20
- intentkit/core/engine.py +26 -11
- intentkit/core/node.py +2 -1
- intentkit/core/prompt.py +53 -15
- intentkit/core/scheduler.py +9 -9
- intentkit/core/statistics.py +6 -7
- intentkit/models/agent.py +256 -176
- intentkit/models/agent_data.py +62 -36
- intentkit/models/agent_schema.json +6 -9
- intentkit/models/app_setting.py +6 -6
- intentkit/models/chat.py +28 -24
- intentkit/models/conversation.py +8 -8
- intentkit/models/credit.py +62 -64
- intentkit/models/db.py +8 -7
- intentkit/models/db_mig.py +2 -2
- intentkit/models/llm.csv +15 -12
- intentkit/models/llm.py +18 -16
- intentkit/models/redis.py +2 -3
- intentkit/models/skill.py +62 -66
- intentkit/models/skills.csv +30 -26
- intentkit/models/user.py +46 -21
- intentkit/skills/acolyt/__init__.py +2 -9
- intentkit/skills/acolyt/ask.py +3 -4
- intentkit/skills/acolyt/base.py +4 -9
- intentkit/skills/aixbt/__init__.py +2 -13
- intentkit/skills/aixbt/base.py +1 -7
- intentkit/skills/aixbt/projects.py +14 -15
- intentkit/skills/allora/__init__.py +2 -9
- intentkit/skills/allora/base.py +4 -9
- intentkit/skills/allora/price.py +3 -4
- intentkit/skills/base.py +175 -52
- intentkit/skills/basename/__init__.py +4 -8
- intentkit/skills/carv/__init__.py +115 -121
- intentkit/skills/carv/base.py +184 -185
- intentkit/skills/carv/fetch_news.py +3 -3
- intentkit/skills/carv/onchain_query.py +4 -4
- intentkit/skills/carv/token_info_and_price.py +5 -5
- intentkit/skills/casino/__init__.py +4 -15
- intentkit/skills/casino/base.py +1 -7
- intentkit/skills/casino/deck_draw.py +5 -8
- intentkit/skills/casino/deck_shuffle.py +6 -6
- intentkit/skills/casino/dice_roll.py +2 -4
- intentkit/skills/cdp/__init__.py +3 -10
- intentkit/skills/cdp/base.py +1 -7
- intentkit/skills/cdp/schema.json +1 -17
- intentkit/skills/chainlist/__init__.py +2 -7
- intentkit/skills/chainlist/base.py +1 -7
- intentkit/skills/chainlist/chain_lookup.py +18 -18
- intentkit/skills/common/__init__.py +2 -9
- intentkit/skills/common/base.py +1 -7
- intentkit/skills/common/current_time.py +1 -2
- intentkit/skills/cookiefun/__init__.py +6 -9
- intentkit/skills/cookiefun/base.py +2 -7
- intentkit/skills/cookiefun/get_account_details.py +7 -7
- intentkit/skills/cookiefun/get_account_feed.py +19 -19
- intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
- intentkit/skills/cookiefun/get_sectors.py +3 -3
- intentkit/skills/cookiefun/search_accounts.py +9 -9
- intentkit/skills/cryptocompare/__init__.py +7 -24
- intentkit/skills/cryptocompare/api.py +2 -3
- intentkit/skills/cryptocompare/base.py +10 -24
- intentkit/skills/cryptocompare/fetch_news.py +4 -5
- intentkit/skills/cryptocompare/fetch_price.py +6 -7
- intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
- intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
- intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
- intentkit/skills/cryptopanic/__init__.py +7 -10
- intentkit/skills/cryptopanic/base.py +51 -55
- intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
- intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
- intentkit/skills/dapplooker/__init__.py +2 -9
- intentkit/skills/dapplooker/base.py +4 -9
- intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
- intentkit/skills/defillama/__init__.py +24 -74
- intentkit/skills/defillama/api.py +6 -9
- intentkit/skills/defillama/base.py +8 -19
- intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_block.py +6 -8
- intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
- intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
- intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
- intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
- intentkit/skills/defillama/config/chains.py +1 -3
- intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
- intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
- intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
- intentkit/skills/defillama/tests/api_integration.test.py +1 -1
- intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
- intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
- intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
- intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
- intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
- intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
- intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
- intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
- intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
- intentkit/skills/defillama/yields/fetch_pools.py +26 -30
- intentkit/skills/dexscreener/__init__.py +97 -102
- intentkit/skills/dexscreener/base.py +125 -130
- intentkit/skills/dexscreener/get_pair_info.py +4 -5
- intentkit/skills/dexscreener/get_token_pairs.py +4 -5
- intentkit/skills/dexscreener/get_tokens_info.py +7 -8
- intentkit/skills/dexscreener/model/search_token_response.py +80 -82
- intentkit/skills/dexscreener/search_token.py +182 -184
- intentkit/skills/dexscreener/utils.py +15 -14
- intentkit/skills/dune_analytics/__init__.py +7 -9
- intentkit/skills/dune_analytics/base.py +48 -52
- intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
- intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
- intentkit/skills/elfa/__init__.py +5 -18
- intentkit/skills/elfa/base.py +10 -14
- intentkit/skills/elfa/mention.py +19 -21
- intentkit/skills/elfa/stats.py +4 -4
- intentkit/skills/elfa/tokens.py +12 -12
- intentkit/skills/elfa/utils.py +26 -28
- intentkit/skills/enso/__init__.py +11 -31
- intentkit/skills/enso/base.py +9 -15
- intentkit/skills/enso/best_yield.py +5 -7
- intentkit/skills/enso/networks.py +3 -9
- intentkit/skills/enso/prices.py +2 -4
- intentkit/skills/enso/route.py +6 -12
- intentkit/skills/enso/tokens.py +4 -16
- intentkit/skills/enso/wallet.py +6 -6
- intentkit/skills/erc20/__init__.py +5 -11
- intentkit/skills/erc721/__init__.py +5 -9
- intentkit/skills/firecrawl/__init__.py +5 -18
- intentkit/skills/firecrawl/base.py +4 -9
- intentkit/skills/firecrawl/clear.py +4 -8
- intentkit/skills/firecrawl/crawl.py +19 -19
- intentkit/skills/firecrawl/query.py +4 -3
- intentkit/skills/firecrawl/scrape.py +17 -22
- intentkit/skills/firecrawl/utils.py +50 -42
- intentkit/skills/github/__init__.py +2 -7
- intentkit/skills/github/base.py +1 -7
- intentkit/skills/github/github_search.py +1 -2
- intentkit/skills/heurist/__init__.py +8 -27
- intentkit/skills/heurist/base.py +4 -9
- intentkit/skills/heurist/image_generation_animagine_xl.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_comics.py +12 -13
- intentkit/skills/heurist/image_generation_arthemy_real.py +12 -13
- intentkit/skills/heurist/image_generation_braindance.py +12 -13
- intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +12 -13
- intentkit/skills/heurist/image_generation_flux_1_dev.py +12 -13
- intentkit/skills/heurist/image_generation_sdxl.py +12 -13
- intentkit/skills/http/__init__.py +4 -15
- intentkit/skills/http/base.py +1 -7
- intentkit/skills/http/get.py +21 -16
- intentkit/skills/http/post.py +23 -18
- intentkit/skills/http/put.py +23 -18
- intentkit/skills/lifi/__init__.py +5 -10
- intentkit/skills/lifi/base.py +1 -7
- intentkit/skills/lifi/token_execute.py +14 -17
- intentkit/skills/lifi/token_quote.py +7 -9
- intentkit/skills/lifi/utils.py +16 -16
- intentkit/skills/moralis/__init__.py +6 -10
- intentkit/skills/moralis/api.py +6 -7
- intentkit/skills/moralis/base.py +5 -10
- intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
- intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
- intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
- intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
- intentkit/skills/morpho/__init__.py +5 -9
- intentkit/skills/nation/__init__.py +4 -9
- intentkit/skills/nation/base.py +5 -10
- intentkit/skills/nation/nft_check.py +3 -4
- intentkit/skills/onchain.py +23 -0
- intentkit/skills/openai/__init__.py +17 -18
- intentkit/skills/openai/base.py +10 -14
- intentkit/skills/openai/dalle_image_generation.py +3 -8
- intentkit/skills/openai/gpt_avatar_generator.py +102 -0
- intentkit/skills/openai/gpt_image_generation.py +4 -8
- intentkit/skills/openai/gpt_image_mini_generator.py +91 -0
- intentkit/skills/openai/gpt_image_to_image.py +4 -8
- intentkit/skills/openai/image_to_text.py +3 -7
- intentkit/skills/openai/schema.json +32 -0
- intentkit/skills/portfolio/__init__.py +11 -35
- intentkit/skills/portfolio/base.py +33 -19
- intentkit/skills/portfolio/token_balances.py +21 -21
- intentkit/skills/portfolio/wallet_approvals.py +17 -18
- intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
- intentkit/skills/portfolio/wallet_history.py +31 -31
- intentkit/skills/portfolio/wallet_net_worth.py +13 -13
- intentkit/skills/portfolio/wallet_nfts.py +19 -19
- intentkit/skills/portfolio/wallet_profitability.py +18 -18
- intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
- intentkit/skills/portfolio/wallet_stats.py +3 -3
- intentkit/skills/portfolio/wallet_swaps.py +19 -19
- intentkit/skills/pyth/__init__.py +4 -10
- intentkit/skills/skills.toml +4 -0
- intentkit/skills/slack/__init__.py +5 -17
- intentkit/skills/slack/base.py +3 -9
- intentkit/skills/slack/get_channel.py +8 -8
- intentkit/skills/slack/get_message.py +9 -9
- intentkit/skills/slack/schedule_message.py +5 -5
- intentkit/skills/slack/send_message.py +3 -5
- intentkit/skills/supabase/__init__.py +7 -23
- intentkit/skills/supabase/base.py +1 -7
- intentkit/skills/supabase/delete_data.py +4 -4
- intentkit/skills/supabase/fetch_data.py +12 -12
- intentkit/skills/supabase/insert_data.py +4 -4
- intentkit/skills/supabase/invoke_function.py +6 -6
- intentkit/skills/supabase/update_data.py +6 -6
- intentkit/skills/supabase/upsert_data.py +4 -4
- intentkit/skills/superfluid/__init__.py +5 -9
- intentkit/skills/system/__init__.py +7 -24
- intentkit/skills/system/add_autonomous_task.py +10 -12
- intentkit/skills/system/delete_autonomous_task.py +2 -2
- intentkit/skills/system/edit_autonomous_task.py +14 -18
- intentkit/skills/system/list_autonomous_tasks.py +3 -5
- intentkit/skills/system/read_agent_api_key.py +6 -4
- intentkit/skills/system/regenerate_agent_api_key.py +6 -4
- intentkit/skills/tavily/__init__.py +3 -12
- intentkit/skills/tavily/base.py +4 -9
- intentkit/skills/tavily/tavily_extract.py +2 -4
- intentkit/skills/tavily/tavily_search.py +4 -6
- intentkit/skills/token/__init__.py +5 -10
- intentkit/skills/token/base.py +7 -11
- intentkit/skills/token/erc20_transfers.py +19 -19
- intentkit/skills/token/token_analytics.py +3 -3
- intentkit/skills/token/token_price.py +13 -13
- intentkit/skills/token/token_search.py +9 -9
- intentkit/skills/twitter/__init__.py +11 -35
- intentkit/skills/twitter/base.py +22 -34
- intentkit/skills/twitter/follow_user.py +2 -6
- intentkit/skills/twitter/get_mentions.py +5 -12
- intentkit/skills/twitter/get_timeline.py +4 -12
- intentkit/skills/twitter/get_user_by_username.py +2 -6
- intentkit/skills/twitter/get_user_tweets.py +5 -13
- intentkit/skills/twitter/like_tweet.py +2 -6
- intentkit/skills/twitter/post_tweet.py +6 -9
- intentkit/skills/twitter/reply_tweet.py +6 -9
- intentkit/skills/twitter/retweet.py +2 -6
- intentkit/skills/twitter/search_tweets.py +4 -12
- intentkit/skills/unrealspeech/__init__.py +2 -7
- intentkit/skills/unrealspeech/base.py +2 -8
- intentkit/skills/unrealspeech/text_to_speech.py +8 -8
- intentkit/skills/venice_audio/__init__.py +98 -106
- intentkit/skills/venice_audio/base.py +117 -121
- intentkit/skills/venice_audio/input.py +41 -41
- intentkit/skills/venice_audio/venice_audio.py +7 -11
- intentkit/skills/venice_image/__init__.py +147 -154
- intentkit/skills/venice_image/api.py +138 -138
- intentkit/skills/venice_image/base.py +185 -192
- intentkit/skills/venice_image/config.py +33 -35
- intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
- intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
- intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
- intentkit/skills/venice_image/image_generation/image_generation_base.py +9 -9
- intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
- intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
- intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
- intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
- intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
- intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
- intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
- intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
- intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
- intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
- intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
- intentkit/skills/venice_image/utils.py +77 -78
- intentkit/skills/web_scraper/__init__.py +5 -18
- intentkit/skills/web_scraper/base.py +21 -7
- intentkit/skills/web_scraper/document_indexer.py +7 -6
- intentkit/skills/web_scraper/scrape_and_index.py +15 -15
- intentkit/skills/web_scraper/utils.py +62 -63
- intentkit/skills/web_scraper/website_indexer.py +17 -19
- intentkit/skills/weth/__init__.py +5 -11
- intentkit/skills/wow/__init__.py +5 -11
- intentkit/skills/x402/__init__.py +61 -0
- intentkit/skills/x402/ask_agent.py +98 -0
- intentkit/skills/x402/base.py +99 -0
- intentkit/skills/x402/http_request.py +117 -0
- intentkit/skills/x402/schema.json +45 -0
- intentkit/skills/x402/x402.webp +0 -0
- intentkit/skills/xmtp/__init__.py +4 -15
- intentkit/skills/xmtp/base.py +5 -5
- intentkit/skills/xmtp/price.py +6 -6
- intentkit/skills/xmtp/swap.py +6 -8
- intentkit/skills/xmtp/transfer.py +4 -6
- intentkit/utils/error.py +2 -2
- intentkit/utils/logging.py +2 -4
- intentkit/utils/s3.py +8 -9
- intentkit/utils/schema.py +100 -0
- intentkit/utils/slack_alert.py +7 -8
- {intentkit-0.8.6.dev2.dist-info → intentkit-0.8.17.dist-info}/METADATA +3 -4
- intentkit-0.8.17.dist-info/RECORD +466 -0
- intentkit/models/generator.py +0 -347
- intentkit-0.8.6.dev2.dist-info/RECORD +0 -457
- {intentkit-0.8.6.dev2.dist-info → intentkit-0.8.17.dist-info}/WHEEL +0 -0
- {intentkit-0.8.6.dev2.dist-info → intentkit-0.8.17.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Tool for fetching specific protocol details via DeFi Llama API."""
|
|
2
2
|
|
|
3
|
-
from typing import Dict, List, Optional, Type
|
|
4
|
-
|
|
5
3
|
from pydantic import BaseModel, Field
|
|
6
4
|
|
|
7
5
|
from intentkit.skills.defillama.api import fetch_protocol
|
|
@@ -24,17 +22,15 @@ class TokenAmount(BaseModel):
|
|
|
24
22
|
"""Model representing token amounts at a specific date."""
|
|
25
23
|
|
|
26
24
|
date: int = Field(..., description="Unix timestamp")
|
|
27
|
-
tokens:
|
|
25
|
+
tokens: dict[str, float] = Field(..., description="Token amounts keyed by symbol")
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
class ChainTVLData(BaseModel):
|
|
31
29
|
"""Model representing TVL data for a specific chain."""
|
|
32
30
|
|
|
33
|
-
tvl:
|
|
34
|
-
tokens:
|
|
35
|
-
|
|
36
|
-
)
|
|
37
|
-
tokensInUsd: Optional[Dict[str, float]] = Field(
|
|
31
|
+
tvl: list[dict[str, float]] = Field(..., description="Historical TVL data points")
|
|
32
|
+
tokens: dict[str, float] | None = Field(None, description="Current token amounts")
|
|
33
|
+
tokensInUsd: dict[str, float] | None = Field(
|
|
38
34
|
None, description="Current token amounts in USD"
|
|
39
35
|
)
|
|
40
36
|
|
|
@@ -53,17 +49,17 @@ class Raise(BaseModel):
|
|
|
53
49
|
name: str = Field(..., description="Protocol name")
|
|
54
50
|
round: str = Field(..., description="Funding round type")
|
|
55
51
|
amount: float = Field(..., description="Amount raised in millions")
|
|
56
|
-
chains:
|
|
52
|
+
chains: list[str] = Field(..., description="Chains involved")
|
|
57
53
|
sector: str = Field(..., description="Business sector")
|
|
58
54
|
category: str = Field(..., description="Protocol category")
|
|
59
55
|
categoryGroup: str = Field(..., description="Category group")
|
|
60
56
|
source: str = Field(..., description="Information source")
|
|
61
|
-
leadInvestors:
|
|
62
|
-
otherInvestors:
|
|
57
|
+
leadInvestors: list[str] = Field(default_factory=list, description="Lead investors")
|
|
58
|
+
otherInvestors: list[str] = Field(
|
|
63
59
|
default_factory=list, description="Other investors"
|
|
64
60
|
)
|
|
65
|
-
valuation:
|
|
66
|
-
defillamaId:
|
|
61
|
+
valuation: float | None = Field(None, description="Valuation at time of raise")
|
|
62
|
+
defillamaId: str | None = Field(None, description="DefiLlama ID")
|
|
67
63
|
|
|
68
64
|
|
|
69
65
|
class Hallmark(BaseModel):
|
|
@@ -79,48 +75,46 @@ class ProtocolDetail(BaseModel):
|
|
|
79
75
|
# Basic Info
|
|
80
76
|
id: str = Field(..., description="Protocol unique identifier")
|
|
81
77
|
name: str = Field(..., description="Protocol name")
|
|
82
|
-
address:
|
|
78
|
+
address: str | None = Field(None, description="Protocol address")
|
|
83
79
|
symbol: str = Field(..., description="Protocol token symbol")
|
|
84
80
|
url: str = Field(..., description="Protocol website")
|
|
85
81
|
description: str = Field(..., description="Protocol description")
|
|
86
82
|
logo: str = Field(..., description="Logo URL")
|
|
87
83
|
|
|
88
84
|
# Chain Info
|
|
89
|
-
chains:
|
|
90
|
-
currentChainTvls:
|
|
91
|
-
chainTvls:
|
|
85
|
+
chains: list[str] = Field(default_factory=list, description="Supported chains")
|
|
86
|
+
currentChainTvls: dict[str, float] = Field(..., description="Current TVL by chain")
|
|
87
|
+
chainTvls: dict[str, ChainTVLData] = Field(
|
|
92
88
|
..., description="Historical TVL data by chain"
|
|
93
89
|
)
|
|
94
90
|
|
|
95
91
|
# Identifiers
|
|
96
|
-
gecko_id:
|
|
97
|
-
cmcId:
|
|
92
|
+
gecko_id: str | None = Field(None, description="CoinGecko ID")
|
|
93
|
+
cmcId: str | None = Field(None, description="CoinMarketCap ID")
|
|
98
94
|
|
|
99
95
|
# Social & Development
|
|
100
|
-
twitter:
|
|
101
|
-
treasury:
|
|
102
|
-
governanceID:
|
|
103
|
-
|
|
104
|
-
)
|
|
105
|
-
github: Optional[List[str]] = Field(None, description="GitHub repositories")
|
|
96
|
+
twitter: str | None = Field(None, description="Twitter handle")
|
|
97
|
+
treasury: str | None = Field(None, description="Treasury information")
|
|
98
|
+
governanceID: list[str] | None = Field(None, description="Governance identifiers")
|
|
99
|
+
github: list[str] | None = Field(None, description="GitHub repositories")
|
|
106
100
|
|
|
107
101
|
# Protocol Relationships
|
|
108
|
-
isParentProtocol:
|
|
102
|
+
isParentProtocol: bool | None = Field(
|
|
109
103
|
None, description="Whether this is a parent protocol"
|
|
110
104
|
)
|
|
111
|
-
otherProtocols:
|
|
105
|
+
otherProtocols: list[str] | None = Field(None, description="Related protocols")
|
|
112
106
|
|
|
113
107
|
# Historical Data
|
|
114
|
-
tokens:
|
|
108
|
+
tokens: list[TokenAmount] = Field(
|
|
115
109
|
default_factory=list, description="Historical token amounts"
|
|
116
110
|
)
|
|
117
|
-
tvl:
|
|
118
|
-
raises:
|
|
119
|
-
hallmarks:
|
|
111
|
+
tvl: list[HistoricalTVL] = Field(..., description="Historical TVL data points")
|
|
112
|
+
raises: list[Raise] | None = Field(None, description="Funding rounds")
|
|
113
|
+
hallmarks: list[Hallmark] | None = Field(None, description="Significant events")
|
|
120
114
|
|
|
121
115
|
# Market Data
|
|
122
|
-
mcap:
|
|
123
|
-
metrics:
|
|
116
|
+
mcap: float | None = Field(None, description="Market capitalization")
|
|
117
|
+
metrics: dict = Field(default_factory=dict, description="Additional metrics")
|
|
124
118
|
|
|
125
119
|
|
|
126
120
|
class DefiLlamaProtocolInput(BaseModel):
|
|
@@ -132,8 +126,8 @@ class DefiLlamaProtocolInput(BaseModel):
|
|
|
132
126
|
class DefiLlamaProtocolOutput(BaseModel):
|
|
133
127
|
"""Output model for the protocol fetching tool."""
|
|
134
128
|
|
|
135
|
-
protocol:
|
|
136
|
-
error:
|
|
129
|
+
protocol: ProtocolDetail | None = Field(None, description="Protocol details")
|
|
130
|
+
error: str | None = Field(None, description="Error message if any")
|
|
137
131
|
|
|
138
132
|
|
|
139
133
|
class DefiLlamaFetchProtocol(DefiLlamaBaseTool):
|
|
@@ -144,16 +138,16 @@ class DefiLlamaFetchProtocol(DefiLlamaBaseTool):
|
|
|
144
138
|
|
|
145
139
|
Example:
|
|
146
140
|
protocol_tool = DefiLlamaFetchProtocol(
|
|
147
|
-
|
|
141
|
+
,
|
|
148
142
|
agent_id="agent_123",
|
|
149
|
-
|
|
143
|
+
agent=agent
|
|
150
144
|
)
|
|
151
145
|
result = await protocol_tool._arun(protocol="aave")
|
|
152
146
|
"""
|
|
153
147
|
|
|
154
148
|
name: str = "defillama_fetch_protocol"
|
|
155
149
|
description: str = FETCH_PROTOCOL_PROMPT
|
|
156
|
-
args_schema:
|
|
150
|
+
args_schema: type[BaseModel] = DefiLlamaProtocolInput
|
|
157
151
|
|
|
158
152
|
async def _arun(self, protocol: str) -> DefiLlamaProtocolOutput:
|
|
159
153
|
"""Fetch detailed information about a specific protocol.
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Tool for fetching protocol TVL via DeFiLlama API."""
|
|
2
2
|
|
|
3
|
-
from typing import Type
|
|
4
|
-
|
|
5
3
|
from pydantic import BaseModel, Field
|
|
6
4
|
|
|
7
5
|
from intentkit.skills.defillama.api import fetch_protocol_current_tvl
|
|
@@ -38,16 +36,16 @@ class DefiLlamaFetchProtocolCurrentTvl(DefiLlamaBaseTool):
|
|
|
38
36
|
|
|
39
37
|
Example:
|
|
40
38
|
tvl_tool = DefiLlamaFetchProtocolCurrentTvl(
|
|
41
|
-
|
|
39
|
+
,
|
|
42
40
|
agent_id="agent_123",
|
|
43
|
-
|
|
41
|
+
agent=agent
|
|
44
42
|
)
|
|
45
43
|
result = await tvl_tool._arun(protocol="aave")
|
|
46
44
|
"""
|
|
47
45
|
|
|
48
46
|
name: str = "defillama_fetch_protocol_tvl"
|
|
49
47
|
description: str = FETCH_TVL_PROMPT
|
|
50
|
-
args_schema:
|
|
48
|
+
args_schema: type[BaseModel] = FetchProtocolCurrentTVLInput
|
|
51
49
|
|
|
52
50
|
async def _arun(self, protocol: str) -> FetchProtocolCurrentTVLResponse:
|
|
53
51
|
"""Fetch current TVL for the given protocol.
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Tool for fetching all protocols via DeFi Llama API."""
|
|
2
2
|
|
|
3
|
-
from typing import Dict, List, Optional, Type, Union
|
|
4
|
-
|
|
5
3
|
from pydantic import BaseModel, Field
|
|
6
4
|
|
|
7
5
|
from intentkit.skills.defillama.api import fetch_protocols
|
|
@@ -35,89 +33,83 @@ class Protocol(BaseModel):
|
|
|
35
33
|
# Basic Info
|
|
36
34
|
id: str = Field(..., description="Protocol unique identifier")
|
|
37
35
|
name: str = Field(..., description="Protocol name")
|
|
38
|
-
address:
|
|
36
|
+
address: str | None = Field(None, description="Protocol's main contract address")
|
|
39
37
|
symbol: str = Field(..., description="Protocol token symbol")
|
|
40
|
-
url:
|
|
41
|
-
description:
|
|
42
|
-
chain:
|
|
43
|
-
logo:
|
|
38
|
+
url: str | None = Field(None, description="Protocol website")
|
|
39
|
+
description: str | None = Field(None, description="Protocol description")
|
|
40
|
+
chain: str | None = Field(None, description="Main chain of the protocol")
|
|
41
|
+
logo: str | None = Field(None, description="URL to protocol logo")
|
|
44
42
|
|
|
45
43
|
# Audit Information
|
|
46
|
-
audits:
|
|
47
|
-
audit_note:
|
|
48
|
-
audit_links:
|
|
44
|
+
audits: str | int = Field("0", description="Number of audits")
|
|
45
|
+
audit_note: str | None = Field(None, description="Additional audit information")
|
|
46
|
+
audit_links: list[str] | None = Field(None, description="Links to audit reports")
|
|
49
47
|
|
|
50
48
|
# External IDs
|
|
51
|
-
gecko_id:
|
|
52
|
-
cmcId:
|
|
49
|
+
gecko_id: str | None = Field(None, description="CoinGecko ID")
|
|
50
|
+
cmcId: str | int | None = Field(None, description="CoinMarketCap ID")
|
|
53
51
|
|
|
54
52
|
# Classification
|
|
55
53
|
category: str = Field(..., description="Protocol category")
|
|
56
|
-
chains:
|
|
54
|
+
chains: list[str] = Field(
|
|
57
55
|
default_factory=list, description="Chains the protocol operates on"
|
|
58
56
|
)
|
|
59
57
|
|
|
60
58
|
# Module and Related Info
|
|
61
59
|
module: str = Field(..., description="Module name in DefiLlama")
|
|
62
|
-
parentProtocol:
|
|
63
|
-
None, description="Parent protocol identifier"
|
|
64
|
-
)
|
|
60
|
+
parentProtocol: str | None = Field(None, description="Parent protocol identifier")
|
|
65
61
|
|
|
66
62
|
# Social and Development
|
|
67
|
-
twitter:
|
|
68
|
-
github:
|
|
63
|
+
twitter: str | None = Field(None, description="Twitter handle")
|
|
64
|
+
github: list[str] | None = Field(None, description="GitHub organization names")
|
|
69
65
|
|
|
70
66
|
# Protocol Relationships
|
|
71
|
-
oracles:
|
|
72
|
-
forkedFrom:
|
|
67
|
+
oracles: list[str] = Field(default_factory=list, description="Oracle services used")
|
|
68
|
+
forkedFrom: list[str] = Field(
|
|
73
69
|
default_factory=list, description="Protocols this one was forked from"
|
|
74
70
|
)
|
|
75
71
|
|
|
76
72
|
# Additional Metadata
|
|
77
|
-
methodology:
|
|
78
|
-
listedAt:
|
|
79
|
-
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
None, description="Whether protocol is open source"
|
|
83
|
-
)
|
|
84
|
-
treasury: Optional[str] = Field(None, description="Treasury information")
|
|
85
|
-
misrepresentedTokens: Optional[bool] = Field(
|
|
73
|
+
methodology: str | None = Field(None, description="TVL calculation methodology")
|
|
74
|
+
listedAt: int | None = Field(None, description="Timestamp when protocol was listed")
|
|
75
|
+
openSource: bool | None = Field(None, description="Whether protocol is open source")
|
|
76
|
+
treasury: str | None = Field(None, description="Treasury information")
|
|
77
|
+
misrepresentedTokens: bool | None = Field(
|
|
86
78
|
None, description="Whether tokens are misrepresented"
|
|
87
79
|
)
|
|
88
|
-
hallmarks:
|
|
80
|
+
hallmarks: list[Hallmark] | None = Field(
|
|
89
81
|
None, description="Significant protocol events"
|
|
90
82
|
)
|
|
91
83
|
|
|
92
84
|
# TVL Related Data
|
|
93
|
-
tvl:
|
|
94
|
-
chainTvls:
|
|
85
|
+
tvl: float | None = Field(None, description="Total Value Locked in USD")
|
|
86
|
+
chainTvls: dict[str, float] = Field(
|
|
95
87
|
default_factory=dict,
|
|
96
88
|
description="TVL breakdown by chain including special types (staking, borrowed, etc.)",
|
|
97
89
|
)
|
|
98
|
-
change_1h:
|
|
99
|
-
change_1d:
|
|
100
|
-
change_7d:
|
|
90
|
+
change_1h: float | None = Field(None, description="1 hour TVL change percentage")
|
|
91
|
+
change_1d: float | None = Field(None, description="1 day TVL change percentage")
|
|
92
|
+
change_7d: float | None = Field(None, description="7 day TVL change percentage")
|
|
101
93
|
|
|
102
94
|
# Additional TVL Components
|
|
103
|
-
staking:
|
|
104
|
-
pool2:
|
|
105
|
-
borrowed:
|
|
95
|
+
staking: float | None = Field(None, description="Value in staking")
|
|
96
|
+
pool2: float | None = Field(None, description="Value in pool2")
|
|
97
|
+
borrowed: float | None = Field(None, description="Value borrowed")
|
|
106
98
|
|
|
107
99
|
# Token Information
|
|
108
|
-
tokenBreakdowns:
|
|
100
|
+
tokenBreakdowns: dict[str, float] = Field(
|
|
109
101
|
default_factory=dict, description="TVL breakdown by token"
|
|
110
102
|
)
|
|
111
|
-
mcap:
|
|
103
|
+
mcap: float | None = Field(None, description="Market capitalization")
|
|
112
104
|
|
|
113
105
|
|
|
114
106
|
class DefiLlamaProtocolsOutput(BaseModel):
|
|
115
107
|
"""Output model for the protocols fetching tool."""
|
|
116
108
|
|
|
117
|
-
protocols:
|
|
109
|
+
protocols: list[Protocol] = Field(
|
|
118
110
|
default_factory=list, description="List of fetched protocols"
|
|
119
111
|
)
|
|
120
|
-
error:
|
|
112
|
+
error: str | None = Field(None, description="Error message if any")
|
|
121
113
|
|
|
122
114
|
|
|
123
115
|
class DefiLlamaFetchProtocols(DefiLlamaBaseTool):
|
|
@@ -128,9 +120,9 @@ class DefiLlamaFetchProtocols(DefiLlamaBaseTool):
|
|
|
128
120
|
|
|
129
121
|
Example:
|
|
130
122
|
protocols_tool = DefiLlamaFetchProtocols(
|
|
131
|
-
|
|
123
|
+
,
|
|
132
124
|
agent_id="agent_123",
|
|
133
|
-
|
|
125
|
+
agent=agent
|
|
134
126
|
)
|
|
135
127
|
result = await protocols_tool._arun()
|
|
136
128
|
"""
|
|
@@ -143,7 +135,7 @@ class DefiLlamaFetchProtocols(DefiLlamaBaseTool):
|
|
|
143
135
|
|
|
144
136
|
pass
|
|
145
137
|
|
|
146
|
-
args_schema:
|
|
138
|
+
args_schema: type[BaseModel] = EmptyArgsSchema
|
|
147
139
|
|
|
148
140
|
async def _arun(self, **kwargs) -> DefiLlamaProtocolsOutput:
|
|
149
141
|
"""Fetch information about all protocols.
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Tool for fetching DEX overview data via DeFi Llama API."""
|
|
2
2
|
|
|
3
|
-
from typing import Dict, List, Optional
|
|
4
|
-
|
|
5
3
|
from pydantic import BaseModel, Field
|
|
6
4
|
|
|
7
5
|
from intentkit.skills.defillama.api import fetch_dex_overview
|
|
@@ -20,78 +18,74 @@ Returns:
|
|
|
20
18
|
class MethodologyInfo(BaseModel):
|
|
21
19
|
"""Model representing methodology information."""
|
|
22
20
|
|
|
23
|
-
UserFees:
|
|
24
|
-
Fees:
|
|
25
|
-
Revenue:
|
|
26
|
-
ProtocolRevenue:
|
|
27
|
-
HoldersRevenue:
|
|
28
|
-
SupplySideRevenue:
|
|
29
|
-
None, description="Supply side revenue info"
|
|
30
|
-
)
|
|
21
|
+
UserFees: str | None = Field(None, description="User fee information")
|
|
22
|
+
Fees: str | None = Field(None, description="Fee structure")
|
|
23
|
+
Revenue: str | None = Field(None, description="Revenue model")
|
|
24
|
+
ProtocolRevenue: str | None = Field(None, description="Protocol revenue info")
|
|
25
|
+
HoldersRevenue: str | None = Field(None, description="Holder revenue info")
|
|
26
|
+
SupplySideRevenue: str | None = Field(None, description="Supply side revenue info")
|
|
31
27
|
|
|
32
28
|
|
|
33
29
|
class ProtocolInfo(BaseModel):
|
|
34
30
|
"""Model representing individual protocol data."""
|
|
35
31
|
|
|
36
|
-
total24h:
|
|
37
|
-
total48hto24h:
|
|
38
|
-
total7d:
|
|
39
|
-
total14dto7d:
|
|
40
|
-
total60dto30d:
|
|
41
|
-
total30d:
|
|
42
|
-
total1y:
|
|
43
|
-
totalAllTime:
|
|
44
|
-
average1y:
|
|
45
|
-
change_1d:
|
|
46
|
-
change_7d:
|
|
47
|
-
change_1m:
|
|
48
|
-
change_7dover7d:
|
|
49
|
-
change_30dover30d:
|
|
50
|
-
breakdown24h:
|
|
32
|
+
total24h: float | None = Field(None, description="24h total")
|
|
33
|
+
total48hto24h: float | None = Field(None, description="48h to 24h total")
|
|
34
|
+
total7d: float | None = Field(None, description="7d total")
|
|
35
|
+
total14dto7d: float | None = Field(None, description="14d to 7d total")
|
|
36
|
+
total60dto30d: float | None = Field(None, description="60d to 30d total")
|
|
37
|
+
total30d: float | None = Field(None, description="30d total")
|
|
38
|
+
total1y: float | None = Field(None, description="1y total")
|
|
39
|
+
totalAllTime: float | None = Field(None, description="All time total")
|
|
40
|
+
average1y: float | None = Field(None, description="1y average")
|
|
41
|
+
change_1d: float | None = Field(None, description="1d change")
|
|
42
|
+
change_7d: float | None = Field(None, description="7d change")
|
|
43
|
+
change_1m: float | None = Field(None, description="1m change")
|
|
44
|
+
change_7dover7d: float | None = Field(None, description="7d over 7d change")
|
|
45
|
+
change_30dover30d: float | None = Field(None, description="30d over 30d change")
|
|
46
|
+
breakdown24h: dict[str, dict[str, float]] | None = Field(
|
|
51
47
|
None, description="24h breakdown by chain"
|
|
52
48
|
)
|
|
53
|
-
breakdown30d:
|
|
49
|
+
breakdown30d: dict[str, dict[str, float]] | None = Field(
|
|
54
50
|
None, description="30d breakdown by chain"
|
|
55
51
|
)
|
|
56
|
-
total7DaysAgo:
|
|
57
|
-
total30DaysAgo:
|
|
58
|
-
defillamaId:
|
|
52
|
+
total7DaysAgo: float | None = Field(None, description="Total 7 days ago")
|
|
53
|
+
total30DaysAgo: float | None = Field(None, description="Total 30 days ago")
|
|
54
|
+
defillamaId: str | None = Field(None, description="DeFi Llama ID")
|
|
59
55
|
name: str = Field(..., description="Protocol name")
|
|
60
56
|
displayName: str = Field(..., description="Display name")
|
|
61
57
|
module: str = Field(..., description="Module name")
|
|
62
58
|
category: str = Field(..., description="Protocol category")
|
|
63
|
-
logo:
|
|
64
|
-
chains:
|
|
59
|
+
logo: str | None = Field(None, description="Logo URL")
|
|
60
|
+
chains: list[str] = Field(..., description="Supported chains")
|
|
65
61
|
protocolType: str = Field(..., description="Protocol type")
|
|
66
|
-
methodologyURL:
|
|
67
|
-
methodology:
|
|
68
|
-
None, description="Methodology details"
|
|
69
|
-
)
|
|
62
|
+
methodologyURL: str | None = Field(None, description="Methodology URL")
|
|
63
|
+
methodology: MethodologyInfo | None = Field(None, description="Methodology details")
|
|
70
64
|
latestFetchIsOk: bool = Field(..., description="Latest fetch status")
|
|
71
|
-
disabled:
|
|
72
|
-
parentProtocol:
|
|
65
|
+
disabled: bool | None = Field(None, description="Whether protocol is disabled")
|
|
66
|
+
parentProtocol: str | None = Field(None, description="Parent protocol")
|
|
73
67
|
slug: str = Field(..., description="Protocol slug")
|
|
74
|
-
linkedProtocols:
|
|
68
|
+
linkedProtocols: list[str] | None = Field(None, description="Linked protocols")
|
|
75
69
|
id: str = Field(..., description="Protocol ID")
|
|
76
70
|
|
|
77
71
|
|
|
78
72
|
class FetchDexOverviewResponse(BaseModel):
|
|
79
73
|
"""Response schema for DEX overview data."""
|
|
80
74
|
|
|
81
|
-
totalDataChart:
|
|
75
|
+
totalDataChart: list = Field(
|
|
82
76
|
default_factory=list, description="Total data chart points"
|
|
83
77
|
)
|
|
84
|
-
totalDataChartBreakdown:
|
|
78
|
+
totalDataChartBreakdown: list = Field(
|
|
85
79
|
default_factory=list, description="Total data chart breakdown"
|
|
86
80
|
)
|
|
87
|
-
breakdown24h:
|
|
81
|
+
breakdown24h: dict[str, dict[str, float]] | None = Field(
|
|
88
82
|
None, description="24h breakdown by chain"
|
|
89
83
|
)
|
|
90
|
-
breakdown30d:
|
|
84
|
+
breakdown30d: dict[str, dict[str, float]] | None = Field(
|
|
91
85
|
None, description="30d breakdown by chain"
|
|
92
86
|
)
|
|
93
|
-
chain:
|
|
94
|
-
allChains:
|
|
87
|
+
chain: str | None = Field(None, description="Specific chain")
|
|
88
|
+
allChains: list[str] = Field(..., description="List of all chains")
|
|
95
89
|
total24h: float = Field(..., description="24h total")
|
|
96
90
|
total48hto24h: float = Field(..., description="48h to 24h total")
|
|
97
91
|
total7d: float = Field(..., description="7d total")
|
|
@@ -106,8 +100,8 @@ class FetchDexOverviewResponse(BaseModel):
|
|
|
106
100
|
change_30dover30d: float = Field(..., description="30d over 30d change")
|
|
107
101
|
total7DaysAgo: float = Field(..., description="Total 7 days ago")
|
|
108
102
|
total30DaysAgo: float = Field(..., description="Total 30 days ago")
|
|
109
|
-
protocols:
|
|
110
|
-
error:
|
|
103
|
+
protocols: list[ProtocolInfo] = Field(..., description="List of protocol data")
|
|
104
|
+
error: str | None = Field(None, description="Error message if any")
|
|
111
105
|
|
|
112
106
|
|
|
113
107
|
class DefiLlamaFetchDexOverview(DefiLlamaBaseTool):
|
|
@@ -118,9 +112,9 @@ class DefiLlamaFetchDexOverview(DefiLlamaBaseTool):
|
|
|
118
112
|
|
|
119
113
|
Example:
|
|
120
114
|
overview_tool = DefiLlamaFetchDexOverview(
|
|
121
|
-
|
|
115
|
+
,
|
|
122
116
|
agent_id="agent_123",
|
|
123
|
-
|
|
117
|
+
agent=agent
|
|
124
118
|
)
|
|
125
119
|
result = await overview_tool._arun()
|
|
126
120
|
"""
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"""Tool for fetching DEX protocol summary data via DeFi Llama API."""
|
|
2
2
|
|
|
3
|
-
from typing import Dict, List, Optional, Type
|
|
4
|
-
|
|
5
3
|
from pydantic import BaseModel, Field
|
|
6
4
|
|
|
7
5
|
from intentkit.skills.defillama.api import fetch_dex_summary
|
|
@@ -30,44 +28,44 @@ class FetchDexSummaryResponse(BaseModel):
|
|
|
30
28
|
|
|
31
29
|
id: str = Field(..., description="Protocol ID")
|
|
32
30
|
name: str = Field(..., description="Protocol name")
|
|
33
|
-
url:
|
|
34
|
-
description:
|
|
35
|
-
logo:
|
|
36
|
-
gecko_id:
|
|
37
|
-
cmcId:
|
|
38
|
-
chains:
|
|
39
|
-
twitter:
|
|
40
|
-
treasury:
|
|
41
|
-
governanceID:
|
|
42
|
-
github:
|
|
43
|
-
childProtocols:
|
|
44
|
-
linkedProtocols:
|
|
45
|
-
disabled:
|
|
31
|
+
url: str | None = Field(None, description="Protocol website URL")
|
|
32
|
+
description: str | None = Field(None, description="Protocol description")
|
|
33
|
+
logo: str | None = Field(None, description="Logo URL")
|
|
34
|
+
gecko_id: str | None = Field(None, description="CoinGecko ID")
|
|
35
|
+
cmcId: str | None = Field(None, description="CoinMarketCap ID")
|
|
36
|
+
chains: list[str] = Field(default_factory=list, description="Supported chains")
|
|
37
|
+
twitter: str | None = Field(None, description="Twitter handle")
|
|
38
|
+
treasury: str | None = Field(None, description="Treasury identifier")
|
|
39
|
+
governanceID: list[str] | None = Field(None, description="Governance IDs")
|
|
40
|
+
github: list[str] | None = Field(None, description="GitHub organizations")
|
|
41
|
+
childProtocols: list[str] | None = Field(None, description="Child protocols")
|
|
42
|
+
linkedProtocols: list[str] | None = Field(None, description="Linked protocols")
|
|
43
|
+
disabled: bool | None = Field(None, description="Whether protocol is disabled")
|
|
46
44
|
displayName: str = Field(..., description="Display name")
|
|
47
|
-
module:
|
|
48
|
-
category:
|
|
49
|
-
methodologyURL:
|
|
50
|
-
methodology:
|
|
51
|
-
forkedFrom:
|
|
52
|
-
audits:
|
|
53
|
-
address:
|
|
54
|
-
audit_links:
|
|
55
|
-
versionKey:
|
|
56
|
-
parentProtocol:
|
|
57
|
-
previousNames:
|
|
45
|
+
module: str | None = Field(None, description="Module name")
|
|
46
|
+
category: str | None = Field(None, description="Protocol category")
|
|
47
|
+
methodologyURL: str | None = Field(None, description="Methodology URL")
|
|
48
|
+
methodology: dict | None = Field(None, description="Methodology details")
|
|
49
|
+
forkedFrom: list[str] | None = Field(None, description="Forked from protocols")
|
|
50
|
+
audits: str | None = Field(None, description="Audit information")
|
|
51
|
+
address: str | None = Field(None, description="Contract address")
|
|
52
|
+
audit_links: list[str] | None = Field(None, description="Audit links")
|
|
53
|
+
versionKey: str | None = Field(None, description="Version key")
|
|
54
|
+
parentProtocol: str | None = Field(None, description="Parent protocol")
|
|
55
|
+
previousNames: list[str] | None = Field(None, description="Previous names")
|
|
58
56
|
latestFetchIsOk: bool = Field(..., description="Latest fetch status")
|
|
59
57
|
slug: str = Field(..., description="Protocol slug")
|
|
60
58
|
protocolType: str = Field(..., description="Protocol type")
|
|
61
|
-
total24h:
|
|
62
|
-
total48hto24h:
|
|
63
|
-
total7d:
|
|
64
|
-
totalAllTime:
|
|
65
|
-
totalDataChart:
|
|
66
|
-
totalDataChartBreakdown:
|
|
59
|
+
total24h: float | None = Field(None, description="24h total volume")
|
|
60
|
+
total48hto24h: float | None = Field(None, description="48h to 24h total volume")
|
|
61
|
+
total7d: float | None = Field(None, description="7d total volume")
|
|
62
|
+
totalAllTime: float | None = Field(None, description="All time total volume")
|
|
63
|
+
totalDataChart: list = Field(default_factory=list, description="Total data chart")
|
|
64
|
+
totalDataChartBreakdown: list = Field(
|
|
67
65
|
default_factory=list, description="Chart breakdown"
|
|
68
66
|
)
|
|
69
|
-
change_1d:
|
|
70
|
-
error:
|
|
67
|
+
change_1d: float | None = Field(None, description="1d change percentage")
|
|
68
|
+
error: str | None = Field(None, description="Error message if any")
|
|
71
69
|
|
|
72
70
|
|
|
73
71
|
class DefiLlamaFetchDexSummary(DefiLlamaBaseTool):
|
|
@@ -78,16 +76,16 @@ class DefiLlamaFetchDexSummary(DefiLlamaBaseTool):
|
|
|
78
76
|
|
|
79
77
|
Example:
|
|
80
78
|
summary_tool = DefiLlamaFetchDexSummary(
|
|
81
|
-
|
|
79
|
+
,
|
|
82
80
|
agent_id="agent_123",
|
|
83
|
-
|
|
81
|
+
agent=agent
|
|
84
82
|
)
|
|
85
83
|
result = await summary_tool._arun(protocol="uniswap")
|
|
86
84
|
"""
|
|
87
85
|
|
|
88
86
|
name: str = "defillama_fetch_dex_summary"
|
|
89
87
|
description: str = FETCH_DEX_SUMMARY_PROMPT
|
|
90
|
-
args_schema:
|
|
88
|
+
args_schema: type[BaseModel] = FetchDexSummaryInput
|
|
91
89
|
|
|
92
90
|
async def _arun(self, protocol: str) -> FetchDexSummaryResponse:
|
|
93
91
|
"""Fetch summary data for the given DEX protocol.
|