intentkit 0.6.13.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.

Files changed (385) hide show
  1. intentkit/__init__.py +1 -1
  2. intentkit/abstracts/agent.py +4 -5
  3. intentkit/abstracts/engine.py +5 -5
  4. intentkit/abstracts/graph.py +14 -7
  5. intentkit/abstracts/skill.py +6 -144
  6. intentkit/abstracts/twitter.py +4 -5
  7. intentkit/clients/__init__.py +5 -2
  8. intentkit/clients/cdp.py +101 -141
  9. intentkit/clients/twitter.py +83 -62
  10. intentkit/clients/web3.py +29 -0
  11. intentkit/config/config.py +8 -5
  12. intentkit/core/agent.py +472 -195
  13. intentkit/core/asset.py +253 -0
  14. intentkit/core/chat.py +51 -0
  15. intentkit/core/client.py +1 -1
  16. intentkit/core/credit.py +460 -130
  17. intentkit/core/engine.py +262 -233
  18. intentkit/core/node.py +15 -16
  19. intentkit/core/prompt.py +62 -28
  20. intentkit/core/scheduler.py +92 -0
  21. intentkit/core/statistics.py +168 -0
  22. intentkit/models/agent.py +1096 -949
  23. intentkit/models/agent_data.py +68 -38
  24. intentkit/models/agent_public.json +98 -0
  25. intentkit/models/agent_schema.json +54 -439
  26. intentkit/models/app_setting.py +96 -33
  27. intentkit/models/chat.py +74 -27
  28. intentkit/models/conversation.py +8 -8
  29. intentkit/models/credit.py +362 -74
  30. intentkit/models/db.py +26 -8
  31. intentkit/models/db_mig.py +2 -2
  32. intentkit/models/llm.csv +28 -0
  33. intentkit/models/llm.py +185 -350
  34. intentkit/models/redis.py +6 -4
  35. intentkit/models/skill.py +186 -72
  36. intentkit/models/skills.csv +174 -0
  37. intentkit/models/user.py +82 -24
  38. intentkit/skills/acolyt/__init__.py +2 -9
  39. intentkit/skills/acolyt/ask.py +3 -4
  40. intentkit/skills/acolyt/base.py +4 -9
  41. intentkit/skills/acolyt/schema.json +4 -3
  42. intentkit/skills/aixbt/__init__.py +2 -13
  43. intentkit/skills/aixbt/base.py +1 -7
  44. intentkit/skills/aixbt/projects.py +14 -15
  45. intentkit/skills/aixbt/schema.json +4 -4
  46. intentkit/skills/allora/__init__.py +2 -9
  47. intentkit/skills/allora/base.py +4 -9
  48. intentkit/skills/allora/price.py +3 -4
  49. intentkit/skills/allora/schema.json +3 -2
  50. intentkit/skills/base.py +248 -85
  51. intentkit/skills/basename/__init__.py +51 -0
  52. intentkit/skills/basename/base.py +11 -0
  53. intentkit/skills/basename/basename.svg +11 -0
  54. intentkit/skills/basename/schema.json +58 -0
  55. intentkit/skills/carv/__init__.py +115 -121
  56. intentkit/skills/carv/base.py +184 -185
  57. intentkit/skills/carv/fetch_news.py +3 -3
  58. intentkit/skills/carv/onchain_query.py +4 -4
  59. intentkit/skills/carv/schema.json +134 -137
  60. intentkit/skills/carv/token_info_and_price.py +5 -5
  61. intentkit/skills/casino/README.md +254 -0
  62. intentkit/skills/casino/__init__.py +86 -0
  63. intentkit/skills/casino/base.py +17 -0
  64. intentkit/skills/casino/casino.png +0 -0
  65. intentkit/skills/casino/deck_draw.py +127 -0
  66. intentkit/skills/casino/deck_shuffle.py +118 -0
  67. intentkit/skills/casino/dice_roll.py +100 -0
  68. intentkit/skills/casino/schema.json +77 -0
  69. intentkit/skills/casino/utils.py +107 -0
  70. intentkit/skills/cdp/__init__.py +22 -84
  71. intentkit/skills/cdp/base.py +1 -7
  72. intentkit/skills/cdp/schema.json +11 -314
  73. intentkit/skills/chainlist/__init__.py +2 -7
  74. intentkit/skills/chainlist/base.py +1 -7
  75. intentkit/skills/chainlist/chain_lookup.py +18 -18
  76. intentkit/skills/chainlist/schema.json +3 -5
  77. intentkit/skills/common/__init__.py +2 -9
  78. intentkit/skills/common/base.py +1 -7
  79. intentkit/skills/common/current_time.py +1 -2
  80. intentkit/skills/common/schema.json +2 -2
  81. intentkit/skills/cookiefun/__init__.py +6 -9
  82. intentkit/skills/cookiefun/base.py +2 -7
  83. intentkit/skills/cookiefun/get_account_details.py +7 -7
  84. intentkit/skills/cookiefun/get_account_feed.py +19 -19
  85. intentkit/skills/cookiefun/get_account_smart_followers.py +7 -7
  86. intentkit/skills/cookiefun/get_sectors.py +3 -3
  87. intentkit/skills/cookiefun/schema.json +1 -3
  88. intentkit/skills/cookiefun/search_accounts.py +9 -9
  89. intentkit/skills/cryptocompare/__init__.py +7 -24
  90. intentkit/skills/cryptocompare/api.py +2 -3
  91. intentkit/skills/cryptocompare/base.py +11 -25
  92. intentkit/skills/cryptocompare/fetch_news.py +4 -5
  93. intentkit/skills/cryptocompare/fetch_price.py +6 -7
  94. intentkit/skills/cryptocompare/fetch_top_exchanges.py +4 -5
  95. intentkit/skills/cryptocompare/fetch_top_market_cap.py +4 -5
  96. intentkit/skills/cryptocompare/fetch_top_volume.py +4 -5
  97. intentkit/skills/cryptocompare/fetch_trading_signals.py +5 -6
  98. intentkit/skills/cryptocompare/schema.json +3 -3
  99. intentkit/skills/cryptopanic/__init__.py +7 -10
  100. intentkit/skills/cryptopanic/base.py +51 -55
  101. intentkit/skills/cryptopanic/fetch_crypto_news.py +4 -8
  102. intentkit/skills/cryptopanic/fetch_crypto_sentiment.py +5 -7
  103. intentkit/skills/cryptopanic/schema.json +105 -103
  104. intentkit/skills/dapplooker/__init__.py +2 -9
  105. intentkit/skills/dapplooker/base.py +4 -9
  106. intentkit/skills/dapplooker/dapplooker_token_data.py +7 -7
  107. intentkit/skills/dapplooker/schema.json +3 -5
  108. intentkit/skills/defillama/__init__.py +24 -74
  109. intentkit/skills/defillama/api.py +6 -9
  110. intentkit/skills/defillama/base.py +11 -21
  111. intentkit/skills/defillama/coins/fetch_batch_historical_prices.py +8 -10
  112. intentkit/skills/defillama/coins/fetch_block.py +6 -8
  113. intentkit/skills/defillama/coins/fetch_current_prices.py +8 -10
  114. intentkit/skills/defillama/coins/fetch_first_price.py +7 -9
  115. intentkit/skills/defillama/coins/fetch_historical_prices.py +9 -11
  116. intentkit/skills/defillama/coins/fetch_price_chart.py +9 -11
  117. intentkit/skills/defillama/coins/fetch_price_percentage.py +7 -9
  118. intentkit/skills/defillama/config/chains.py +1 -3
  119. intentkit/skills/defillama/fees/fetch_fees_overview.py +24 -26
  120. intentkit/skills/defillama/schema.json +5 -1
  121. intentkit/skills/defillama/stablecoins/fetch_stablecoin_chains.py +16 -18
  122. intentkit/skills/defillama/stablecoins/fetch_stablecoin_charts.py +8 -10
  123. intentkit/skills/defillama/stablecoins/fetch_stablecoin_prices.py +5 -7
  124. intentkit/skills/defillama/stablecoins/fetch_stablecoins.py +7 -9
  125. intentkit/skills/defillama/tests/api_integration.test.py +1 -1
  126. intentkit/skills/defillama/tvl/fetch_chain_historical_tvl.py +4 -6
  127. intentkit/skills/defillama/tvl/fetch_chains.py +9 -11
  128. intentkit/skills/defillama/tvl/fetch_historical_tvl.py +4 -6
  129. intentkit/skills/defillama/tvl/fetch_protocol.py +32 -38
  130. intentkit/skills/defillama/tvl/fetch_protocol_current_tvl.py +3 -5
  131. intentkit/skills/defillama/tvl/fetch_protocols.py +37 -45
  132. intentkit/skills/defillama/volumes/fetch_dex_overview.py +42 -48
  133. intentkit/skills/defillama/volumes/fetch_dex_summary.py +35 -37
  134. intentkit/skills/defillama/volumes/fetch_options_overview.py +24 -28
  135. intentkit/skills/defillama/yields/fetch_pool_chart.py +10 -12
  136. intentkit/skills/defillama/yields/fetch_pools.py +26 -30
  137. intentkit/skills/dexscreener/README.md +154 -0
  138. intentkit/skills/dexscreener/__init__.py +97 -93
  139. intentkit/skills/dexscreener/base.py +125 -133
  140. intentkit/skills/dexscreener/get_pair_info.py +158 -0
  141. intentkit/skills/dexscreener/get_token_pairs.py +165 -0
  142. intentkit/skills/dexscreener/get_tokens_info.py +212 -0
  143. intentkit/skills/dexscreener/model/search_token_response.py +80 -82
  144. intentkit/skills/dexscreener/schema.json +91 -48
  145. intentkit/skills/dexscreener/search_token.py +182 -321
  146. intentkit/skills/dexscreener/utils.py +420 -0
  147. intentkit/skills/dune_analytics/__init__.py +7 -9
  148. intentkit/skills/dune_analytics/base.py +48 -52
  149. intentkit/skills/dune_analytics/fetch_kol_buys.py +5 -7
  150. intentkit/skills/dune_analytics/fetch_nation_metrics.py +6 -8
  151. intentkit/skills/dune_analytics/schema.json +104 -99
  152. intentkit/skills/elfa/__init__.py +5 -18
  153. intentkit/skills/elfa/base.py +10 -14
  154. intentkit/skills/elfa/mention.py +19 -21
  155. intentkit/skills/elfa/schema.json +3 -2
  156. intentkit/skills/elfa/stats.py +4 -4
  157. intentkit/skills/elfa/tokens.py +12 -12
  158. intentkit/skills/elfa/utils.py +26 -28
  159. intentkit/skills/enso/__init__.py +11 -31
  160. intentkit/skills/enso/base.py +50 -35
  161. intentkit/skills/enso/best_yield.py +16 -24
  162. intentkit/skills/enso/networks.py +6 -11
  163. intentkit/skills/enso/prices.py +11 -13
  164. intentkit/skills/enso/route.py +34 -38
  165. intentkit/skills/enso/schema.json +3 -2
  166. intentkit/skills/enso/tokens.py +29 -38
  167. intentkit/skills/enso/wallet.py +76 -191
  168. intentkit/skills/erc20/__init__.py +50 -0
  169. intentkit/skills/erc20/base.py +11 -0
  170. intentkit/skills/erc20/erc20.svg +5 -0
  171. intentkit/skills/erc20/schema.json +74 -0
  172. intentkit/skills/erc721/__init__.py +53 -0
  173. intentkit/skills/erc721/base.py +11 -0
  174. intentkit/skills/erc721/erc721.svg +5 -0
  175. intentkit/skills/erc721/schema.json +90 -0
  176. intentkit/skills/firecrawl/README.md +11 -5
  177. intentkit/skills/firecrawl/__init__.py +5 -18
  178. intentkit/skills/firecrawl/base.py +4 -11
  179. intentkit/skills/firecrawl/clear.py +4 -8
  180. intentkit/skills/firecrawl/crawl.py +19 -19
  181. intentkit/skills/firecrawl/query.py +4 -3
  182. intentkit/skills/firecrawl/schema.json +6 -8
  183. intentkit/skills/firecrawl/scrape.py +150 -40
  184. intentkit/skills/firecrawl/utils.py +50 -42
  185. intentkit/skills/github/__init__.py +2 -7
  186. intentkit/skills/github/base.py +1 -7
  187. intentkit/skills/github/github_search.py +1 -2
  188. intentkit/skills/github/schema.json +3 -4
  189. intentkit/skills/heurist/__init__.py +8 -27
  190. intentkit/skills/heurist/base.py +4 -9
  191. intentkit/skills/heurist/image_generation_animagine_xl.py +12 -13
  192. intentkit/skills/heurist/image_generation_arthemy_comics.py +12 -13
  193. intentkit/skills/heurist/image_generation_arthemy_real.py +12 -13
  194. intentkit/skills/heurist/image_generation_braindance.py +12 -13
  195. intentkit/skills/heurist/image_generation_cyber_realistic_xl.py +12 -13
  196. intentkit/skills/heurist/image_generation_flux_1_dev.py +12 -13
  197. intentkit/skills/heurist/image_generation_sdxl.py +12 -13
  198. intentkit/skills/heurist/schema.json +2 -2
  199. intentkit/skills/http/__init__.py +4 -15
  200. intentkit/skills/http/base.py +1 -7
  201. intentkit/skills/http/get.py +21 -16
  202. intentkit/skills/http/post.py +23 -18
  203. intentkit/skills/http/put.py +23 -18
  204. intentkit/skills/http/schema.json +4 -5
  205. intentkit/skills/lifi/__init__.py +8 -13
  206. intentkit/skills/lifi/base.py +1 -7
  207. intentkit/skills/lifi/schema.json +17 -8
  208. intentkit/skills/lifi/token_execute.py +36 -30
  209. intentkit/skills/lifi/token_quote.py +8 -10
  210. intentkit/skills/lifi/utils.py +104 -51
  211. intentkit/skills/moralis/__init__.py +6 -10
  212. intentkit/skills/moralis/api.py +6 -7
  213. intentkit/skills/moralis/base.py +5 -10
  214. intentkit/skills/moralis/fetch_chain_portfolio.py +10 -11
  215. intentkit/skills/moralis/fetch_nft_portfolio.py +22 -22
  216. intentkit/skills/moralis/fetch_solana_portfolio.py +11 -12
  217. intentkit/skills/moralis/fetch_wallet_portfolio.py +8 -9
  218. intentkit/skills/moralis/schema.json +7 -2
  219. intentkit/skills/morpho/__init__.py +52 -0
  220. intentkit/skills/morpho/base.py +11 -0
  221. intentkit/skills/morpho/morpho.svg +12 -0
  222. intentkit/skills/morpho/schema.json +73 -0
  223. intentkit/skills/nation/__init__.py +4 -9
  224. intentkit/skills/nation/base.py +5 -10
  225. intentkit/skills/nation/nft_check.py +3 -4
  226. intentkit/skills/nation/schema.json +4 -3
  227. intentkit/skills/onchain.py +23 -0
  228. intentkit/skills/openai/__init__.py +17 -18
  229. intentkit/skills/openai/base.py +10 -14
  230. intentkit/skills/openai/dalle_image_generation.py +3 -8
  231. intentkit/skills/openai/gpt_avatar_generator.py +102 -0
  232. intentkit/skills/openai/gpt_image_generation.py +4 -8
  233. intentkit/skills/openai/gpt_image_mini_generator.py +91 -0
  234. intentkit/skills/openai/gpt_image_to_image.py +4 -8
  235. intentkit/skills/openai/image_to_text.py +3 -7
  236. intentkit/skills/openai/schema.json +34 -3
  237. intentkit/skills/portfolio/__init__.py +11 -35
  238. intentkit/skills/portfolio/base.py +33 -19
  239. intentkit/skills/portfolio/schema.json +3 -5
  240. intentkit/skills/portfolio/token_balances.py +21 -21
  241. intentkit/skills/portfolio/wallet_approvals.py +17 -18
  242. intentkit/skills/portfolio/wallet_defi_positions.py +3 -3
  243. intentkit/skills/portfolio/wallet_history.py +31 -31
  244. intentkit/skills/portfolio/wallet_net_worth.py +13 -13
  245. intentkit/skills/portfolio/wallet_nfts.py +19 -19
  246. intentkit/skills/portfolio/wallet_profitability.py +18 -18
  247. intentkit/skills/portfolio/wallet_profitability_summary.py +5 -5
  248. intentkit/skills/portfolio/wallet_stats.py +3 -3
  249. intentkit/skills/portfolio/wallet_swaps.py +19 -19
  250. intentkit/skills/pyth/__init__.py +50 -0
  251. intentkit/skills/pyth/base.py +11 -0
  252. intentkit/skills/pyth/pyth.svg +6 -0
  253. intentkit/skills/pyth/schema.json +75 -0
  254. intentkit/skills/skills.toml +40 -0
  255. intentkit/skills/slack/__init__.py +5 -17
  256. intentkit/skills/slack/base.py +3 -9
  257. intentkit/skills/slack/get_channel.py +8 -8
  258. intentkit/skills/slack/get_message.py +9 -9
  259. intentkit/skills/slack/schedule_message.py +5 -5
  260. intentkit/skills/slack/schema.json +2 -2
  261. intentkit/skills/slack/send_message.py +3 -5
  262. intentkit/skills/supabase/__init__.py +7 -23
  263. intentkit/skills/supabase/base.py +9 -13
  264. intentkit/skills/supabase/delete_data.py +5 -6
  265. intentkit/skills/supabase/fetch_data.py +13 -14
  266. intentkit/skills/supabase/insert_data.py +5 -6
  267. intentkit/skills/supabase/invoke_function.py +7 -8
  268. intentkit/skills/supabase/schema.json +2 -3
  269. intentkit/skills/supabase/update_data.py +7 -8
  270. intentkit/skills/supabase/upsert_data.py +5 -6
  271. intentkit/skills/superfluid/__init__.py +53 -0
  272. intentkit/skills/superfluid/base.py +11 -0
  273. intentkit/skills/superfluid/schema.json +89 -0
  274. intentkit/skills/superfluid/superfluid.svg +6 -0
  275. intentkit/skills/system/__init__.py +7 -24
  276. intentkit/skills/system/add_autonomous_task.py +10 -12
  277. intentkit/skills/system/delete_autonomous_task.py +2 -2
  278. intentkit/skills/system/edit_autonomous_task.py +14 -18
  279. intentkit/skills/system/list_autonomous_tasks.py +3 -5
  280. intentkit/skills/system/read_agent_api_key.py +6 -4
  281. intentkit/skills/system/regenerate_agent_api_key.py +6 -4
  282. intentkit/skills/system/schema.json +6 -8
  283. intentkit/skills/tavily/__init__.py +3 -12
  284. intentkit/skills/tavily/base.py +4 -9
  285. intentkit/skills/tavily/schema.json +3 -5
  286. intentkit/skills/tavily/tavily_extract.py +2 -4
  287. intentkit/skills/tavily/tavily_search.py +4 -6
  288. intentkit/skills/token/__init__.py +5 -10
  289. intentkit/skills/token/base.py +7 -11
  290. intentkit/skills/token/erc20_transfers.py +19 -19
  291. intentkit/skills/token/schema.json +3 -6
  292. intentkit/skills/token/token_analytics.py +3 -3
  293. intentkit/skills/token/token_price.py +13 -13
  294. intentkit/skills/token/token_search.py +9 -9
  295. intentkit/skills/twitter/__init__.py +11 -35
  296. intentkit/skills/twitter/base.py +23 -35
  297. intentkit/skills/twitter/follow_user.py +3 -7
  298. intentkit/skills/twitter/get_mentions.py +6 -13
  299. intentkit/skills/twitter/get_timeline.py +5 -13
  300. intentkit/skills/twitter/get_user_by_username.py +3 -7
  301. intentkit/skills/twitter/get_user_tweets.py +6 -14
  302. intentkit/skills/twitter/like_tweet.py +3 -7
  303. intentkit/skills/twitter/post_tweet.py +23 -12
  304. intentkit/skills/twitter/reply_tweet.py +21 -12
  305. intentkit/skills/twitter/retweet.py +3 -7
  306. intentkit/skills/twitter/schema.json +1 -0
  307. intentkit/skills/twitter/search_tweets.py +5 -13
  308. intentkit/skills/unrealspeech/__init__.py +2 -7
  309. intentkit/skills/unrealspeech/base.py +2 -8
  310. intentkit/skills/unrealspeech/schema.json +2 -5
  311. intentkit/skills/unrealspeech/text_to_speech.py +8 -8
  312. intentkit/skills/venice_audio/__init__.py +98 -106
  313. intentkit/skills/venice_audio/base.py +117 -121
  314. intentkit/skills/venice_audio/input.py +41 -41
  315. intentkit/skills/venice_audio/schema.json +151 -152
  316. intentkit/skills/venice_audio/venice_audio.py +38 -21
  317. intentkit/skills/venice_image/__init__.py +147 -154
  318. intentkit/skills/venice_image/api.py +138 -138
  319. intentkit/skills/venice_image/base.py +185 -192
  320. intentkit/skills/venice_image/config.py +33 -35
  321. intentkit/skills/venice_image/image_enhance/image_enhance.py +2 -3
  322. intentkit/skills/venice_image/image_enhance/image_enhance_base.py +21 -23
  323. intentkit/skills/venice_image/image_enhance/image_enhance_input.py +38 -40
  324. intentkit/skills/venice_image/image_generation/image_generation_base.py +9 -9
  325. intentkit/skills/venice_image/image_generation/image_generation_fluently_xl.py +26 -26
  326. intentkit/skills/venice_image/image_generation/image_generation_flux_dev.py +27 -27
  327. intentkit/skills/venice_image/image_generation/image_generation_flux_dev_uncensored.py +26 -26
  328. intentkit/skills/venice_image/image_generation/image_generation_input.py +158 -158
  329. intentkit/skills/venice_image/image_generation/image_generation_lustify_sdxl.py +26 -26
  330. intentkit/skills/venice_image/image_generation/image_generation_pony_realism.py +26 -26
  331. intentkit/skills/venice_image/image_generation/image_generation_stable_diffusion_3_5.py +28 -28
  332. intentkit/skills/venice_image/image_generation/image_generation_venice_sd35.py +28 -28
  333. intentkit/skills/venice_image/image_upscale/image_upscale.py +3 -3
  334. intentkit/skills/venice_image/image_upscale/image_upscale_base.py +21 -23
  335. intentkit/skills/venice_image/image_upscale/image_upscale_input.py +22 -22
  336. intentkit/skills/venice_image/image_vision/image_vision.py +2 -2
  337. intentkit/skills/venice_image/image_vision/image_vision_base.py +17 -17
  338. intentkit/skills/venice_image/image_vision/image_vision_input.py +9 -9
  339. intentkit/skills/venice_image/schema.json +267 -267
  340. intentkit/skills/venice_image/utils.py +77 -78
  341. intentkit/skills/web_scraper/__init__.py +5 -18
  342. intentkit/skills/web_scraper/base.py +21 -7
  343. intentkit/skills/web_scraper/document_indexer.py +7 -6
  344. intentkit/skills/web_scraper/schema.json +2 -6
  345. intentkit/skills/web_scraper/scrape_and_index.py +15 -15
  346. intentkit/skills/web_scraper/utils.py +62 -63
  347. intentkit/skills/web_scraper/website_indexer.py +17 -19
  348. intentkit/skills/weth/__init__.py +49 -0
  349. intentkit/skills/weth/base.py +11 -0
  350. intentkit/skills/weth/schema.json +58 -0
  351. intentkit/skills/weth/weth.svg +6 -0
  352. intentkit/skills/wow/__init__.py +51 -0
  353. intentkit/skills/wow/base.py +11 -0
  354. intentkit/skills/wow/schema.json +89 -0
  355. intentkit/skills/wow/wow.svg +7 -0
  356. intentkit/skills/x402/__init__.py +61 -0
  357. intentkit/skills/x402/ask_agent.py +98 -0
  358. intentkit/skills/x402/base.py +99 -0
  359. intentkit/skills/x402/http_request.py +117 -0
  360. intentkit/skills/x402/schema.json +45 -0
  361. intentkit/skills/x402/x402.webp +0 -0
  362. intentkit/skills/xmtp/__init__.py +4 -15
  363. intentkit/skills/xmtp/base.py +61 -2
  364. intentkit/skills/xmtp/price.py +18 -13
  365. intentkit/skills/xmtp/schema.json +69 -71
  366. intentkit/skills/xmtp/swap.py +22 -25
  367. intentkit/skills/xmtp/transfer.py +71 -32
  368. intentkit/utils/chain.py +3 -3
  369. intentkit/utils/error.py +14 -1
  370. intentkit/utils/logging.py +2 -4
  371. intentkit/utils/s3.py +59 -7
  372. intentkit/utils/schema.py +100 -0
  373. intentkit/utils/slack_alert.py +7 -8
  374. {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/METADATA +14 -16
  375. intentkit-0.8.17.dist-info/RECORD +466 -0
  376. intentkit/abstracts/exception.py +0 -9
  377. intentkit/core/skill.py +0 -200
  378. intentkit/models/generator.py +0 -347
  379. intentkit/skills/cdp/get_balance.py +0 -110
  380. intentkit/skills/cdp/swap.py +0 -121
  381. intentkit/skills/moralis/tests/__init__.py +0 -0
  382. intentkit/skills/moralis/tests/test_wallet.py +0 -511
  383. intentkit-0.6.13.dev2.dist-info/RECORD +0 -409
  384. {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/WHEEL +0 -0
  385. {intentkit-0.6.13.dev2.dist-info → intentkit-0.8.17.dist-info}/licenses/LICENSE +0 -0
intentkit/models/redis.py CHANGED
@@ -1,21 +1,20 @@
1
1
  """Redis client module for IntentKit."""
2
2
 
3
3
  import logging
4
- from typing import Optional
5
4
 
6
5
  from redis.asyncio import Redis
7
6
 
8
7
  logger = logging.getLogger(__name__)
9
8
 
10
9
  # Global Redis client instance
11
- _redis_client: Optional[Redis] = None
10
+ _redis_client: Redis | None = None
12
11
 
13
12
 
14
13
  async def init_redis(
15
14
  host: str,
16
15
  port: int = 6379,
17
16
  db: int = 0,
18
- password: Optional[str] = None,
17
+ password: str | None = None,
19
18
  ssl: bool = False,
20
19
  encoding: str = "utf-8",
21
20
  decode_responses: bool = True,
@@ -74,6 +73,9 @@ def get_redis() -> Redis:
74
73
  return _redis_client
75
74
 
76
75
 
76
+ DEFAULT_HEARTBEAT_TTL = 16 * 60
77
+
78
+
77
79
  async def send_heartbeat(redis_client: Redis, name: str) -> None:
78
80
  """Set a heartbeat key in Redis that expires after 16 minutes.
79
81
 
@@ -83,7 +85,7 @@ async def send_heartbeat(redis_client: Redis, name: str) -> None:
83
85
  """
84
86
  try:
85
87
  key = f"intentkit:heartbeat:{name}"
86
- await redis_client.set(key, 1, ex=190) # 190 seconds = 3 minutes
88
+ await redis_client.set(key, 1, ex=DEFAULT_HEARTBEAT_TTL)
87
89
  except Exception as e:
88
90
  logger.error(f"Failed to send heartbeat for {name}: {e}")
89
91
 
intentkit/models/skill.py CHANGED
@@ -1,7 +1,12 @@
1
+ from __future__ import annotations
2
+
3
+ import csv
1
4
  import json
2
- from datetime import datetime, timezone
5
+ import logging
6
+ from datetime import UTC, datetime
3
7
  from decimal import Decimal
4
- from typing import Annotated, Any, Dict, Optional
8
+ from pathlib import Path
9
+ from typing import Annotated, Any
5
10
 
6
11
  from intentkit.models.base import Base
7
12
  from intentkit.models.db import get_session
@@ -19,6 +24,9 @@ from sqlalchemy import (
19
24
  select,
20
25
  )
21
26
  from sqlalchemy.dialects.postgresql import JSON, JSONB
27
+ from sqlalchemy.ext.asyncio import AsyncSession
28
+
29
+ logger = logging.getLogger(__name__)
22
30
 
23
31
 
24
32
  class AgentSkillDataTable(Base):
@@ -40,7 +48,7 @@ class AgentSkillDataTable(Base):
40
48
  DateTime(timezone=True),
41
49
  nullable=False,
42
50
  server_default=func.now(),
43
- onupdate=lambda: datetime.now(timezone.utc),
51
+ onupdate=lambda: datetime.now(UTC),
44
52
  )
45
53
 
46
54
 
@@ -52,7 +60,7 @@ class AgentSkillDataCreate(BaseModel):
52
60
  agent_id: Annotated[str, Field(description="ID of the agent this data belongs to")]
53
61
  skill: Annotated[str, Field(description="Name of the skill this data is for")]
54
62
  key: Annotated[str, Field(description="Key for this specific piece of data")]
55
- data: Annotated[Dict[str, Any], Field(description="JSON data stored for this key")]
63
+ data: Annotated[dict[str, Any], Field(description="JSON data stored for this key")]
56
64
 
57
65
  async def save(self) -> "AgentSkillData":
58
66
  """Save or update skill data.
@@ -151,7 +159,7 @@ class AgentSkillData(AgentSkillDataCreate):
151
159
  return result or 0
152
160
 
153
161
  @classmethod
154
- async def get(cls, agent_id: str, skill: str, key: str) -> Optional[dict]:
162
+ async def get(cls, agent_id: str, skill: str, key: str) -> dict | None:
155
163
  """Get skill data for an agent.
156
164
 
157
165
  Args:
@@ -207,12 +215,12 @@ class AgentSkillData(AgentSkillDataCreate):
207
215
  await db.commit()
208
216
 
209
217
 
210
- class ThreadSkillDataTable(Base):
211
- """Database table model for storing skill-specific data for threads."""
218
+ class ChatSkillDataTable(Base):
219
+ """Database table model for storing skill-specific data for chats."""
212
220
 
213
- __tablename__ = "thread_skill_data"
221
+ __tablename__ = "chat_skill_data"
214
222
 
215
- thread_id = Column(String, primary_key=True)
223
+ chat_id = Column(String, primary_key=True)
216
224
  skill = Column(String, primary_key=True)
217
225
  key = Column(String, primary_key=True)
218
226
  agent_id = Column(String, nullable=False)
@@ -226,35 +234,33 @@ class ThreadSkillDataTable(Base):
226
234
  DateTime(timezone=True),
227
235
  nullable=False,
228
236
  server_default=func.now(),
229
- onupdate=lambda: datetime.now(timezone.utc),
237
+ onupdate=lambda: datetime.now(UTC),
230
238
  )
231
239
 
232
240
 
233
- class ThreadSkillDataCreate(BaseModel):
234
- """Base model for creating thread skill data records."""
241
+ class ChatSkillDataCreate(BaseModel):
242
+ """Base model for creating chat skill data records."""
235
243
 
236
244
  model_config = ConfigDict(from_attributes=True)
237
245
 
238
- thread_id: Annotated[
239
- str, Field(description="ID of the thread this data belongs to")
240
- ]
246
+ chat_id: Annotated[str, Field(description="ID of the chat this data belongs to")]
241
247
  skill: Annotated[str, Field(description="Name of the skill this data is for")]
242
248
  key: Annotated[str, Field(description="Key for this specific piece of data")]
243
- agent_id: Annotated[str, Field(description="ID of the agent that owns this thread")]
244
- data: Annotated[Dict[str, Any], Field(description="JSON data stored for this key")]
249
+ agent_id: Annotated[str, Field(description="ID of the agent that owns this chat")]
250
+ data: Annotated[dict[str, Any], Field(description="JSON data stored for this key")]
245
251
 
246
- async def save(self) -> "ThreadSkillData":
252
+ async def save(self) -> "ChatSkillData":
247
253
  """Save or update skill data.
248
254
 
249
255
  Returns:
250
- ThreadSkillData: The saved thread skill data instance
256
+ ChatSkillData: The saved chat skill data instance
251
257
  """
252
258
  async with get_session() as db:
253
259
  record = await db.scalar(
254
- select(ThreadSkillDataTable).where(
255
- ThreadSkillDataTable.thread_id == self.thread_id,
256
- ThreadSkillDataTable.skill == self.skill,
257
- ThreadSkillDataTable.key == self.key,
260
+ select(ChatSkillDataTable).where(
261
+ ChatSkillDataTable.chat_id == self.chat_id,
262
+ ChatSkillDataTable.skill == self.skill,
263
+ ChatSkillDataTable.key == self.key,
258
264
  )
259
265
  )
260
266
 
@@ -264,18 +270,18 @@ class ThreadSkillDataCreate(BaseModel):
264
270
  record.agent_id = self.agent_id
265
271
  else:
266
272
  # Create new record
267
- record = ThreadSkillDataTable(**self.model_dump())
273
+ record = ChatSkillDataTable(**self.model_dump())
268
274
  db.add(record)
269
275
  await db.commit()
270
276
  await db.refresh(record)
271
- return ThreadSkillData.model_validate(record)
277
+ return ChatSkillData.model_validate(record)
272
278
 
273
279
 
274
- class ThreadSkillData(ThreadSkillDataCreate):
275
- """Model for storing skill-specific data for threads.
280
+ class ChatSkillData(ChatSkillDataCreate):
281
+ """Model for storing skill-specific data for chats.
276
282
 
277
- This model uses a composite primary key of (thread_id, skill, key) to store
278
- skill-specific data for threads in a flexible way. It also includes agent_id
283
+ This model uses a composite primary key of (chat_id, skill, key) to store
284
+ skill-specific data for chats in a flexible way. It also includes agent_id
279
285
  as a required field for tracking ownership.
280
286
  """
281
287
 
@@ -292,11 +298,11 @@ class ThreadSkillData(ThreadSkillDataCreate):
292
298
  ]
293
299
 
294
300
  @classmethod
295
- async def get(cls, thread_id: str, skill: str, key: str) -> Optional[dict]:
296
- """Get skill data for a thread.
301
+ async def get(cls, chat_id: str, skill: str, key: str) -> dict | None:
302
+ """Get skill data for a chat.
297
303
 
298
304
  Args:
299
- thread_id: ID of the thread
305
+ chat_id: ID of the chat
300
306
  skill: Name of the skill
301
307
  key: Data key
302
308
 
@@ -305,10 +311,10 @@ class ThreadSkillData(ThreadSkillDataCreate):
305
311
  """
306
312
  async with get_session() as db:
307
313
  record = await db.scalar(
308
- select(ThreadSkillDataTable).where(
309
- ThreadSkillDataTable.thread_id == thread_id,
310
- ThreadSkillDataTable.skill == skill,
311
- ThreadSkillDataTable.key == key,
314
+ select(ChatSkillDataTable).where(
315
+ ChatSkillDataTable.chat_id == chat_id,
316
+ ChatSkillDataTable.skill == skill,
317
+ ChatSkillDataTable.key == key,
312
318
  )
313
319
  )
314
320
  return record.data if record else None
@@ -317,38 +323,108 @@ class ThreadSkillData(ThreadSkillDataCreate):
317
323
  async def clean_data(
318
324
  cls,
319
325
  agent_id: str,
320
- thread_id: Annotated[
326
+ chat_id: Annotated[
321
327
  str,
322
328
  Field(
323
329
  default="",
324
- description="Optional ID of the thread. If provided, only cleans data for that thread.",
330
+ description="Optional ID of the chat. If provided, only cleans data for that chat.",
325
331
  ),
326
332
  ],
327
333
  ):
328
- """Clean all skill data for a thread or agent.
334
+ """Clean all skill data for a chat or agent.
329
335
 
330
336
  Args:
331
337
  agent_id: ID of the agent
332
- thread_id: Optional ID of the thread. If provided, only cleans data for that thread.
333
- If empty, cleans all data for the agent.
338
+ chat_id: Optional ID of the chat. If provided, only cleans data for that chat.
339
+ If empty, cleans all data for the agent.
334
340
  """
335
341
  async with get_session() as db:
336
- if thread_id and thread_id != "":
342
+ if chat_id and chat_id != "":
337
343
  await db.execute(
338
- delete(ThreadSkillDataTable).where(
339
- ThreadSkillDataTable.agent_id == agent_id,
340
- ThreadSkillDataTable.thread_id == thread_id,
344
+ delete(ChatSkillDataTable).where(
345
+ ChatSkillDataTable.agent_id == agent_id,
346
+ ChatSkillDataTable.chat_id == chat_id,
341
347
  )
342
348
  )
343
349
  else:
344
350
  await db.execute(
345
- delete(ThreadSkillDataTable).where(
346
- ThreadSkillDataTable.agent_id == agent_id
351
+ delete(ChatSkillDataTable).where(
352
+ ChatSkillDataTable.agent_id == agent_id
347
353
  )
348
354
  )
349
355
  await db.commit()
350
356
 
351
357
 
358
+ def _skill_parse_bool(value: str | None) -> bool:
359
+ if value is None:
360
+ return False
361
+ return value.strip().lower() in {"true", "1", "yes"}
362
+
363
+
364
+ def _skill_parse_optional_int(value: str | None) -> int | None:
365
+ if value is None:
366
+ return None
367
+ value = value.strip()
368
+ return int(value) if value else None
369
+
370
+
371
+ def _skill_parse_decimal(value: str | None, default: str = "0") -> Decimal:
372
+ value = (value or "").strip()
373
+ if not value:
374
+ value = default
375
+ return Decimal(value)
376
+
377
+
378
+ def _load_default_skills() -> tuple[dict[str, "Skill"], dict[tuple[str, str], "Skill"]]:
379
+ """Load default skills from CSV into lookup maps."""
380
+
381
+ path = Path(__file__).with_name("skills.csv")
382
+ if not path.exists():
383
+ logger.warning("Default skills CSV not found at %s", path)
384
+ return {}, {}
385
+
386
+ by_name: dict[str, Skill] = {}
387
+ by_category_config: dict[tuple[str, str], Skill] = {}
388
+
389
+ with path.open(newline="", encoding="utf-8") as csvfile:
390
+ reader = csv.DictReader(csvfile)
391
+ for row in reader:
392
+ try:
393
+ timestamp = datetime.now(UTC)
394
+ price_default = row.get("price") or "1"
395
+ skill = Skill(
396
+ name=row["name"],
397
+ category=row["category"],
398
+ config_name=row.get("config_name") or None,
399
+ enabled=_skill_parse_bool(row.get("enabled")),
400
+ price_level=_skill_parse_optional_int(row.get("price_level")),
401
+ price=_skill_parse_decimal(row.get("price"), default="1"),
402
+ price_self_key=_skill_parse_decimal(
403
+ row.get("price_self_key"), default=price_default
404
+ ),
405
+ rate_limit_count=_skill_parse_optional_int(
406
+ row.get("rate_limit_count")
407
+ ),
408
+ rate_limit_minutes=_skill_parse_optional_int(
409
+ row.get("rate_limit_minutes")
410
+ ),
411
+ author=row.get("author") or None,
412
+ created_at=timestamp,
413
+ updated_at=timestamp,
414
+ )
415
+ except Exception as exc:
416
+ logger.error(
417
+ "Failed to load default skill %s: %s", row.get("name"), exc
418
+ )
419
+ continue
420
+
421
+ by_name[skill.name] = skill
422
+ if skill.config_name:
423
+ by_category_config[(skill.category, skill.config_name)] = skill
424
+
425
+ return by_name, by_category_config
426
+
427
+
352
428
  class SkillTable(Base):
353
429
  """Database table model for Skill."""
354
430
 
@@ -373,7 +449,7 @@ class SkillTable(Base):
373
449
  DateTime(timezone=True),
374
450
  nullable=False,
375
451
  server_default=func.now(),
376
- onupdate=lambda: datetime.now(timezone.utc),
452
+ onupdate=lambda: datetime.now(UTC),
377
453
  )
378
454
 
379
455
 
@@ -390,10 +466,8 @@ class Skill(BaseModel):
390
466
  name: Annotated[str, Field(description="Name of the skill")]
391
467
  enabled: Annotated[bool, Field(description="Is this skill enabled?")]
392
468
  category: Annotated[str, Field(description="Category of the skill")]
393
- config_name: Annotated[Optional[str], Field(description="Config name of the skill")]
394
- price_level: Annotated[
395
- Optional[int], Field(description="Price level for this skill")
396
- ]
469
+ config_name: Annotated[str | None, Field(description="Config name of the skill")]
470
+ price_level: Annotated[int | None, Field(description="Price level for this skill")]
397
471
  price: Annotated[
398
472
  Decimal, Field(description="Price for this skill", default=Decimal("1"))
399
473
  ]
@@ -401,11 +475,9 @@ class Skill(BaseModel):
401
475
  Decimal,
402
476
  Field(description="Price for this skill with self key", default=Decimal("1")),
403
477
  ]
404
- rate_limit_count: Annotated[Optional[int], Field(description="Rate limit count")]
405
- rate_limit_minutes: Annotated[
406
- Optional[int], Field(description="Rate limit minutes")
407
- ]
408
- author: Annotated[Optional[str], Field(description="Author of the skill")]
478
+ rate_limit_count: Annotated[int | None, Field(description="Rate limit count")]
479
+ rate_limit_minutes: Annotated[int | None, Field(description="Rate limit minutes")]
480
+ author: Annotated[str | None, Field(description="Author of the skill")]
409
481
  created_at: Annotated[
410
482
  datetime, Field(description="Timestamp when this record was created")
411
483
  ]
@@ -414,7 +486,7 @@ class Skill(BaseModel):
414
486
  ]
415
487
 
416
488
  @staticmethod
417
- async def get(name: str) -> Optional["Skill"]:
489
+ async def get(name: str) -> Skill | None:
418
490
  """Get a skill by name with Redis caching.
419
491
 
420
492
  The skill is cached in Redis for 3 minutes.
@@ -447,20 +519,23 @@ class Skill(BaseModel):
447
519
  stmt = select(SkillTable).where(SkillTable.name == name)
448
520
  skill = await session.scalar(stmt)
449
521
 
450
- # If skill doesn't exist, return None
451
- if not skill:
452
- return None
453
-
454
- # Convert to Skill model
455
- skill_model = Skill.model_validate(skill)
522
+ # If skill exists in database, convert and cache it
523
+ if skill:
524
+ skill_model = Skill.model_validate(skill)
525
+ await redis.set(cache_key, skill_model.model_dump_json(), ex=cache_ttl)
526
+ return skill_model
456
527
 
457
- # Cache the skill in Redis
528
+ # Fallback to default skills loaded from CSV
529
+ default_skill = DEFAULT_SKILLS_BY_NAME.get(name)
530
+ if default_skill:
531
+ skill_model = default_skill.model_copy(deep=True)
458
532
  await redis.set(cache_key, skill_model.model_dump_json(), ex=cache_ttl)
459
-
460
533
  return skill_model
461
534
 
535
+ return None
536
+
462
537
  @staticmethod
463
- async def get_by_config_name(category: str, config_name: str) -> Optional["Skill"]:
538
+ async def get_by_config_name(category: str, config_name: str) -> "Skill" | None:
464
539
  """Get a skill by category and config_name.
465
540
 
466
541
  Args:
@@ -477,9 +552,48 @@ class Skill(BaseModel):
477
552
  )
478
553
  skill = await session.scalar(stmt)
479
554
 
480
- # If skill doesn't exist, return None
481
- if not skill:
482
- return None
555
+ # If skill exists in database, return it
556
+ if skill:
557
+ return Skill.model_validate(skill)
558
+
559
+ # Fallback to default skills loaded from CSV
560
+ default_skill = DEFAULT_SKILLS_BY_CATEGORY_CONFIG.get((category, config_name))
561
+ if default_skill:
562
+ return default_skill.model_copy(deep=True)
563
+
564
+ return None
565
+
566
+ @classmethod
567
+ async def get_all(cls, session: AsyncSession | None = None) -> list["Skill"]:
568
+ """Return all skills merged from defaults and database overrides."""
569
+
570
+ if session is None:
571
+ async with get_session() as db:
572
+ return await cls.get_all(session=db)
573
+
574
+ skills: dict[str, Skill] = {
575
+ name: skill.model_copy(deep=True)
576
+ for name, skill in DEFAULT_SKILLS_BY_NAME.items()
577
+ }
578
+
579
+ result = await session.execute(select(SkillTable))
580
+ for row in result.scalars():
581
+ skill_model = cls.model_validate(row)
582
+
583
+ default_skill = DEFAULT_SKILLS_BY_NAME.get(skill_model.name)
584
+ if default_skill is not None:
585
+ # Merge database overrides with default skill configuration while
586
+ # keeping default values for fields that are omitted in the
587
+ # database (e.g. config_name).
588
+ skill_model = default_skill.model_copy(
589
+ update=skill_model.model_dump(exclude_none=True),
590
+ deep=True,
591
+ )
592
+
593
+ skills[skill_model.name] = skill_model
594
+
595
+ return list(skills.values())
596
+
483
597
 
484
- # Convert to Skill model
485
- return Skill.model_validate(skill)
598
+ # Default skills loaded from CSV
599
+ DEFAULT_SKILLS_BY_NAME, DEFAULT_SKILLS_BY_CATEGORY_CONFIG = _load_default_skills()
@@ -0,0 +1,174 @@
1
+ category,config_name,name,enabled,price_level,price,price_self_key,rate_limit_count,rate_limit_minutes,author
2
+ acolyt,ask_gpt,acolyt_ask_gpt,FALSE,1,1,1,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
3
+ aixbt,aixbt_projects,aixbt_projects,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
4
+ allora,get_price_prediction,allora_get_price_prediction,TRUE,4,230,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
5
+ basename,BasenameActionProvider_register_basename,BasenameActionProvider_register_basename,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
6
+ cdp,CdpApiActionProvider_request_faucet_funds,CdpApiActionProvider_request_faucet_funds,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
7
+ cdp,CdpEvmWalletActionProvider_get_swap_price,CdpEvmWalletActionProvider_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
8
+ cdp,CdpEvmWalletActionProvider_swap,CdpEvmWalletActionProvider_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
9
+ cdp,WalletActionProvider_get_balance,WalletActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
10
+ cdp,WalletActionProvider_get_wallet_details,WalletActionProvider_get_wallet_details,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
11
+ cdp,WalletActionProvider_native_transfer,WalletActionProvider_native_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
12
+ erc20,ERC20ActionProvider_get_balance,ERC20ActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
13
+ erc20,ERC20ActionProvider_transfer,ERC20ActionProvider_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
14
+ erc721,Erc721ActionProvider_get_balance,Erc721ActionProvider_get_balance,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
15
+ erc721,Erc721ActionProvider_mint,Erc721ActionProvider_mint,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
16
+ erc721,Erc721ActionProvider_transfer,Erc721ActionProvider_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
17
+ morpho,MorphoActionProvider_deposit,MorphoActionProvider_deposit,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
18
+ morpho,MorphoActionProvider_withdraw,MorphoActionProvider_withdraw,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
19
+ pyth,PythActionProvider_fetch_price,PythActionProvider_fetch_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
20
+ pyth,PythActionProvider_fetch_price_feed,PythActionProvider_fetch_price_feed,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
21
+ superfluid,SuperfluidActionProvider_create_flow,SuperfluidActionProvider_create_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
22
+ superfluid,SuperfluidActionProvider_delete_flow,SuperfluidActionProvider_delete_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
23
+ superfluid,SuperfluidActionProvider_update_flow,SuperfluidActionProvider_update_flow,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
24
+ weth,WethActionProvider_wrap_eth,WethActionProvider_wrap_eth,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
25
+ wow,WowActionProvider_buy_token,WowActionProvider_buy_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
26
+ wow,WowActionProvider_create_token,WowActionProvider_create_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
27
+ wow,WowActionProvider_sell_token,WowActionProvider_sell_token,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
28
+ chainlist,chain_lookup,chain-lookup,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
29
+ common,current_time,common_current_time,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
30
+ cookiefun,get_account_details,cookiefun_get_account_details,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
31
+ cookiefun,get_account_feed,cookiefun_get_account_feed,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
32
+ cookiefun,get_account_smart_followers,cookiefun_get_account_smart_followers,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
33
+ cookiefun,get_sectors,cookiefun_get_sectors,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
34
+ cookiefun,search_accounts,cookiefun_search_accounts,TRUE,2,70,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
35
+ cryptocompare,fetch_news,cryptocompare_fetch_news,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
36
+ cryptocompare,fetch_price,cryptocompare_fetch_price,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
37
+ cryptocompare,fetch_top_exchanges,cryptocompare_fetch_top_exchanges,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
38
+ cryptocompare,fetch_top_market_cap,cryptocompare_fetch_top_market_cap,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
39
+ cryptocompare,fetch_top_volume,cryptocompare_fetch_top_volume,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
40
+ cryptocompare,fetch_trading_signals,cryptocompare_fetch_trading_signals,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
41
+ cryptopanic,fetch_crypto_news,fetch_crypto_news,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
42
+ cryptopanic,fetch_crypto_sentiment,fetch_crypto_sentiment,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
43
+ dapplooker,dapplooker_token_data,dapplooker_token_data,TRUE,1,10,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
44
+ defillama,fetch_batch_historical_prices,defillama_fetch_batch_historical_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
45
+ defillama,fetch_block,defillama_fetch_block,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
46
+ defillama,fetch_current_prices,defillama_fetch_current_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
47
+ defillama,fetch_first_price,defillama_fetch_first_price,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
48
+ defillama,fetch_historical_prices,defillama_fetch_historical_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
49
+ defillama,fetch_price_chart,defillama_fetch_price_chart,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
50
+ defillama,fetch_price_percentage,defillama_fetch_price_percentage,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
51
+ defillama,fetch_fees_overview,defillama_fetch_fees_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
52
+ defillama,fetch_stablecoin_chains,defillama_fetch_stablecoin_chains,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
53
+ defillama,fetch_stablecoin_charts,defillama_fetch_stablecoin_charts,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
54
+ defillama,fetch_stablecoin_prices,defillama_fetch_stablecoin_prices,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
55
+ defillama,fetch_stablecoins,defillama_fetch_stablecoins,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
56
+ defillama,fetch_chain_historical_tvl,defillama_fetch_chain_historical_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
57
+ defillama,fetch_chains,defillama_fetch_chains,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
58
+ defillama,fetch_total_historical_tvl,defillama_fetch_total_historical_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
59
+ defillama,fetch_protocol_tvl,defillama_fetch_protocol_tvl,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
60
+ defillama,fetch_protocol,defillama_fetch_protocol,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
61
+ defillama,fetch_protocols,defillama_fetch_protocols,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
62
+ defillama,fetch_dex_overview,defillama_fetch_dex_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
63
+ defillama,fetch_dex_summary,defillama_fetch_dex_summary,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
64
+ defillama,fetch_options_overview,defillama_fetch_options_overview,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
65
+ defillama,fetch_pool_chart,defillama_fetch_pool_chart,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
66
+ defillama,fetch_pools,defillama_fetch_pools,TRUE,1,5,5,,,0x91D43BfDc698b1e510efa0811e2e07F628D02e6b
67
+ dexscreener,search_token,dexscreener_search_token,TRUE,1,5,5,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
68
+ dexscreener,get_pair_info,dexscreener_get_pair_info,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
69
+ dexscreener,get_token_pairs,dexscreener_get_token_pairs,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
70
+ dexscreener,get_tokens_info,dexscreener_get_tokens_info,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
71
+ dune_analytics,fetch_kol_buys,dune_fetch_kol_buys,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
72
+ dune_analytics,fetch_nation_metrics,dune_fetch_nation_metrics,TRUE,1,5,5,,,0x178741Fc5BA9B77147398853c28736eEFe5fCff1
73
+ elfa,get_smart_stats,elfa_get_smart_stats,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
74
+ elfa,get_top_mentions,elfa_get_top_mentions,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
75
+ elfa,get_trending_tokens,elfa_get_trending_tokens,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
76
+ elfa,search_mentions,elfa_search_mentions,TRUE,1,15,15,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
77
+ enso,get_best_yield,enso_get_best_yield,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
78
+ enso,get_networks,enso_get_networks,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
79
+ enso,get_prices,enso_get_prices,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
80
+ enso,get_tokens,enso_get_tokens,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
81
+ enso,get_wallet_approvals,enso_get_wallet_approvals,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
82
+ enso,get_wallet_balances,enso_get_wallet_balances,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
83
+ enso,route_shortcut,enso_route_shortcut,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
84
+ enso,wallet_approve,enso_wallet_approve,TRUE,1,5,5,,,0x2Bd32A312280bF5A01140e68ca630fB76cE8A3De
85
+ github,github_search,github_search,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
86
+ heurist,image_generation_animagine_xl,heurist_image_generation_animagine_xl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
87
+ heurist,image_generation_arthemy_comics,heurist_image_generation_arthemy_comics,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
88
+ heurist,image_generation_arthemy_real,heurist_image_generation_arthemy_real,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
89
+ heurist,image_generation_braindance,heurist_image_generation_braindance,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
90
+ heurist,image_generation_cyber_realistic_xl,heurist_image_generation_cyber_realistic_xl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
91
+ heurist,image_generation_flux_1_dev,heurist_image_generation_flux_1_dev,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
92
+ heurist,image_generation_sdxl,heurist_image_generation_sdxl,TRUE,2,50,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
93
+ lifi,token_execute,lifi_token_execute,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
94
+ lifi,token_quote,lifi_token_quote,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
95
+ moralis,fetch_chain_portfolio,moralis_fetch_chain_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
96
+ moralis,fetch_nft_portfolio,moralis_fetch_nft_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
97
+ moralis,fetch_solana_portfolio,moralis_fetch_solana_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
98
+ moralis,fetch_wallet_portfolio,moralis_fetch_wallet_portfolio,TRUE,1,5,5,,,0xd1a8Dd23e356B9fAE27dF5DeF9ea025A602EC81e
99
+ nation,nft_check,nft_check,FALSE,1,5,5,,,0x275960ad41DbE218bBf72cDF612F88b5C6f40648
100
+ openai,dalle_image_generation,dalle_image_generation,TRUE,4,200,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
101
+ openai,gpt_image_generation,gpt_image_generation,TRUE,5,400,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
102
+ openai,gpt_image_mini_generator,gpt_image_mini_generator,TRUE,3,100,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
103
+ openai,gpt_avatar_generator,gpt_avatar_generator,TRUE,2,50,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
104
+ openai,gpt_image_to_image,gpt_image_to_image,TRUE,5,400,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
105
+ openai,image_to_text,image_to_text,TRUE,4,200,15,,,0x445750026A4a1906b61302442E085f9cbAfe206a
106
+ portfolio,token_balances,portfolio_token_balances,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
107
+ portfolio,wallet_approvals,portfolio_wallet_approvals,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
108
+ portfolio,wallet_history,portfolio_wallet_history,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
109
+ portfolio,wallet_net_worth,portfolio_wallet_net_worth,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
110
+ portfolio,wallet_profitability_summary,portfolio_wallet_profitability_summary,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
111
+ portfolio,wallet_profitability,portfolio_wallet_profitability,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
112
+ portfolio,wallet_stats,portfolio_wallet_stats,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
113
+ portfolio,wallet_swaps,portfolio_wallet_swaps,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
114
+ portfolio,wallet_defi_positions,portfolio_wallet_defi_positions,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
115
+ portfolio,wallet_nfts,portfolio_wallet_nfts,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
116
+ slack,get_channel,slack_get_channel,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
117
+ slack,get_message,slack_get_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
118
+ slack,schedule_message,slack_schedule_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
119
+ slack,send_message,slack_send_message,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
120
+ supabase,fetch_data,supabase_fetch_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
121
+ supabase,insert_data,supabase_insert_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
122
+ supabase,update_data,supabase_update_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
123
+ supabase,upsert_data,supabase_upsert_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
124
+ supabase,delete_data,supabase_delete_data,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
125
+ supabase,invoke_function,supabase_invoke_function,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
126
+ system,read_agent_api_key,system_read_agent_api_key,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
127
+ system,regenerate_agent_api_key,system_regenerate_agent_api_key,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
128
+ system,list_autonomous_tasks,system_list_autonomous_tasks,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
129
+ system,add_autonomous_task,system_add_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
130
+ system,edit_autonomous_task,system_edit_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
131
+ system,delete_autonomous_task,system_delete_autonomous_task,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
132
+ http,http_get,http_get,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
133
+ http,http_put,http_put,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
134
+ http,http_post,http_post,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
135
+ tavily,tavily_search,tavily_search,TRUE,1,20,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
136
+ tavily,tavily_extract,tavily_extract,TRUE,1,20,10,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
137
+ token,token_erc20_transfers,token_erc20_transfers,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
138
+ token,token_analytics,token_analytics,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
139
+ token,token_price,token_price,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
140
+ token,token_search,token_search,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
141
+ twitter,follow_user,twitter_follow_user,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
142
+ twitter,get_mentions,twitter_get_mentions,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
143
+ twitter,get_timeline,twitter_get_timeline,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
144
+ twitter,get_user_tweets,twitter_get_user_tweets,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
145
+ twitter,like_tweet,twitter_like_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
146
+ twitter,post_tweet,twitter_post_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
147
+ twitter,reply_tweet,twitter_reply_tweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
148
+ twitter,retweet,twitter_retweet,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
149
+ twitter,search_tweets,twitter_search_tweets,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
150
+ twitter,get_user_by_username,twitter_get_user_by_username,TRUE,2,60,10,,,0x445750026A4a1906b61302442E085f9cbAfe206a
151
+ unrealspeech,text_to_speech,text_to_speech,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
152
+ venice_image,image_generation_fluently_xl,venice_image_generation_fluently_xl,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
153
+ venice_image,image_generation_flux_dev,venice_image_generation_flux_dev,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
154
+ venice_image,image_generation_flux_dev_uncensored,venice_image_generation_flux_dev_uncensored,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
155
+ venice_image,image_generation_lustify_sdxl,venice_image_generation_lustify_sdxl,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
156
+ venice_image,image_generation_pony_realism,venice_image_generation_pony_realism,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
157
+ venice_image,image_generation_stable_diffusion_3_5,venice_image_generation_stable_diffusion_3_5,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
158
+ venice_image,image_generation_venice_sd35,venice_image_generation_venice_sd35,TRUE,2,50,10,,,0xF60D4B6780D5D51827602D7aC319458bc9e921F4
159
+ web_scraper,scrape_and_index,web_scraper_scrape_and_index,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
160
+ web_scraper,query_indexed_content,web_scraper_query_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
161
+ web_scraper,website_indexer,web_scraper_website_indexer,TRUE,4,200,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
162
+ web_scraper,document_indexer,web_scraper_document_indexer,TRUE,4,200,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
163
+ firecrawl,firecrawl_scrape,firecrawl_scrape,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
164
+ firecrawl,firecrawl_crawl,firecrawl_crawl,TRUE,3,100,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
165
+ firecrawl,firecrawl_query_indexed_content,firecrawl_query_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
166
+ firecrawl,firecrawl_clear_indexed_content,firecrawl_clear_indexed_content,TRUE,1,5,5,,,0x3cdd051eeC909f94965F9c1c657f5b70a172B2C0
167
+ xmtp,xmtp_transfer,xmtp_transfer,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
168
+ xmtp,xmtp_swap,xmtp_swap,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
169
+ xmtp,xmtp_get_swap_price,xmtp_get_swap_price,TRUE,1,5,5,,,0x445750026A4a1906b61302442E085f9cbAfe206a
170
+ x402,x402_ask_agent,x402_ask_agent,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
171
+ x402,x402_http_request,x402_http_request,TRUE,1,1,1,,,0x445750026A4a1906b61302442E085f9cbAfe206a
172
+ casino,deck_shuffle,casino_deck_shuffle,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
173
+ casino,deck_draw,casino_deck_draw,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0
174
+ casino,dice_roll,casino_dice_roll,true,1,5,5,,,0x3cdd051eec909f94965f9c1c657f5b70a172b2c0