IntentKit Token 工具集实战基于 Moralis 的多链代币价格、搜索、分析与转账追踪指南【免费下载链接】intentkitIntentKit is an open-source, self-hosted cloud agent cluster that manages a collaborative team of AI agents for you.项目地址: https://gitcode.com/GitHub_Trending/int/intentkit导读IntentKit 在intentkit/tools/token目录下内置了一套完整的区块链代币分析工具集Toolset它封装了 Moralis Web3 Data API为 AI Agent 提供代币价格查询、ERC20 转账追踪、代币搜索与交易分析四大能力。本文以 token 工具集官方文档 为骨架结合源码逐层拆解每个工具的输入参数、返回结构与底层实现原理读完你可以独立完成工具集的配置启用并理解 Agent 调用这些工具时的完整调用链与错误处理机制。一、工具集总览四个工具覆盖代币分析的四个核心场景Token 工具集面向区块链代币分析场景提供四个工具全部由 Moralis API 驱动覆盖从查价格到看转账再到做分析的完整链路工具说明Moralis 端点典型示例提示token_price查询代币价格与基本信息GET /erc20/:address/priceWhats the current price of PEPE token? Get the price of USDT on Ethereum.token_erc20_transfers查询某钱包的 ERC20 代币转账记录GET /:address/erc20/transfersShow me all the USDT transfers for my wallet. What are the recent token transactions for 0x123?token_search*按名称、符号或地址搜索代币GET /tokens/searchFind tokens with pepe in the name. Search for tokens with high market cap on Ethereum.token_analytics查询代币的详细交易分析数据GET /tokens/:address/analyticsShow me analytics for the PEPE token. What are the buy/sell volumes for USDT in the last 24 hours?* Premium 端点token_search需要与 Moralis Business 计划或自定义 Enterprise 计划关联的 API Key 才能使用这一点在源码注释中也有明确标注见 token_search.py。从源码结构看每个工具都是独立模块、继承同一基类目录布局如下intentkit/tools/token/ ├── __init__.py # 工具集注册与工具实例缓存 ├── base.py # TokenBaseTool 基类API Key 获取、HTTP 请求封装 ├── constants.py # 默认参数常量DEFAULT_CHAIN / DEFAULT_LIMIT / DEFAULT_ORDER ├── token_price.py # token_price 工具 ├── token_erc20_transfers.py # token_erc20_transfers 工具 ├── token_search.py # token_search 工具 ├── token_analytics.py # token_analytics 工具 └── schema.json # 工具集的配置 Schemastates 状态枚举定义__init__.py中暴露了三个关键入口见init.pyget_tools(config, is_private)根据配置的 states 过滤并返回启用的工具列表get_token_tool(name)按名称获取单个工具实例带模块级缓存_cache字典因为工具是无状态的available()检查系统配置中是否存在moralis_api_key作为该工具集是否可用的开关。二、配置指南环境变量 YAML 双层配置2.1 全局 API Key通过环境变量注入Token 工具集依赖 Moralis API Key在 IntentKit 中通过环境变量MORALIS_API_KEY注入配置加载逻辑见 config.pyself.moralis_api_key: str | None self.load(MORALIS_API_KEY)。在TokenBaseTool.get_api_key()中见 base.py如果未配置该 Key会抛出ToolException(Moralis API key is not configured)同时__init__.py中的available()也依赖该 Key 判定工具集是否可用未配置时整个工具集都不会被加载。2.2 工具级配置YAML 中的 tools.token 段在 Agent 的配置文件中通过如下 YAML 片段启用并设置各工具的状态tools: token: api_key: your_moralis_api_key_here states: token_price: public token_erc20_transfers: public token_search: public token_analytics: publicstates字段的取值枚举定义在 schema.json 中每个工具都有三种状态状态含义disabled禁用schema 默认值publicAgent Owner 所有用户可见private仅 Agent Owner 可见这个三态模型在 tools/base.py 中由ToolState Literal[disabled, public, private]定义并通过is_tool_visible(state, is_private)判定public始终可见private仅当当前调用上下文是 owner/team即is_privateTrue时可见disabled永远不可见。get_tools的过滤逻辑见init.py正是基于这一规则遍历config[states]跳过disabled对public或private且is_private的工具调用get_token_tool(name)获取实例并返回。三、工具逐个拆解参数、端点与源码实现3.1 token_price查询代币价格端点GET /erc20/{address}/price返回代币以链上原生币和 USD 计价的实时价格。输入参数定义见 token_price.py 的TokenPriceInput参数必填默认值说明address是—代币合约地址chain否eth要查询的链如eth、bsc、polygoninclude否无设为percent_change时返回 24h 涨跌幅exchange否无交易所名称或地址factoryto_block否无查询指定区块高度的价格max_token_inactivity否无排除超过该天数不活跃的代币min_pair_side_liquidity_usd否无只返回单边流动性不低于该 USD 值的交易对实现上_arun会先通过self.get_context()获取上下文、self.get_api_key()获取 API Key然后把可选参数按需加入params字典最终以GET方法请求/erc20/{address}/price。示例提示词Whats the current price of PEPE token?、Get the price of USDT on Ethereum.。3.2 token_erc20_transfers追踪钱包的 ERC20 转账端点GET /{address}/erc20/transfers按区块号倒序返回指定钱包地址的 ERC20 代币交易记录适合做链上行为追踪、资金流向分析。输入参数定义见 erc20_transfers.py 的ERC20TransfersInput参数必填默认值说明address是—钱包地址chain否eth链标识contract_addresses否无按合约地址列表过滤只返回这些代币的转账from_block/to_block否无按区块范围过滤from_date/to_date否无按日期范围过滤limit否100每页返回条数DEFAULT_LIMITorder否DESC排序方式ASC或DESCDEFAULT_ORDERcursor否无分页游标用于翻页获取更多记录默认常量定义在 constants.pyDEFAULT_CHAIN eth、DEFAULT_LIMIT 100、DEFAULT_ORDER DESC。示例提示词Show me all the USDT transfers for my wallet.、What are the recent token transactions for 0x123?。3.3 token_search按名称/符号/地址搜索代币Premium端点GET /tokens/search按合约地址、代币名称或符号搜索代币。输入参数定义见 token_search.py 的TokenSearchInput参数必填默认值说明query是—代币地址、名称或符号chains否无要搜索的链列表如[eth, bsc]会以逗号拼接传输limit否无最大返回结果数is_verified_contract否无是否只返回已验证合约布尔值源码中作为isVerifiedContract参数传输Premium 限制与容错此端点需要 Business 或 Enterprise 计划。源码中专门做了 403 错误识别——当响应包含403时会在结果中附加notice字段提示该 API 需要 Moralis Business plan 或 Enterprise plan请确保你的 API Key 关联了相应计划异常分支也会附带相同提示方便 Agent 将计划限制转化为可理解的用户反馈。3.4 token_analytics代币交易数据分析端点GET /tokens/{address}/analytics按代币地址返回交易量、买卖方数量、流动性等分析数据是四个工具中最分析向的一个。输入参数仅两个——address必填代币地址与chain可选默认eth见 token_analytics.py。实现上它把params {chain: chain}直接交给_make_request逻辑最简洁。示例提示词Show me analytics for the PEPE token.、What are the buy/sell volumes for USDT in the last 24 hours?。四、返回结构结构化 JSON 示例所有 Token 工具都返回 Moralis API 的结构化数据。以下是文档给出的两个典型响应示例可直接作为 Agent 解析与下游展示的参考。4.1 Token Price 响应{ tokenName: Pepe, tokenSymbol: PEPE, tokenLogo: https://cdn.moralis.io/eth/0x6982508145454ce325ddbe47a25d4ec3d2311933.png, tokenDecimals: 18, usdPrice: 0.000012302426023896, usdPriceFormatted: 0.000012302426023896, 24hrPercentChange: -3.7369101031758394, exchangeName: Uniswap v3, tokenAddress: 0x6982508145454ce325ddbe47a25d4ec3d2311933 }关键字段说明usdPrice为 USD 计价原始值usdPriceFormatted为格式化字符串便于直接展示24hrPercentChange为 24h 涨跌幅百分比tokenDecimals为代币精度用于自行换算最小单位数量tokenLogo为代币 Logo 的 CDN 地址。4.2 Token Analytics 响应{ tokenAddress: 0x6982508145454ce325ddbe47a25d4ec3d2311933, totalBuyVolume: { 5m: , 1h: 43678.642005116264, 6h: 129974.13379912674, 24h: 4583254.969119737 }, totalSellVolume: { 5m: 147.69184595604904, 1h: 393.0296489666009, 6h: 257421.35479601548, 24h: 4735908.689740969 }, totalBuyers: { 5m: , 1h: 33, 6h: 115, 24h: 547 }, totalSellers: { 5m: 1, 1h: 2, 6h: 78, 24h: 587 } }响应按5m / 1h / 6h / 24h四个时间窗口组织买入量、卖出量、买方数与卖方数。注意5m窗口可能返回空字符串如示例中的totalBuyVolume[5m]与totalBuyers[5m]下游解析时应做空值兼容。这些数据可直接用于代币的市场热度评估与短期买卖压力分析。五、源码级原理TokenBaseTool 基类与统一请求管线四个工具共享同一个基类TokenBaseTool见 base.py它继承自 IntentKit 的IntentKitTool见 tools/base.py将取 Key → 构造请求 → 发 HTTP → 错误兜底整条链路收敛为三个方法get_api_key()从全局配置读取moralis_api_key缺失时抛出ToolException由框架统一转成对 Agent 友好的错误消息。_prepare_params(params)把布尔值参数统一转为小写字符串如True→true保证与 Moralis API 的查询参数约定一致。_make_request(method, endpoint, api_key, params, data)基于aiohttp异步发起请求请求头固定为{accept: application/json, X-API-Key: api_key}当响应状态码 ≥ 400 时返回{error: ..., details: ...}aiohttp.ClientError与其他异常分别捕获并转为结构化错误保证任何网络异常都不会让 Agent 崩溃而是得到可读的错误对象。基类中category: str token标记了工具归属分类请求的目标 Base URL 来自 moralis.py 中定义的MORALIS_API_BASE_URL https://deep-index.moralis.io/api/v2.2。值得留意的是该客户端文件还同时承载了钱包估值能力get_wallet_net_worth查询 ETH/Base/Arbitrum/BSC 四链钱包净资产与 Token 工具集同源复用同一 API Key。六、使用技巧与注意事项结合文档与源码以下是实际使用 Token 工具集的要点多链查询务必指定 chain 参数各工具默认chaineth。跨链场景如 BSC、Polygon若不显式指定链查询结果会与预期不符因此建议 Agent 在提示词中携带链信息。留意token_search的计划限制该端点属于 Premium 能力需 Business/Enterprise 计划关联的 Key遇到 403 时工具会返回notice提示Agent 应将其如实转达给用户而非反复重试。善用token_analytics做市场研判其买卖量/买卖方数据可支撑短期热度、买卖压力等分析结论是代币分析与市场评估的高价值数据源。分页与过滤组合使用token_erc20_transfers支持cursor游标翻页、contract_addresses/from_block/to_date等多维过滤在追踪大额钱包或特定代币流向时先过滤再翻页可显著降低请求量与噪声。响应空值兼容Analytics 的5m窗口可能返回空字符串下游解析 JSON 时建议做缺省值处理。七、常见问题排查现象可能原因处理方式工具集未加载未配置MORALIS_API_KEY环境变量注入环境变量后重启服务available()才会返回 True调用报 API key is not configured配置中 Key 为空检查环境变量名与拼写确认与 config.py 中load(MORALIS_API_KEY)一致token_search返回 403套餐不满足 Premium 要求升级 Moralis Business/Enterprise 计划或改用其余三个工具查询结果与预期不符未指定chain命中默认eth在提示词或参数中显式指定目标链如需进一步了解各端点的完整字段语义可结合本仓库工具定义与返回示例自行验证也可以参考intentkit/tools/token/schema.json中每个工具的描述文案如token_price的获取代币以原生币和 USD 计价的价格这些描述同时会被注入到 Agent 的工具选择上下文中影响 LLM 的工具调用决策。【免费下载链接】intentkitIntentKit is an open-source, self-hosted cloud agent cluster that manages a collaborative team of AI agents for you.项目地址: https://gitcode.com/GitHub_Trending/int/intentkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考