intentkit 0.7.5.dev3__py3-none-any.whl → 0.8.34.dev7__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.
Files changed (393) hide show
  1. intentkit/MANIFEST.in +14 -0
  2. intentkit/README.md +88 -0
  3. intentkit/__init__.py +6 -4
  4. intentkit/abstracts/agent.py +4 -5
  5. intentkit/abstracts/engine.py +5 -5
  6. intentkit/abstracts/graph.py +15 -8
  7. intentkit/abstracts/skill.py +6 -144
  8. intentkit/abstracts/twitter.py +4 -5
  9. intentkit/clients/__init__.py +9 -2
  10. intentkit/clients/cdp.py +129 -153
  11. intentkit/{utils → clients}/s3.py +109 -34
  12. intentkit/clients/twitter.py +83 -62
  13. intentkit/clients/web3.py +4 -7
  14. intentkit/config/config.py +123 -90
  15. intentkit/core/account_checking.py +802 -0
  16. intentkit/core/agent.py +313 -498
  17. intentkit/core/asset.py +267 -0
  18. intentkit/core/chat.py +5 -3
  19. intentkit/core/client.py +1 -1
  20. intentkit/core/credit.py +49 -41
  21. intentkit/core/draft.py +201 -0
  22. intentkit/core/draft_chat.py +118 -0
  23. intentkit/core/engine.py +378 -287
  24. intentkit/core/manager/__init__.py +25 -0
  25. intentkit/core/manager/engine.py +220 -0
  26. intentkit/core/manager/service.py +172 -0
  27. intentkit/core/manager/skills.py +178 -0
  28. intentkit/core/middleware.py +231 -0
  29. intentkit/core/prompt.py +74 -114
  30. intentkit/core/scheduler.py +143 -0
  31. intentkit/core/statistics.py +168 -0
  32. intentkit/models/agent.py +931 -518
  33. intentkit/models/agent_data.py +165 -106
  34. intentkit/models/agent_schema.json +38 -251
  35. intentkit/models/app_setting.py +15 -13
  36. intentkit/models/chat.py +86 -140
  37. intentkit/models/credit.py +182 -162
  38. intentkit/models/db.py +42 -23
  39. intentkit/models/db_mig.py +120 -3
  40. intentkit/models/draft.py +222 -0
  41. intentkit/models/llm.csv +31 -0
  42. intentkit/models/llm.py +262 -370
  43. intentkit/models/redis.py +6 -4
  44. intentkit/models/skill.py +222 -101
  45. intentkit/models/skills.csv +173 -0
  46. intentkit/models/team.py +189 -0
  47. intentkit/models/user.py +103 -31
  48. intentkit/skills/acolyt/__init__.py +2 -9
  49. intentkit/skills/acolyt/ask.py +3 -4
  50. intentkit/skills/acolyt/base.py +4 -9
  51. intentkit/skills/acolyt/schema.json +4 -3
  52. intentkit/skills/aixbt/__init__.py +2 -13
  53. intentkit/skills/aixbt/base.py +1 -7
  54. intentkit/skills/aixbt/projects.py +14 -15
  55. intentkit/skills/aixbt/schema.json +4 -4
  56. intentkit/skills/allora/__init__.py +2 -9
  57. intentkit/skills/allora/base.py +4 -9
  58. intentkit/skills/allora/price.py +3 -4
  59. intentkit/skills/allora/schema.json +3 -2
  60. intentkit/skills/base.py +241 -41
  61. intentkit/skills/basename/__init__.py +51 -0
  62. intentkit/skills/basename/base.py +11 -0
  63. intentkit/skills/basename/basename.svg +11 -0
  64. intentkit/skills/basename/schema.json +58 -0
  65. intentkit/skills/carv/__init__.py +115 -121
  66. intentkit/skills/carv/base.py +184 -185
  67. intentkit/skills/carv/fetch_news.py +3 -3
  68. intentkit/skills/carv/onchain_query.py +4 -4
  69. intentkit/skills/carv/schema.json +134 -137
  70. intentkit/skills/carv/token_info_and_price.py +6 -6
  71. intentkit/skills/casino/__init__.py +4 -15
  72. intentkit/skills/casino/base.py +1 -7
  73. intentkit/skills/casino/deck_draw.py +5 -8
  74. intentkit/skills/casino/deck_shuffle.py +6 -6
  75. intentkit/skills/casino/dice_roll.py +2 -4
  76. intentkit/skills/casino/schema.json +0 -1
  77. intentkit/skills/cdp/__init__.py +22 -84
  78. intentkit/skills/cdp/base.py +1 -7
  79. intentkit/skills/cdp/schema.json +11 -314
  80. intentkit/skills/chainlist/__init__.py +2 -7
  81. intentkit/skills/chainlist/base.py +1 -7
  82. intentkit/skills/chainlist/chain_lookup.py +18 -18
  83. intentkit/skills/chainlist/schema.json +3 -5
  84. intentkit/skills/common/__init__.py +2 -9
  85. intentkit/skills/common/base.py +1 -7
  86. intentkit/skills/common/current_time.py +1 -2
  87. intentkit/skills/common/schema.json +2 -2
  88. intentkit/skills/cookiefun/__init__.py +6 -9
  89. intentkit/skills/cookiefun/base.py +2 -7
  90. intentkit/skills/cookiefun/get_account_details.py +7 -7
  91. intentkit/skills/cookiefun/get_account_feed.py +19 -19
  92. intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
  93. intentkit/skills/cookiefun/get_sectors.py +3 -3
  94. intentkit/skills/cookiefun/schema.json +1 -3
  95. intentkit/skills/cookiefun/search_accounts.py +9 -9
  96. intentkit/skills/cryptocompare/__init__.py +7 -24
  97. intentkit/skills/cryptocompare/api.py +2 -3
  98. intentkit/skills/cryptocompare/base.py +10 -24
  99. intentkit/skills/cryptocompare/fetch_news.py +4 -5
  100. intentkit/skills/cryptocompare/fetch_price.py +6 -7
  101. intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
  102. intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
  103. intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
  104. intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
  105. intentkit/skills/cryptocompare/schema.json +3 -3
  106. intentkit/skills/cryptopanic/__init__.py +7 -10
  107. intentkit/skills/cryptopanic/base.py +51 -55
  108. intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
  109. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
  110. intentkit/skills/cryptopanic/schema.json +105 -103
  111. intentkit/skills/dapplooker/__init__.py +2 -9
  112. intentkit/skills/dapplooker/base.py +4 -9
  113. intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
  114. intentkit/skills/dapplooker/schema.json +3 -5
  115. intentkit/skills/defillama/__init__.py +24 -74
  116. intentkit/skills/defillama/api.py +6 -9
  117. intentkit/skills/defillama/base.py +8 -19
  118. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
  119. intentkit/skills/defillama/coins/fetch_block.py +6 -8
  120. intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
  121. intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
  122. intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
  123. intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
  124. intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
  125. intentkit/skills/defillama/config/chains.py +1 -3
  126. intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
  127. intentkit/skills/defillama/schema.json +5 -1
  128. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
  129. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
  130. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
  131. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
  132. intentkit/skills/defillama/tests/api_integration.test.py +1 -1
  133. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
  134. intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
  135. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
  136. intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
  137. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
  138. intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
  139. intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
  140. intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
  141. intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
  142. intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
  143. intentkit/skills/defillama/yields/fetch_pools.py +26 -30
  144. intentkit/skills/dexscreener/__init__.py +97 -102
  145. intentkit/skills/dexscreener/base.py +125 -130
  146. intentkit/skills/dexscreener/get_pair_info.py +4 -5
  147. intentkit/skills/dexscreener/get_token_pairs.py +4 -5
  148. intentkit/skills/dexscreener/get_tokens_info.py +7 -8
  149. intentkit/skills/dexscreener/model/search_token_response.py +80 -82
  150. intentkit/skills/dexscreener/schema.json +91 -93
  151. intentkit/skills/dexscreener/search_token.py +182 -184
  152. intentkit/skills/dexscreener/utils.py +15 -14
  153. intentkit/skills/dune_analytics/__init__.py +7 -9
  154. intentkit/skills/dune_analytics/base.py +48 -52
  155. intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
  156. intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
  157. intentkit/skills/dune_analytics/schema.json +104 -99
  158. intentkit/skills/elfa/__init__.py +5 -18
  159. intentkit/skills/elfa/base.py +10 -14
  160. intentkit/skills/elfa/mention.py +19 -21
  161. intentkit/skills/elfa/schema.json +3 -2
  162. intentkit/skills/elfa/stats.py +4 -4
  163. intentkit/skills/elfa/tokens.py +12 -12
  164. intentkit/skills/elfa/utils.py +26 -28
  165. intentkit/skills/enso/__init__.py +11 -31
  166. intentkit/skills/enso/base.py +54 -35
  167. intentkit/skills/enso/best_yield.py +16 -24
  168. intentkit/skills/enso/networks.py +6 -11
  169. intentkit/skills/enso/prices.py +11 -13
  170. intentkit/skills/enso/route.py +34 -38
  171. intentkit/skills/enso/schema.json +3 -2
  172. intentkit/skills/enso/tokens.py +29 -38
  173. intentkit/skills/enso/wallet.py +76 -191
  174. intentkit/skills/erc20/__init__.py +50 -0
  175. intentkit/skills/erc20/base.py +11 -0
  176. intentkit/skills/erc20/erc20.svg +5 -0
  177. intentkit/skills/erc20/schema.json +74 -0
  178. intentkit/skills/erc721/__init__.py +53 -0
  179. intentkit/skills/erc721/base.py +11 -0
  180. intentkit/skills/erc721/erc721.svg +5 -0
  181. intentkit/skills/erc721/schema.json +90 -0
  182. intentkit/skills/firecrawl/__init__.py +5 -18
  183. intentkit/skills/firecrawl/base.py +4 -9
  184. intentkit/skills/firecrawl/clear.py +4 -8
  185. intentkit/skills/firecrawl/crawl.py +19 -19
  186. intentkit/skills/firecrawl/query.py +4 -3
  187. intentkit/skills/firecrawl/schema.json +2 -6
  188. intentkit/skills/firecrawl/scrape.py +17 -22
  189. intentkit/skills/firecrawl/utils.py +50 -42
  190. intentkit/skills/github/__init__.py +2 -7
  191. intentkit/skills/github/base.py +1 -7
  192. intentkit/skills/github/github_search.py +1 -2
  193. intentkit/skills/github/schema.json +3 -4
  194. intentkit/skills/heurist/__init__.py +8 -27
  195. intentkit/skills/heurist/base.py +4 -9
  196. intentkit/skills/heurist/image_generation_animagine_xl.py +13 -15
  197. intentkit/skills/heurist/image_generation_arthemy_comics.py +13 -15
  198. intentkit/skills/heurist/image_generation_arthemy_real.py +13 -15
  199. intentkit/skills/heurist/image_generation_braindance.py +13 -15
  200. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +13 -15
  201. intentkit/skills/heurist/image_generation_flux_1_dev.py +13 -15
  202. intentkit/skills/heurist/image_generation_sdxl.py +13 -15
  203. intentkit/skills/heurist/schema.json +2 -2
  204. intentkit/skills/http/__init__.py +4 -15
  205. intentkit/skills/http/base.py +1 -7
  206. intentkit/skills/http/get.py +21 -16
  207. intentkit/skills/http/post.py +23 -18
  208. intentkit/skills/http/put.py +23 -18
  209. intentkit/skills/http/schema.json +4 -5
  210. intentkit/skills/lifi/__init__.py +8 -13
  211. intentkit/skills/lifi/base.py +3 -9
  212. intentkit/skills/lifi/schema.json +17 -8
  213. intentkit/skills/lifi/token_execute.py +150 -60
  214. intentkit/skills/lifi/token_quote.py +8 -10
  215. intentkit/skills/lifi/utils.py +104 -51
  216. intentkit/skills/moralis/__init__.py +6 -10
  217. intentkit/skills/moralis/api.py +6 -7
  218. intentkit/skills/moralis/base.py +5 -10
  219. intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
  220. intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
  221. intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
  222. intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
  223. intentkit/skills/moralis/schema.json +7 -2
  224. intentkit/skills/morpho/__init__.py +52 -0
  225. intentkit/skills/morpho/base.py +11 -0
  226. intentkit/skills/morpho/morpho.svg +12 -0
  227. intentkit/skills/morpho/schema.json +73 -0
  228. intentkit/skills/nation/__init__.py +4 -9
  229. intentkit/skills/nation/base.py +5 -10
  230. intentkit/skills/nation/nft_check.py +3 -4
  231. intentkit/skills/nation/schema.json +4 -3
  232. intentkit/skills/onchain.py +30 -0
  233. intentkit/skills/openai/__init__.py +17 -18
  234. intentkit/skills/openai/base.py +10 -14
  235. intentkit/skills/openai/dalle_image_generation.py +4 -9
  236. intentkit/skills/openai/gpt_avatar_generator.py +102 -0
  237. intentkit/skills/openai/gpt_image_generation.py +5 -9
  238. intentkit/skills/openai/gpt_image_mini_generator.py +92 -0
  239. intentkit/skills/openai/gpt_image_to_image.py +5 -9
  240. intentkit/skills/openai/image_to_text.py +3 -7
  241. intentkit/skills/openai/schema.json +34 -3
  242. intentkit/skills/portfolio/__init__.py +11 -35
  243. intentkit/skills/portfolio/base.py +33 -19
  244. intentkit/skills/portfolio/schema.json +3 -5
  245. intentkit/skills/portfolio/token_balances.py +21 -21
  246. intentkit/skills/portfolio/wallet_approvals.py +17 -18
  247. intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
  248. intentkit/skills/portfolio/wallet_history.py +31 -31
  249. intentkit/skills/portfolio/wallet_net_worth.py +13 -13
  250. intentkit/skills/portfolio/wallet_nfts.py +19 -19
  251. intentkit/skills/portfolio/wallet_profitability.py +18 -18
  252. intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
  253. intentkit/skills/portfolio/wallet_stats.py +3 -3
  254. intentkit/skills/portfolio/wallet_swaps.py +19 -19
  255. intentkit/skills/pyth/__init__.py +50 -0
  256. intentkit/skills/pyth/base.py +11 -0
  257. intentkit/skills/pyth/pyth.svg +6 -0
  258. intentkit/skills/pyth/schema.json +75 -0
  259. intentkit/skills/skills.toml +36 -0
  260. intentkit/skills/slack/__init__.py +5 -17
  261. intentkit/skills/slack/base.py +3 -9
  262. intentkit/skills/slack/get_channel.py +8 -8
  263. intentkit/skills/slack/get_message.py +9 -9
  264. intentkit/skills/slack/schedule_message.py +5 -5
  265. intentkit/skills/slack/schema.json +2 -2
  266. intentkit/skills/slack/send_message.py +3 -5
  267. intentkit/skills/supabase/__init__.py +7 -23
  268. intentkit/skills/supabase/base.py +1 -7
  269. intentkit/skills/supabase/delete_data.py +4 -4
  270. intentkit/skills/supabase/fetch_data.py +12 -12
  271. intentkit/skills/supabase/insert_data.py +4 -4
  272. intentkit/skills/supabase/invoke_function.py +6 -6
  273. intentkit/skills/supabase/schema.json +2 -3
  274. intentkit/skills/supabase/update_data.py +6 -6
  275. intentkit/skills/supabase/upsert_data.py +4 -4
  276. intentkit/skills/superfluid/__init__.py +53 -0
  277. intentkit/skills/superfluid/base.py +11 -0
  278. intentkit/skills/superfluid/schema.json +89 -0
  279. intentkit/skills/superfluid/superfluid.svg +6 -0
  280. intentkit/skills/system/__init__.py +7 -24
  281. intentkit/skills/system/add_autonomous_task.py +10 -12
  282. intentkit/skills/system/delete_autonomous_task.py +2 -2
  283. intentkit/skills/system/edit_autonomous_task.py +14 -18
  284. intentkit/skills/system/list_autonomous_tasks.py +3 -5
  285. intentkit/skills/system/read_agent_api_key.py +6 -4
  286. intentkit/skills/system/regenerate_agent_api_key.py +6 -4
  287. intentkit/skills/system/schema.json +6 -8
  288. intentkit/skills/tavily/__init__.py +3 -12
  289. intentkit/skills/tavily/base.py +4 -9
  290. intentkit/skills/tavily/schema.json +3 -5
  291. intentkit/skills/tavily/tavily_extract.py +2 -4
  292. intentkit/skills/tavily/tavily_search.py +4 -6
  293. intentkit/skills/token/__init__.py +5 -10
  294. intentkit/skills/token/base.py +7 -11
  295. intentkit/skills/token/erc20_transfers.py +19 -19
  296. intentkit/skills/token/schema.json +3 -6
  297. intentkit/skills/token/token_analytics.py +3 -3
  298. intentkit/skills/token/token_price.py +13 -13
  299. intentkit/skills/token/token_search.py +9 -9
  300. intentkit/skills/twitter/__init__.py +11 -35
  301. intentkit/skills/twitter/base.py +22 -34
  302. intentkit/skills/twitter/follow_user.py +2 -6
  303. intentkit/skills/twitter/get_mentions.py +5 -12
  304. intentkit/skills/twitter/get_timeline.py +4 -12
  305. intentkit/skills/twitter/get_user_by_username.py +2 -6
  306. intentkit/skills/twitter/get_user_tweets.py +5 -13
  307. intentkit/skills/twitter/like_tweet.py +2 -6
  308. intentkit/skills/twitter/post_tweet.py +6 -9
  309. intentkit/skills/twitter/reply_tweet.py +6 -9
  310. intentkit/skills/twitter/retweet.py +2 -6
  311. intentkit/skills/twitter/schema.json +1 -0
  312. intentkit/skills/twitter/search_tweets.py +4 -12
  313. intentkit/skills/unrealspeech/__init__.py +2 -7
  314. intentkit/skills/unrealspeech/base.py +2 -8
  315. intentkit/skills/unrealspeech/schema.json +2 -5
  316. intentkit/skills/unrealspeech/text_to_speech.py +8 -8
  317. intentkit/skills/venice_audio/__init__.py +98 -106
  318. intentkit/skills/venice_audio/base.py +117 -121
  319. intentkit/skills/venice_audio/input.py +41 -41
  320. intentkit/skills/venice_audio/schema.json +151 -152
  321. intentkit/skills/venice_audio/venice_audio.py +38 -21
  322. intentkit/skills/venice_image/__init__.py +147 -154
  323. intentkit/skills/venice_image/api.py +138 -138
  324. intentkit/skills/venice_image/base.py +185 -192
  325. intentkit/skills/venice_image/config.py +33 -35
  326. intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
  327. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  328. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  329. intentkit/skills/venice_image/image_generation/image_generation_base.py +11 -10
  330. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  331. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  332. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  333. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
  334. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  335. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  336. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  337. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  338. intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
  339. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  340. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  341. intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
  342. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
  343. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
  344. intentkit/skills/venice_image/schema.json +267 -267
  345. intentkit/skills/venice_image/utils.py +77 -78
  346. intentkit/skills/web_scraper/__init__.py +5 -18
  347. intentkit/skills/web_scraper/base.py +21 -7
  348. intentkit/skills/web_scraper/document_indexer.py +7 -6
  349. intentkit/skills/web_scraper/schema.json +2 -6
  350. intentkit/skills/web_scraper/scrape_and_index.py +15 -15
  351. intentkit/skills/web_scraper/utils.py +62 -63
  352. intentkit/skills/web_scraper/website_indexer.py +17 -19
  353. intentkit/skills/weth/__init__.py +49 -0
  354. intentkit/skills/weth/base.py +11 -0
  355. intentkit/skills/weth/schema.json +58 -0
  356. intentkit/skills/weth/weth.svg +6 -0
  357. intentkit/skills/wow/__init__.py +51 -0
  358. intentkit/skills/wow/base.py +11 -0
  359. intentkit/skills/wow/schema.json +89 -0
  360. intentkit/skills/wow/wow.svg +7 -0
  361. intentkit/skills/x402/__init__.py +58 -0
  362. intentkit/skills/x402/base.py +99 -0
  363. intentkit/skills/x402/http_request.py +117 -0
  364. intentkit/skills/x402/schema.json +40 -0
  365. intentkit/skills/x402/x402.webp +0 -0
  366. intentkit/skills/xmtp/__init__.py +4 -15
  367. intentkit/skills/xmtp/base.py +5 -5
  368. intentkit/skills/xmtp/price.py +7 -6
  369. intentkit/skills/xmtp/schema.json +69 -71
  370. intentkit/skills/xmtp/swap.py +6 -8
  371. intentkit/skills/xmtp/transfer.py +4 -6
  372. intentkit/utils/__init__.py +4 -0
  373. intentkit/utils/chain.py +198 -96
  374. intentkit/utils/ens.py +135 -0
  375. intentkit/utils/error.py +5 -2
  376. intentkit/utils/logging.py +9 -11
  377. intentkit/utils/schema.py +100 -0
  378. intentkit/utils/slack_alert.py +8 -8
  379. intentkit/utils/tx.py +16 -8
  380. intentkit/uv.lock +3377 -0
  381. {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/METADATA +13 -15
  382. intentkit-0.8.34.dev7.dist-info/RECORD +478 -0
  383. intentkit-0.8.34.dev7.dist-info/licenses/LICENSE +21 -0
  384. intentkit/core/node.py +0 -215
  385. intentkit/models/conversation.py +0 -286
  386. intentkit/models/generator.py +0 -347
  387. intentkit/skills/cdp/get_balance.py +0 -110
  388. intentkit/skills/cdp/swap.py +0 -121
  389. intentkit/skills/moralis/tests/__init__.py +0 -0
  390. intentkit/skills/moralis/tests/test_wallet.py +0 -511
  391. intentkit-0.7.5.dev3.dist-info/RECORD +0 -424
  392. {intentkit-0.7.5.dev3.dist-info/licenses → intentkit}/LICENSE +0 -0
  393. {intentkit-0.7.5.dev3.dist-info → intentkit-0.8.34.dev7.dist-info}/WHEEL +0 -0
@@ -3,55 +3,27 @@
3
3
  from typing import TypedDict
4
4
 
5
5
  from coinbase_agentkit import (
6
- AgentKit,
7
- AgentKitConfig,
8
- CdpEvmServerWalletProvider,
9
- basename_action_provider,
10
6
  cdp_api_action_provider,
11
- erc20_action_provider,
12
- morpho_action_provider,
13
- pyth_action_provider,
14
- superfluid_action_provider,
7
+ cdp_evm_wallet_action_provider,
15
8
  wallet_action_provider,
16
- weth_action_provider,
17
- wow_action_provider,
18
9
  )
19
- from coinbase_agentkit.action_providers.erc721 import erc721_action_provider
20
- from coinbase_agentkit_langchain import get_langchain_tools
21
10
 
22
- from intentkit.abstracts.skill import SkillStoreABC
23
- from intentkit.clients import CdpClient, get_cdp_client
24
- from intentkit.skills.base import SkillConfig, SkillState
11
+ from intentkit.models.agent import Agent
12
+ from intentkit.skills.base import (
13
+ SkillConfig,
14
+ SkillState,
15
+ action_to_structured_tool,
16
+ get_agentkit_actions,
17
+ )
25
18
  from intentkit.skills.cdp.base import CDPBaseTool
26
- from intentkit.skills.cdp.get_balance import GetBalance
27
- from intentkit.skills.cdp.swap import Swap
28
19
 
29
20
 
30
21
  class SkillStates(TypedDict):
31
- get_balance: SkillState
32
- swap: SkillState
33
22
  WalletActionProvider_get_balance: SkillState
34
23
  WalletActionProvider_get_wallet_details: SkillState
35
24
  WalletActionProvider_native_transfer: SkillState
36
- CdpApiActionProvider_address_reputation: SkillState
37
- CdpApiActionProvider_request_faucet_funds: SkillState
38
- PythActionProvider_fetch_price: SkillState
39
- PythActionProvider_fetch_price_feed_id: SkillState
40
- BasenameActionProvider_register_basename: SkillState
41
- ERC20ActionProvider_get_balance: SkillState
42
- ERC20ActionProvider_transfer: SkillState
43
- Erc721ActionProvider_get_balance: SkillState
44
- Erc721ActionProvider_mint: SkillState
45
- Erc721ActionProvider_transfer: SkillState
46
- WethActionProvider_wrap_eth: SkillState
47
- MorphoActionProvider_deposit: SkillState
48
- MorphoActionProvider_withdraw: SkillState
49
- SuperfluidActionProvider_create_flow: SkillState
50
- SuperfluidActionProvider_delete_flow: SkillState
51
- SuperfluidActionProvider_update_flow: SkillState
52
- WowActionProvider_buy_token: SkillState
53
- WowActionProvider_create_token: SkillState
54
- WowActionProvider_sell_token: SkillState
25
+ CdpEvmWalletActionProvider_get_swap_price: SkillState
26
+ CdpEvmWalletActionProvider_swap: SkillState
55
27
 
56
28
 
57
29
  class Config(SkillConfig):
@@ -65,8 +37,8 @@ class Config(SkillConfig):
65
37
  async def get_skills(
66
38
  config: "Config",
67
39
  is_private: bool,
68
- store: SkillStoreABC,
69
40
  agent_id: str,
41
+ agent: Agent | None = None,
70
42
  **_,
71
43
  ) -> list[CDPBaseTool]:
72
44
  """Get all CDP skills.
@@ -74,7 +46,6 @@ async def get_skills(
74
46
  Args:
75
47
  config: The configuration for CDP skills.
76
48
  is_private: Whether to include private skills.
77
- store: The skill store for persisting data.
78
49
  agent_id: The ID of the agent using the skills.
79
50
 
80
51
  Returns:
@@ -90,51 +61,18 @@ async def get_skills(
90
61
  available_skills.append(skill_name)
91
62
 
92
63
  # Initialize CDP client
93
- cdp_client: CdpClient = await get_cdp_client(agent_id, store)
94
- cdp_wallet_provider: CdpEvmServerWalletProvider = (
95
- await cdp_client.get_wallet_provider()
96
- )
97
- agent_kit = AgentKit(
98
- AgentKitConfig(
99
- wallet_provider=cdp_wallet_provider,
100
- action_providers=[
101
- wallet_action_provider(),
102
- cdp_api_action_provider(),
103
- pyth_action_provider(),
104
- basename_action_provider(),
105
- erc20_action_provider(),
106
- erc721_action_provider(),
107
- weth_action_provider(),
108
- morpho_action_provider(),
109
- superfluid_action_provider(),
110
- wow_action_provider(),
111
- ],
112
- )
64
+ actions = await get_agentkit_actions(
65
+ agent_id,
66
+ [
67
+ wallet_action_provider,
68
+ cdp_api_action_provider,
69
+ cdp_evm_wallet_action_provider,
70
+ ],
71
+ agent=agent,
113
72
  )
114
- cdp_tools = get_langchain_tools(agent_kit)
115
73
  tools = []
116
74
  for skill in available_skills:
117
- if skill == "get_balance":
118
- # Get the account object for the custom GetBalance skill
119
- tools.append(
120
- GetBalance(
121
- agent_id=agent_id,
122
- skill_store=store,
123
- )
124
- )
125
- continue
126
- elif skill == "swap" or skill.endswith("_trade"):
127
- # Add the custom Swap skill, "trade" is backword compatible
128
- tools.append(
129
- Swap(
130
- agent_id=agent_id,
131
- skill_store=store,
132
- )
133
- )
134
- continue
135
- for tool in cdp_tools:
136
- if tool.name.endswith(skill):
137
- tool.handle_tool_error = lambda e: f"tool error: {e}"
138
- tool.handle_validation_error = lambda e: f"validation error: {e}"
139
- tools.append(tool)
75
+ for action in actions:
76
+ if action.name.endswith(skill):
77
+ tools.append(action_to_structured_tool(action))
140
78
  return tools
@@ -1,8 +1,5 @@
1
- from typing import Type
2
-
3
1
  from pydantic import BaseModel, Field
4
2
 
5
- from intentkit.abstracts.skill import SkillStoreABC
6
3
  from intentkit.skills.base import IntentKitSkill
7
4
 
8
5
 
@@ -11,10 +8,7 @@ class CDPBaseTool(IntentKitSkill):
11
8
 
12
9
  name: str = Field(description="The name of the tool")
13
10
  description: str = Field(description="A description of what the tool does")
14
- args_schema: Type[BaseModel]
15
- skill_store: SkillStoreABC = Field(
16
- description="The skill store for persisting data"
17
- )
11
+ args_schema: type[BaseModel]
18
12
 
19
13
  @property
20
14
  def category(self) -> str:
@@ -2,10 +2,11 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
3
  "type": "object",
4
4
  "title": "Coinbase Wallet",
5
- "description": "Integration with Coinbase Wallet (CDP) providing blockchain wallet functionality including balance checking, token transfers, and cryptocurrency trading operations",
5
+ "description": "Integration with Coinbase Wallet (CDP) providing blockchain wallet functionality including balance checking and native transfers",
6
6
  "x-icon": "https://ai.service.crestal.dev/skills/cdp/cdp.png",
7
7
  "x-tags": [
8
- "Blockchain"
8
+ "Crypto",
9
+ "DeFi"
9
10
  ],
10
11
  "properties": {
11
12
  "enabled": {
@@ -17,38 +18,6 @@
17
18
  "states": {
18
19
  "type": "object",
19
20
  "properties": {
20
- "get_balance": {
21
- "type": "string",
22
- "title": "CDP Wallet Get Balance",
23
- "enum": [
24
- "disabled",
25
- "public",
26
- "private"
27
- ],
28
- "x-enum-title": [
29
- "Disabled",
30
- "Agent Owner + All Users",
31
- "Agent Owner Only"
32
- ],
33
- "description": "Use coinbase API to get wallet balance, float result.",
34
- "default": "private"
35
- },
36
- "swap": {
37
- "type": "string",
38
- "title": "CDP Wallet Swap",
39
- "enum": [
40
- "disabled",
41
- "public",
42
- "private"
43
- ],
44
- "x-enum-title": [
45
- "Disabled",
46
- "Agent Owner + All Users",
47
- "Agent Owner Only"
48
- ],
49
- "description": "Use coinbase API to swap.",
50
- "default": "disabled"
51
- },
52
21
  "WalletActionProvider_get_balance": {
53
22
  "type": "string",
54
23
  "title": "Normal Get Balance",
@@ -81,281 +50,9 @@
81
50
  "description": "Get wallet details using coinbase API",
82
51
  "default": "public"
83
52
  },
84
- "CdpApiActionProvider_address_reputation": {
85
- "type": "string",
86
- "title": "Address Reputation",
87
- "enum": [
88
- "disabled",
89
- "public",
90
- "private"
91
- ],
92
- "x-enum-title": [
93
- "Disabled",
94
- "Agent Owner + All Users",
95
- "Agent Owner Only"
96
- ],
97
- "description": "State for CdpApiActionProvider_address_reputation",
98
- "default": "disabled"
99
- },
100
- "ERC20ActionProvider_get_balance": {
101
- "type": "string",
102
- "title": "Erc20 Get Balance",
103
- "enum": [
104
- "disabled",
105
- "public",
106
- "private"
107
- ],
108
- "x-enum-title": [
109
- "Disabled",
110
- "Agent Owner + All Users",
111
- "Agent Owner Only"
112
- ],
113
- "description": "State for ERC20ActionProvider_get_balance",
114
- "default": "disabled"
115
- },
116
- "ERC20ActionProvider_transfer": {
117
- "type": "string",
118
- "title": "Erc20 Transfer",
119
- "enum": [
120
- "disabled",
121
- "public",
122
- "private"
123
- ],
124
- "x-enum-title": [
125
- "Disabled",
126
- "Agent Owner + All Users",
127
- "Agent Owner Only"
128
- ],
129
- "description": "State for ERC20ActionProvider_transfer",
130
- "default": "private"
131
- },
132
- "WethActionProvider_wrap_eth": {
133
- "type": "string",
134
- "title": "Wrap ETH",
135
- "enum": [
136
- "disabled",
137
- "public",
138
- "private"
139
- ],
140
- "x-enum-title": [
141
- "Disabled",
142
- "Agent Owner + All Users",
143
- "Agent Owner Only"
144
- ],
145
- "description": "State for WethActionProvider_wrap_eth",
146
- "default": "disabled"
147
- },
148
- "Erc721ActionProvider_get_balance": {
149
- "type": "string",
150
- "title": "Erc721 NFT Get Balance",
151
- "enum": [
152
- "disabled",
153
- "public",
154
- "private"
155
- ],
156
- "x-enum-title": [
157
- "Disabled",
158
- "Agent Owner + All Users",
159
- "Agent Owner Only"
160
- ],
161
- "description": "State for Erc721ActionProvider_get_balance",
162
- "default": "disabled"
163
- },
164
- "Erc721ActionProvider_transfer": {
165
- "type": "string",
166
- "title": "Erc721 NFT Transfer",
167
- "enum": [
168
- "disabled",
169
- "public",
170
- "private"
171
- ],
172
- "x-enum-title": [
173
- "Disabled",
174
- "Agent Owner + All Users",
175
- "Agent Owner Only"
176
- ],
177
- "description": "State for Erc721ActionProvider_transfer",
178
- "default": "disabled"
179
- },
180
- "Erc721ActionProvider_mint": {
181
- "type": "string",
182
- "title": "Erc721 Mint",
183
- "enum": [
184
- "disabled",
185
- "public",
186
- "private"
187
- ],
188
- "x-enum-title": [
189
- "Disabled",
190
- "Agent Owner + All Users",
191
- "Agent Owner Only"
192
- ],
193
- "description": "State for Erc721ActionProvider_mint",
194
- "default": "disabled"
195
- },
196
53
  "WalletActionProvider_native_transfer": {
197
54
  "type": "string",
198
- "title": "Wallet Native Transfer",
199
- "enum": [
200
- "disabled",
201
- "public",
202
- "private"
203
- ],
204
- "x-enum-title": [
205
- "Disabled",
206
- "Agent Owner + All Users",
207
- "Agent Owner Only"
208
- ],
209
- "description": "State for WalletActionProvider_native_transfer",
210
- "default": "private"
211
- },
212
- "CdpApiActionProvider_request_faucet_funds": {
213
- "type": "string",
214
- "title": "CDP Request Faucet Funds",
215
- "enum": [
216
- "disabled",
217
- "public",
218
- "private"
219
- ],
220
- "x-enum-title": [
221
- "Disabled",
222
- "Agent Owner + All Users",
223
- "Agent Owner Only"
224
- ],
225
- "description": "Only available in base-sepolia network",
226
- "default": "disabled"
227
- },
228
- "MorphoActionProvider_deposit": {
229
- "type": "string",
230
- "title": "Morpho Deposit",
231
- "enum": [
232
- "disabled",
233
- "public",
234
- "private"
235
- ],
236
- "x-enum-title": [
237
- "Disabled",
238
- "Agent Owner + All Users",
239
- "Agent Owner Only"
240
- ],
241
- "description": "State for MorphoActionProvider_deposit",
242
- "default": "disabled"
243
- },
244
- "MorphoActionProvider_withdraw": {
245
- "type": "string",
246
- "title": "Morpho Withdraw",
247
- "enum": [
248
- "disabled",
249
- "public",
250
- "private"
251
- ],
252
- "x-enum-title": [
253
- "Disabled",
254
- "Agent Owner + All Users",
255
- "Agent Owner Only"
256
- ],
257
- "description": "State for MorphoActionProvider_withdraw",
258
- "default": "disabled"
259
- },
260
- "PythActionProvider_fetch_price_feed_id": {
261
- "type": "string",
262
- "title": "Pyth Fetch Price Feed Id",
263
- "enum": [
264
- "disabled",
265
- "public",
266
- "private"
267
- ],
268
- "x-enum-title": [
269
- "Disabled",
270
- "Agent Owner + All Users",
271
- "Agent Owner Only"
272
- ],
273
- "description": "State for PythActionProvider_fetch_price_feed_id",
274
- "default": "private"
275
- },
276
- "PythActionProvider_fetch_price": {
277
- "type": "string",
278
- "title": "Pyth Fetch Price",
279
- "enum": [
280
- "disabled",
281
- "public",
282
- "private"
283
- ],
284
- "x-enum-title": [
285
- "Disabled",
286
- "Agent Owner + All Users",
287
- "Agent Owner Only"
288
- ],
289
- "description": "State for PythActionProvider_fetch_price",
290
- "default": "private"
291
- },
292
- "WowActionProvider_buy_token": {
293
- "type": "string",
294
- "title": "Wow Buy Token",
295
- "enum": [
296
- "disabled",
297
- "public",
298
- "private"
299
- ],
300
- "x-enum-title": [
301
- "Disabled",
302
- "Agent Owner + All Users",
303
- "Agent Owner Only"
304
- ],
305
- "description": "State for WowActionProvider_buy_token",
306
- "default": "disabled"
307
- },
308
- "WowActionProvider_create_token": {
309
- "type": "string",
310
- "title": "Wow Create Token",
311
- "enum": [
312
- "disabled",
313
- "public",
314
- "private"
315
- ],
316
- "x-enum-title": [
317
- "Disabled",
318
- "Agent Owner + All Users",
319
- "Agent Owner Only"
320
- ],
321
- "description": "State for WowActionProvider_create_token",
322
- "default": "disabled"
323
- },
324
- "WowActionProvider_sell_token": {
325
- "type": "string",
326
- "title": "Wow Sell Token",
327
- "enum": [
328
- "disabled",
329
- "public",
330
- "private"
331
- ],
332
- "x-enum-title": [
333
- "Disabled",
334
- "Agent Owner + All Users",
335
- "Agent Owner Only"
336
- ],
337
- "description": "State for WowActionProvider_sell_token",
338
- "default": "disabled"
339
- },
340
- "SuperfluidActionProvider_create_flow": {
341
- "type": "string",
342
- "title": "Superfluid Create Flow",
343
- "enum": [
344
- "disabled",
345
- "public",
346
- "private"
347
- ],
348
- "x-enum-title": [
349
- "Disabled",
350
- "Agent Owner + All Users",
351
- "Agent Owner Only"
352
- ],
353
- "description": "State for SuperfluidActionProvider_create_flow",
354
- "default": "disabled"
355
- },
356
- "SuperfluidActionProvider_update_flow": {
357
- "type": "string",
358
- "title": "Superfluid Update Flow",
55
+ "title": "Native Transfer",
359
56
  "enum": [
360
57
  "disabled",
361
58
  "public",
@@ -366,12 +63,12 @@
366
63
  "Agent Owner + All Users",
367
64
  "Agent Owner Only"
368
65
  ],
369
- "description": "State for SuperfluidActionProvider_update_flow",
66
+ "description": "Transfer the native asset from the wallet",
370
67
  "default": "disabled"
371
68
  },
372
- "SuperfluidActionProvider_delete_flow": {
69
+ "CdpEvmWalletActionProvider_get_swap_price": {
373
70
  "type": "string",
374
- "title": "Superfluid Delete Flow",
71
+ "title": "Get Swap Price",
375
72
  "enum": [
376
73
  "disabled",
377
74
  "public",
@@ -382,12 +79,12 @@
382
79
  "Agent Owner + All Users",
383
80
  "Agent Owner Only"
384
81
  ],
385
- "description": "State for SuperfluidActionProvider_delete_flow",
82
+ "description": "State for CdpEvmWalletActionProvider_get_swap_price",
386
83
  "default": "disabled"
387
84
  },
388
- "BasenameActionProvider_register_basename": {
85
+ "CdpEvmWalletActionProvider_swap": {
389
86
  "type": "string",
390
- "title": "Register Basename",
87
+ "title": "Swap Tokens",
391
88
  "enum": [
392
89
  "disabled",
393
90
  "public",
@@ -398,7 +95,7 @@
398
95
  "Agent Owner + All Users",
399
96
  "Agent Owner Only"
400
97
  ],
401
- "description": "State for BasenameActionProvider_register_basename",
98
+ "description": "State for CdpEvmWalletActionProvider_swap",
402
99
  "default": "disabled"
403
100
  }
404
101
  },
@@ -1,6 +1,5 @@
1
1
  from typing import TypedDict
2
2
 
3
- from intentkit.abstracts.skill import SkillStoreABC
4
3
  from intentkit.skills.base import SkillConfig, SkillState
5
4
  from intentkit.skills.chainlist.base import ChainlistBaseTool
6
5
  from intentkit.skills.chainlist.chain_lookup import ChainLookup
@@ -22,7 +21,6 @@ class Config(SkillConfig):
22
21
  async def get_skills(
23
22
  config: "Config",
24
23
  is_private: bool,
25
- store: SkillStoreABC,
26
24
  **_,
27
25
  ) -> list[ChainlistBaseTool]:
28
26
  """Get all chainlist skills."""
@@ -36,19 +34,16 @@ async def get_skills(
36
34
  available_skills.append(skill_name)
37
35
 
38
36
  # Get each skill using the cached getter
39
- return [get_chainlist_skill(name, store) for name in available_skills]
37
+ return [get_chainlist_skill(name) for name in available_skills]
40
38
 
41
39
 
42
40
  def get_chainlist_skill(
43
41
  name: str,
44
- store: SkillStoreABC,
45
42
  ) -> ChainlistBaseTool:
46
43
  """Get a chainlist skill by name."""
47
44
  if name == "chain_lookup":
48
45
  if name not in _cache:
49
- _cache[name] = ChainLookup(
50
- skill_store=store,
51
- )
46
+ _cache[name] = ChainLookup()
52
47
  return _cache[name]
53
48
  else:
54
49
  raise ValueError(f"Unknown chainlist skill: {name}")
@@ -1,8 +1,5 @@
1
- from typing import Type
2
-
3
1
  from pydantic import BaseModel, Field
4
2
 
5
- from intentkit.abstracts.skill import SkillStoreABC
6
3
  from intentkit.skills.base import IntentKitSkill
7
4
 
8
5
 
@@ -11,10 +8,7 @@ class ChainlistBaseTool(IntentKitSkill):
11
8
 
12
9
  name: str = Field(description="The name of the tool")
13
10
  description: str = Field(description="A description of what the tool does")
14
- args_schema: Type[BaseModel]
15
- skill_store: SkillStoreABC = Field(
16
- description="The skill store for persisting data"
17
- )
11
+ args_schema: type[BaseModel]
18
12
 
19
13
  @property
20
14
  def category(self) -> str:
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Any, Dict, List, Optional, Type
2
+ from typing import Any
3
3
 
4
4
  import httpx
5
5
  from pydantic import BaseModel, Field
@@ -12,19 +12,19 @@ logger = logging.getLogger(__name__)
12
12
  class ChainLookupInput(BaseModel):
13
13
  """Input for ChainLookup tool."""
14
14
 
15
- search_term: Optional[str] = Field(
15
+ search_term: str | None = Field(
16
16
  description="Term to search for (chain name, symbol, or chain ID)",
17
17
  default=None,
18
18
  )
19
- chain_id: Optional[int] = Field(
19
+ chain_id: int | None = Field(
20
20
  description="Specific chain ID to look up",
21
21
  default=None,
22
22
  )
23
- no_tracking: Optional[bool] = Field(
23
+ no_tracking: bool | None = Field(
24
24
  description="Whether to return only RPC endpoints with no tracking",
25
25
  default=False,
26
26
  )
27
- limit: Optional[int] = Field(
27
+ limit: int | None = Field(
28
28
  description="Limit the number of results returned",
29
29
  default=5,
30
30
  )
@@ -38,7 +38,7 @@ class ChainLookup(ChainlistBaseTool):
38
38
  "Look up blockchain RPC endpoints and details by chain name, symbol, or chain ID.\n"
39
39
  "Returns information about blockchains including RPC endpoints, native currency, and explorers."
40
40
  )
41
- args_schema: Type[BaseModel] = ChainLookupInput
41
+ args_schema: type[BaseModel] = ChainLookupInput
42
42
 
43
43
  def _normalize_text(self, text: str) -> str:
44
44
  """Normalize text for searching (lowercase, remove spaces)."""
@@ -46,7 +46,7 @@ class ChainLookup(ChainlistBaseTool):
46
46
  return ""
47
47
  return text.lower().strip()
48
48
 
49
- async def _fetch_chains_data(self) -> List[Dict[str, Any]]:
49
+ async def _fetch_chains_data(self) -> list[dict[str, Any]]:
50
50
  """Fetch chains data from Chainlist API."""
51
51
  chainlist_api_url = "https://chainlist.org/rpcs.json"
52
52
 
@@ -57,12 +57,12 @@ class ChainLookup(ChainlistBaseTool):
57
57
 
58
58
  def _filter_chains(
59
59
  self,
60
- chains: List[Dict[str, Any]],
61
- search_term: Optional[str] = None,
62
- chain_id: Optional[int] = None,
60
+ chains: list[dict[str, Any]],
61
+ search_term: str | None = None,
62
+ chain_id: int | None = None,
63
63
  no_tracking: bool = False,
64
64
  limit: int = 5,
65
- ) -> List[Dict[str, Any]]:
65
+ ) -> list[dict[str, Any]]:
66
66
  """Filter chains based on search criteria."""
67
67
  filtered_chains = chains
68
68
 
@@ -118,7 +118,7 @@ class ChainLookup(ChainlistBaseTool):
118
118
 
119
119
  return filtered_chains
120
120
 
121
- def _format_chain(self, chain: Dict[str, Any]) -> Dict[str, Any]:
121
+ def _format_chain(self, chain: dict[str, Any]) -> dict[str, Any]:
122
122
  """Format a chain entry for response."""
123
123
  # Format RPC endpoints
124
124
  formatted_rpcs = []
@@ -155,13 +155,13 @@ class ChainLookup(ChainlistBaseTool):
155
155
 
156
156
  async def _arun(
157
157
  self,
158
- search_term: Optional[str] = None,
159
- chain_id: Optional[int] = None,
160
- no_tracking: Optional[bool] = False,
161
- limit: Optional[int] = 5,
162
- config: Optional[Any] = None,
158
+ search_term: str | None = None,
159
+ chain_id: int | None = None,
160
+ no_tracking: bool | None = False,
161
+ limit: int | None = 5,
162
+ config: Any | None = None,
163
163
  **kwargs,
164
- ) -> Dict:
164
+ ) -> dict:
165
165
  """Lookup blockchain RPC endpoints from Chainlist."""
166
166
  if not search_term and not chain_id:
167
167
  return {