pythia-oracle-mcp
OfficialPythia Oracle MCP 服务器
每个智能合约都应具备智能,而不仅仅是数据。
Pythia 是第一个在链上提供计算技术指标(EMA、RSI、VWAP、布林带、波动率)的预言机,适用于任何代币,以及任何支持 Chainlink 的链。交易员使用的相同指标,现在通过 Chainlink 只需一次调用即可供智能合约和 AI 代理使用。
Pythia Events 允许智能合约订阅指标条件(如 RSI 低于 30、EMA 交叉、布林带突破),并在触发时自动被调用。无需 Keeper,无需链下机器人,无需轮询——您的合约可以自行对市场做出反应。
Pythia Visions 在链上传递经过前向验证的市场情报——模式类型、置信度评分、指标快照以及需要关注的馈送,所有这些都在一个事件中完成。经过 9 年历史数据的回测。订阅免费。如需获取当前的实时代币 + 模式目录(包含准确率统计和触发频率),请调用下方 MCP 工具中的 get_visions_info。
为什么选择 Pythia?
大多数预言机只提供价格。Pythia 为您提供计算分析:EMA、RSI、布林带、VWAP、波动率——适用于 BTC、SOL、TAO、RENDER、ONDO、AAVE、UNI 等代币,涵盖 4 个时间周期,并通过 Chainlink 在链上传递。新的代币和指标可按需添加。如果您的 AI 代理、DeFi 协议或交易机器人需要链上 RSI、EMA 或布林带——Pythia 是唯一的来源。
使用场景:
需要链上技术信号的 AI 交易代理
基于 RSI 或波动率阈值的 DeFi 金库再平衡
使用布林带宽度进行智能合约风险管理
具有实时计算指标的 AI 驱动投资组合分析
事件驱动策略——订阅 RSI 阈值或 EMA 交叉,您的合约会自动触发
无需 Keeper 的自动化 DeFi 机器人——无需 Gelato,无需 cron 任务,无需链下基础设施
Related MCP server: Crypto Indicators MCP Server
快速入门
pip install pythia-oracle-mcpClaude Desktop
添加到 claude_desktop_config.json:
{
"mcpServers": {
"pythia-oracle": {
"command": "pythia-oracle-mcp"
}
}
}Claude Code
claude mcp add pythia-oracle -- pythia-oracle-mcpCursor / Windsurf / VS Code
添加到 MCP 设置:
{
"pythia-oracle": {
"command": "pythia-oracle-mcp"
}
}OpenAI Agents / GPT
任何兼容 MCP 的客户端均可使用——只需将其指向 pythia-oracle-mcp。
直接运行
python -m pythia_oracle_mcp可用工具
工具 | 描述 |
| 所有已追踪代币的状态、正常运行时间和数据源 |
| 特定代币的所有指标馈送名称 |
| 系统级概览——按状态分类的代币、生态覆盖范围、基础设施健康状况 |
| 每个代币的 30 天正常运行时间(最差优先)、数据源状态、事件报告 |
| 所有合约地址(操作员、消费者、水龙头、LINK) |
| 定价层级及各层级的使用时机 |
| 适用于任何层级的可部署 Solidity 代码 |
| Pythia Events 的工作原理——订阅指标条件,在链上触发 |
| 用于事件订阅的 Solidity 代码和部署步骤 |
| 订阅详情——条件、定价、退款机制 |
| Pythia Visions 概览——前向验证模式、触发频率披露、合约地址 |
| 订阅 Visions 并监听 VisionFired 事件的 Solidity 代码 |
| 代币最近触发的 Visions,包含模式细分和置信度统计 |
| 触发 Vision 的完整丰富对象——失败概况、冷却时间上下文、并发触发 |
| 将事件 feedId (bytes32) 反向查找为其人类可读的馈送名称 |
| 枚举所有者地址的活跃 Pythia Event 订阅 |
| 任何 Pythia 指标馈送的最新计算值(链下缓存) |
示例提示词
询问您的 AI 代理:
"Pythia 为比特币提供了哪些指标?"
调用 get_token_feeds("bitcoin")——返回比特币的所有指标馈送,按类型分组。
"Pythia 是否足够可靠以进行集成?"
调用 check_oracle_health()——返回每个代币的正常运行时间、数据源健康状况和活跃事件。
"给我一个 Solidity 合约来使用 Pythia 的速度包"
调用 get_integration_guide("speed")——返回一个包含正确地址和作业 ID 的完整、可部署的合约。
"Pythia 覆盖哪些代币,它们是否都在正常工作?"
调用 get_market_summary()——返回生态覆盖范围、状态细分和基础设施健康状况。
"Pythia Events 是如何工作的?我希望我的合约在 BTC RSI 低于 30 时做出反应。"
调用 get_events_info()——返回订阅的工作原理、支持的条件和定价。
"给我订阅 EMA 交叉事件的 Solidity 代码。"
调用 get_events_guide()——返回一个带有订阅/接收模式的可部署 EventSubscriber 合约。
"什么是 Pythia Visions?它能检测到哪些模式?"
调用 get_visions_info()——返回经过前向验证的模式,包含准确率范围、触发频率、合约地址及其工作原理。
"向我展示最近触发的 BTC Visions"
调用 get_vision_history("BTC")——返回最近的模式检测结果,包含置信度和价格。
"给我订阅 Pythia Visions 的 Solidity 代码"
调用 get_visions_guide()——返回一个订阅 VisionFired 事件的合约。
Pythia 提供的内容
任何代币,任何支持 Chainlink 的链——目前服务于 BTC、SOL、TAO、RENDER、ONDO、AAVE、UNI、MORPHO 等,并可按需添加新代币
6 种指标类型: EMA、RSI、布林带(上轨/下轨)、VWAP、波动率、美元价格
4 个时间周期: 5 分钟、1 小时、1 天、1 周
4 个定价层级: Discovery / Analysis / Speed / Complete——获取当前 LINK 费用请调用
get_pricing免费试用: PythiaFaucet 合约——无需 LINK
Pythia Events: 订阅指标条件(高于/低于阈值)——当条件触发时,您的合约会被调用。以 LINK 预付,取消或触发时未使用的部分将退还。无需 Keeper 基础设施。
Pythia Visions: 链上经过前向验证的市场情报——模式类型 + 置信度 + 指标快照 + 需关注的馈送,通过 Chainlink 传递。订阅免费。如需获取实时模式 + 代币列表,请调用
get_visions_info。
数据新鲜度
此 MCP 服务器是 https://pythia.c3x-solutions.com/feed-status.json 的轻量级客户端,该实时状态馈送由数据引擎每 15 分钟更新一次。新的代币、新的模式、合约地址和定价变更会在数据引擎下一个周期后的几秒钟内出现在 MCP 工具中——无需更新软件包。
如果无法访问实时馈送,MCP 工具会抛出明确的错误,而不是提供陈旧的内置数据。请稍后重试或检查状态。(自 v0.9.0 起,采用“失败即报错”策略——早期版本中内置的后备数据已因偏离生产状态而被移除。)
集成示例
请参阅 pythia-oracle-examples 获取包含 Hardhat 设置的 Solidity 合约——可在任何支持 Chainlink 的网络上部署。
链接
许可证
MIT
Available Tools
18 toolscheck_oracle_healthA
Check the reliability and uptime of Pythia's oracle system.
Returns per-token 30-day uptime (sorted worst-first so problems surface immediately), recent daily status history, data source health, and infrastructure status. Use this to verify Pythia's reliability before integrating or relying on its data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It discloses key behavioral traits: returns per-token 30-day uptime sorted worst-first, daily history, data source health, and infrastructure status. No contradictions present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first sentence states core purpose, second lists what is returned. Front-loaded and efficient, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, presence of output schema, and the tool's simple nature, the description provides all necessary context: what it checks, what data it returns, and when to use it. Complete and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so description does not need to explain them. It adds value by detailing the output components, effectively compensating for the lack of parameters. Baseline is 4 due to high schema coverage (100%).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks the reliability and uptime of Pythia's oracle system, using specific verbs and a distinct resource. It differentiates from sibling tools which focus on contracts, events, feeds, etc., leaving no ambiguity about its role as a health check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises using this tool to verify reliability before integrating or relying on data. While it does not give when-not-to-use or alternative tools, the context is clear and sufficient for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contractsA
Get Pythia contract addresses for on-chain integration. Shows all supported chains.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It explains what the tool does but does not disclose potential behavioral traits such as network calls, caching, rate limits, or authorization requirements. The existence of an output schema mitigates some concern about return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, directly conveys the function and scope. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and an output schema, the description is sufficient. It could slightly expand on what the output contains (e.g., addresses per chain), but the output schema likely covers that. The sibling tools list provides context about available alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema coverage is 100%. The description does not need to add parameter information beyond what the schema already provides. The baseline for zero parameters is 4, and the description meets it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves Pythia contract addresses for on-chain integration and lists all supported chains. It specifies a concrete verb-resource pair and distinguishes from sibling tools like get_feed_value or check_oracle_health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining contract addresses during integration, but does not explicitly state when to use this tool over alternatives or when not to use it. The context is clear enough given the simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_events_guideA
Get Solidity code to subscribe to Pythia Events (indicator alerts).
Returns a complete contract that approves LINK, subscribes to an indicator alert, listens for PythiaEvent, and can cancel for a refund.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It transparently discloses the tool returns a contract that approves LINK, subscribes, listens for events, and can cancel. It implies read-only behavior (returning code) but could explicitly note no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. First sentence states primary purpose, second elaborates on contract contents. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and presence of an output schema (not shown), description adequately explains the returned contract's capabilities. Missing details on how to use the code, but sufficient for a code generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so baseline of 4 applies. Description adds value by detailing the contract's functionality, compensating for absence of param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get Solidity code to subscribe to Pythia Events', specifying a verb and resource. It distinguishes from siblings like get_events_info (info about events) and get_integration_guide (general guide) by focusing on code generation for subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context of use (when you need a subscription contract), but lacks explicit exclusions or alternatives to other guide tools. It implies usage but could be more directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_events_infoA
Get overview of Pythia Events — on-chain indicator alert subscriptions.
Returns pricing, supported conditions, subscriber flow, registry addresses per chain, and current subscription stats. Events let you subscribe once and get notified when an indicator crosses a threshold.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially discloses behavior by listing returned data, but does not mention side effects, read-only nature, or potential limitations, leaving some behavioral traits unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences plus a clarifying line—with the purpose front-loaded. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless tool with an output schema, the description covers the tool's purpose, return categories, and conceptual context (event subscriptions). It is complete enough for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline is 4. The description adds value by clarifying the tool's purpose and output, which is sufficient given no parameters to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an overview of Pythia Events, specifying return contents (pricing, conditions, etc.) and distinguishing it from siblings like get_events_guide by focusing on high-level summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for overview, but lacks when-not or alternative suggestions, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feed_valueA
Get the latest computed value of a Pythia indicator feed.
Reads from the live cache (feed_values table) populated by the indicator pipeline on every cycle. Off-chain AI agents use this when reasoning about a Vision context, choosing an Event threshold, or sanity-checking a feed's current level. On-chain consumers should request the value through oracle.request() to get a Chainlink-attested response — see get_integration_guide().
Args: feed_name: full feed name (e.g. 'bitcoin_RSI_1H_14', 'pol_EMA_5M_20').
Returns: Latest value + computed_at + chain, one block per chain if a feed exists on multiple chains. If the feed has no cached value, returns a diagnostic pointer (warm-up window, deactivated, or unknown name).
| Name | Required | Description | Default |
|---|---|---|---|
| feed_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses reading from live cache updated every cycle, describes return structure (value, computed_at, chain, multi-chain behavior), and explains diagnostic pointers for missing values. This fully informs the agent of behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive, using clear sections and bullet points. Every sentence adds value without verbosity. Front-loaded with purpose and immediately useful examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema (indicated by context signals), the description covers purpose, usage, parameter format, and return behavior completely. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing explicit examples ('bitcoin_RSI_1H_14', 'pol_EMA_5M_20') and clarifying the 'full feed name' format. This adds significant meaning beyond the schema's simple type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get the latest computed value of a Pythia indicator feed' with a specific verb and resource. It distinguishes from sibling tools like get_market_summary and get_vision_payload by targeting feed values specifically, and contrasts with on-chain usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when off-chain AI agents should use this tool (reasoning about Vision context, choosing Event thresholds, sanity-checking) and provides a clear alternative for on-chain consumers (oracle.request() via get_integration_guide). This is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_indicator_historyA
Read Pythia's public, immutable indicator history for a feed over a date range — and optionally settle a condition against it.
Backed by the free day-file archive at https://pythia.c3x-solutions.com/history/{chain}/{feed_name}/{YYYY-MM-DD}.json (one file per feed per closed UTC day, 5-minute points, never rewritten once published). Use it to audit or re-derive "was RSI below 30 at any point last week?", to reconstruct what a Vision or Event saw, to backtest a threshold before subscribing to an Event, or to settle a prediction-market style question from public inputs anyone can re-fetch and verify.
Args: feed_name: full feed name, same key as Feeds/Events (e.g. 'bitcoin_RSI_1D_14'). start_date: first UTC day, YYYY-MM-DD (inclusive). end_date: last UTC day, YYYY-MM-DD (inclusive). Defaults to start_date. At most 31 days per call — split longer ranges. chain: delivery chain the feed is archived for (e.g. 'polygon'). Only needed when the manifest lists the feed on more than one chain. condition: optional 'ABOVE' or 'BELOW' — with threshold, evaluates whether ANY point in the range satisfies it. threshold: numeric threshold for condition, in the feed's own units.
Returns: Per-day coverage (points, min, max, first, last), the range summary, the day-file URLs used (so a verifier can re-fetch the exact inputs), and — when condition+threshold are given — a verdict: TRUE (first matching timestamp + value), FALSE (full coverage, no match), or INSUFFICIENT_DATA (missing day-files or gaps large enough that FALSE cannot be asserted). Never interpolates across gaps.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| end_date | No | ||
| condition | No | ||
| feed_name | Yes | ||
| threshold | No | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden and meets it thoroughly. It discloses immutability, public accessibility, the exact day-file archive format, the 5-minute point granularity, the never-rewritten guarantee, and the three-way verdict behavior (TRUE/FALSE/INSUFFICIENT_DATA). It also explicitly states that it never interpolates across gaps, which is essential for an agent choosing this for verification or settlement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but every section earns its place: a front-loaded purpose summary, then organized Args and Returns blocks with clear formatting. The longest content is behavioral and parameter semantics, which are necessary because schema coverage is zero. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations and no schema-level descriptions, this description is complete. It covers purpose, inputs, constraints, return values, edge cases, and verification support. An agent can invoke it correctly and interpret its results without needing further undocumented context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate, and it does. Each parameter is clarified beyond the schema: feed_name format and example, inclusive date semantics, the 31-day limit, the conditional need for chain, the exact allowed condition values, and threshold units. The description adds meaning the schema's bare titles do not provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Read Pythia's public, immutable indicator history for a feed over a date range') and immediately distinguishes its scope from live/current tools by emphasizing historical, closed-day, immutable data. The opening sentence alone makes it clear why an agent would select this over siblings like get_feed_value or get_vision_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: auditing, re-deriving conditions, reconstructing what a Vision/Event saw, backtesting before subscribing, and settling prediction-style questions. It also provides concrete operational guidance such as splitting ranges longer than 31 days and only supplying chain when the feed exists on multiple chains. It does not explicitly name an alternative tool for live data, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_guideA
Get Solidity code to integrate Pythia into a smart contract.
Args: tier: 'discovery' (single value), 'analysis', 'speed', or 'complete'. chain: Optional chain key (e.g. 'mainnet', 'amoy', 'arbitrum'). When unset, the embedded Solidity uses the first available chain's addresses (Polygon mainnet by convention) and the prose lists every chain where this tier's consumer is deployed.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | discovery | |
| chain | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does well by explaining the default chain behavior, that the embedded Solidity uses the first available chain's addresses, and that the prose lists every deployed chain. It does not discuss error cases or authentication, but the key behavioral nuance is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and then uses a brief Args section to clarify parameters. Every sentence contributes useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two optional parameters and an output schema, the description fully covers the needed invocation context: what the tool returns, valid tier values, chain behavior, and defaults. Nothing critical is missing for an agent to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists the valid tier values and explains the chain parameter's optionality and default behavior with concrete examples. This gives agents enough semantic meaning to invoke the tool correctly, though a complete chain enum list would be even stronger.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Get Solidity code to integrate Pythia into a smart contract.' This clearly differentiates it from sibling guides like get_events_guide or get_visions_guide, which presumably cover different integration topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to choose tier and chain values, and what happens when chain is unset. However, it does not explicitly state when to prefer this tool over sibling guides, nor does it mention any alternatives or exclusions. Usage context is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_summaryA
Get a summary of all tokens tracked by Pythia with operational overview.
Returns system-wide stats, tokens grouped by status, uptime distribution, data source health, and infrastructure status. Useful for quickly understanding what Pythia covers and whether the system is healthy.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the return data categories but does not disclose behavioral traits such as authentication requirements, rate limits, or side effects. The read-only nature is implied but not stated explicitly, and the description lacks details on data freshness or system impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loads the main purpose, and provides essential details without extraneous information. Every sentence adds value, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of parameters and presence of an output schema, the description is fairly complete. It explains the tool's purpose and output categories. However, it does not mention any prerequisites, such as authentication or data latency, which would enhance completeness for a system health overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100%. According to guidelines, 0 parameters yields a baseline of 4. The description adds no parameter information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a summary of all tokens with an operational overview. It lists specific outputs (system-wide stats, tokens grouped by status, etc.), which makes the purpose clear. However, it does not explicitly differentiate from sibling tools like get_token_feeds or check_oracle_health, which could provide overlapping information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the tool is 'useful for quickly understanding what Pythia covers and whether the system is healthy,' which implies when to use it. However, it does not provide explicit guidance on when not to use it or mention alternatives among the 16 sibling tools, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingA
Get Pythia pricing tiers and free trial info. Prices are live from the data feed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only mentions that prices are live, lacking details on rate limits, authentication, or other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded key information, though slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description adequately covers the tool's purpose; could mention return structure but output schema fills that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is complete; the description adds no param info but is not required since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Pythia pricing tiers and free trial info', and distinguishes from siblings which focus on oracles, contracts, or events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance; usage is implied for fetching pricing data, but no alternatives are discussed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_feedsA
Get all available indicator feeds for a specific token.
Shows every feed name (EMA, RSI, Bollinger, Volatility across all timeframes), the token's reliability stats, and data source count. Feed names are what you pass to the on-chain oracle to request data.
Args: engine_id: Token engine ID (e.g., 'bitcoin', 'solana', 'bittensor', 'aave', 'pol'). Use list_tokens() to see all available IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It discloses that the tool returns feed names, reliability stats, and data source count, but does not mention any side effects, permissions, or rate limits. The read-only nature is implied but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear structure: purpose sentence, list of output contents, and parameter explanation. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has only one parameter and an output schema (not shown), the description adequately covers what the tool returns and how to use it. It also connects the output to subsequent steps (passing feed names to oracle).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter engine_id is explained with examples ('bitcoin', 'solana', etc.) and a reference to list_tokens() for valid values. This adds significant value over the schema, which has 0% description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get all available indicator feeds for a specific token', providing a specific verb and resource. It distinguishes from siblings by focusing on listing available feeds rather than fetching values or managing subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains that feed names are used for oracle requests and instructs to use list_tokens() for engine IDs. However, it does not explicitly specify when to use this tool over alternatives like get_feed_value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vision_historyA
Get recent Pythia Visions fired for a token with pattern breakdown and stats.
Args: token: Token symbol to check (default: BTC). Case-insensitive. Currently live: BTC, ETH.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | BTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions 'recent' and 'pattern breakdown and stats' but does not explain what constitutes 'recent', pagination, or whether the operation is read-only. No disclosure on auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and front-loaded, with no filler. However, it could be better structured (e.g., separate sections for purpose and args). Still, it's efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, description needn't detail return format, but it misses context on time range for 'recent' and what 'pattern breakdown' entails. Parameter docs are good, but overall completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning: token default is explained, case-insensitivity noted, and currently supported values listed (BTC, ETH). This goes beyond the schema's minimal info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recent Pythia Visions for a token, with specifics on pattern breakdown and stats. It distinguishes itself from siblings like get_visions_info or get_vision_payload by focusing on history and breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking recent visions by token but lacks explicit guidance on when to use this vs alternatives like get_visions_info or get_vision_payload. No when-not-to-use or prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vision_payloadA
Get the full enriched object for a fired Pythia Vision by id.
Returns the rich AI-facing companion to the on-chain VisionFired event: pattern metadata with numeric ranges, failure profile (avg return when correct, avg drawdown when wrong, worst drawdown), cooldown context (hours since last same-pattern fire on this token, confidence delta vs last fire), and concurrent fires from other tokens within the last 24h.
Lightweight on-chain consumers can decode the VisionFired payload bytes directly. AI agents reasoning about a specific Vision should use this tool — it contains the data needed to size positions and compare against historical failure modes, which the on-chain event payload does not.
Args: vision_id: integer id of the Vision (returned by get_vision_history)
Returns: Multi-section text report. If vision_id is not in the recent window (last 20 fires per token), returns a helpful pointer to history.
| Name | Required | Description | Default |
|---|---|---|---|
| vision_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool returns a multi-section text report and how it handles missing vision_ids. While it doesn't mention side effects, authentication, or rate limits, the description is sufficiently transparent for a read-only data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate sections for what the tool returns, comparison to alternatives, args, and return behavior. It is concise yet comprehensive, with no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema (context indicates it exists), the description does not need to fully detail return values. It summarizes the output effectively and explains fallback behavior. The description fully covers the necessary context for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter vision_id has 0% schema description coverage. The description adds meaning by stating it is an integer id returned by get_vision_history, which provides extraction source. This compensates for the lack of schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool gets the full enriched object for a fired Pythia Vision by id. It details the contents (pattern metadata, failure profile, etc.) and clearly distinguishes between lightweight on-chain consumers and AI agents, the latter being the intended audience. This provides a specific verb-resource combination with differentiation from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'AI agents reasoning about a specific Vision should use this tool' and contrasts it with on-chain decoding. It also notes that if vision_id is not in the recent window, the tool returns a helpful pointer to history. This tells the agent when to use this tool and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_visions_guideA
Get Solidity code to subscribe to Pythia Visions and listen for VisionFired events.
Returns a complete contract that subscribes to the PythiaVisionRegistry, receives VisionFired events with pattern type, confidence, direction, price, and full analysis payload. Subscription is FREE (no LINK required).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It reveals that the tool returns a complete contract, details events, and importantly states subscription is free (no LINK required). This adds behavioral context beyond just 'get code'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences that are front-loaded: first sentence states the core action, second details the return value and a key benefit (free). No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no annotations, the description covers the tool's purpose and output. However, it omits information on how to use the returned code or any prerequisites, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the description's job is to explain what the tool does. It clearly explains the output (Solidity code) and its purpose, which adds meaning beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns Solidity code to subscribe to Pythia Visions and listen for VisionFired events. It distinguishes from siblings like get_vision_history (history data) and get_events_guide (different guide) by specifying this is for code generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing subscription code, but does not explicitly state when to use this tool versus alternatives (e.g., get_events_guide for other event types). No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_visions_infoA
Get overview of Pythia Visions — walk-forward validated market intelligence on-chain.
Returns the walk-forward validated patterns with accuracy stats, the Vision Registry contract address, subscription info (FREE), evaluation frequency, and supported tokens. Visions are pattern detections that passed walk-forward validation across multiple years of history. Live token + pattern set is returned in the response (canonical source: feed-status.json visions section).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It details what the tool returns and mentions the canonical source (feed-status.json). While read-only behavior is implied, it does not explicitly state no side effects or disclose potential limitations, but the coverage is thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, coherent paragraph that provides comprehensive information without excessive verbosity. It could benefit from bullet points for structure, but the content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, high schema coverage, and the presence of an output schema, the description fully covers what the tool returns and its source. It is complete and leaves no obvious gaps for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the baseline is 4. The description need not add parameter info, and it correctly omits any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns an overview of Pythia Visions, listing specific components like patterns, contract address, subscription info, and supported tokens. It distinguishes itself from sibling tools by focusing on the walk-forward validated patterns and the comprehensive nature of the returned data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining an overview of visions but does not explicitly state when to use it over alternatives or provide exclusions. With many sibling tools, more guidance would be beneficial, but the purpose is clear enough for basic selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsA
Enumerate active Pythia Event subscriptions owned by an address.
Returns every subscription where active=true (not yet fired, expired, or cancelled). Without this tool, dApps and dashboards have to replay every SubscriptionCreated log from the registry deploy block to discover what an owner is currently subscribed to.
Args: owner_address: subscriber wallet address ('0x...', case-insensitive).
Returns: Multi-section report listing each active subscription with feed name, condition + threshold, expiry, registry address, and creation tx.
| Name | Required | Description | Default |
|---|---|---|---|
| owner_address | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It transparently states it returns only active subscriptions and defines 'active' (not yet fired, expired, or cancelled). It also outlines return sections. Lacks details on side effects or rate limits, but for a read operation, it is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear paragraphs and Args/Returns sections. It is concise, providing all necessary information without superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, single purpose), the description comprehensively covers purpose, parameter, return value, and use case. The presence of an output schema further reduces the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only title and type for 'owner_address', with 0% schema description coverage. The description compensates fully by explaining it is the subscriber wallet address and case-insensitive, adding critical semantic meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enumerates active Pythia Event subscriptions for an address, specifying the resource (subscriptions), action (enumerate), and scope (active=true). It distinguishes from the alternative of replaying logs, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (to discover current subscriptions) and provides context on the inefficiency of alternatives (replaying logs). While it doesn't explicitly list when not to use or compare with sibling tools like 'subscribe_info', it gives clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tokensA
List all tokens tracked by Pythia with status and reliability info.
Returns token symbols, categories, data source count, 30-day uptime, and operational status. Covers cross-chain tokens (BTC, SOL, TAO, RENDER, ONDO, etc.) and DeFi tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description provides clear behavioral context: returns token symbols, categories, data source count, 30-day uptime, and operational status. Covers cross-chain and DeFi tokens. No side effects disclosed (implied read-only).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the purpose and enumerate return fields. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and existence of output schema, description sufficiently explains purpose and key return data. Covers scope and examples, making it complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema; baseline 4 applies. Description does not need to add parameter info since none exist. Schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists all tokens tracked by Pythia with status and reliability info. Gives specific return fields and examples of covered tokens (BTC, SOL, etc.), distinguishing it from siblings that focus on feeds or oracle health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for getting an overview of all tokens, but does not explicitly state when to use versus alternative tools like get_token_feeds or get_market_summary. No exclusions or context for when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_event_feedA
Reverse-lookup a Pythia Event feedId (bytes32) to its human-readable feed name.
Subscribers receive bytes32 feedId in SubscriptionCreated and PythiaEvent
events. This tool maps that hash back to the canonical feed name (e.g.
'pol_RSI_5M_14') so dApps don't need to maintain their own feedId → name
table or query the registry contract on every event.
Args: feed_id_hex: bytes32 hash, with or without '0x' prefix, any case.
Returns: Single-section report with feed_name + matching token + indicator suffix. If the hash is not in the registered lookup table, returns a diagnostic pointer.
| Name | Required | Description | Default |
|---|---|---|---|
| feed_id_hex | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses that returns a single-section report with feed_name, token, and indicator suffix; if not found, a diagnostic pointer. Also explains input format (hex, optional '0x', any case). No side effects mentioned, but implied read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise yet informative. Includes purpose, motivation, parameter description, and return value. Each sentence adds value, though the motivation sentence could be slightly tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and output schema existence, description covers input format and output structure. It mentions the diagnostic pointer for missing hashes. Complete enough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description thoroughly explains feed_id_hex: bytes32 hash, with or without '0x' prefix, any case. It adds meaning beyond schema by specifying it's a hash and the accepted formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reverse-looks up a bytes32 feedId to a human-readable feed name. The verb 'lookup' and resource 'event feed' are specific, and it distinguishes from sibling tools like get_feed_value or get_token_feeds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context: when subscribers receive bytes32 feedId in events and need canonical name. Explains why to use it instead of maintaining a local table or querying the registry contract. No explicit when-not, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_infoA
Plan a specific Pythia Events subscription with cost and exact calls.
Args: feed_name: Feed name to monitor (e.g. 'pol_RSI_5M_14', 'bitcoin_EMA_1H_20') condition: 0=ABOVE, 1=BELOW, 2=CROSSES_ABOVE, 3=CROSSES_BELOW days: Subscription duration in days (1-365)
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| condition | No | ||
| feed_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Plan... with cost and exact calls', which is vague about side effects (read vs write). It does not disclose whether a subscription is created, if there are costs incurred, or any authentication or rate limits. Minimal behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a short introductory sentence followed by a clear, bullet-like list for each parameter. No redundant information. Every sentence adds value, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no annotations, the description covers the basics but lacks behavioral context (e.g., whether it's a read or write operation). An output schema exists but is not referenced, though that is acceptable per guidelines. The description does not address the presence of many sibling tools, leaving potential confusion about when to use this one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description compensates for 0% schema coverage by providing clear explanations for each parameter: feed_name with examples, condition with enum mapping (0-3), and days with range. This adds significant meaning beyond the raw schema, making it easy for an agent to understand parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb 'Plan' and resource 'Pythia Events subscription', clearly indicating the tool's purpose. It mentions cost and exact calls, providing further clarity. This distinguishes it from sibling tools like list_subscriptions (listing) and get_events_info (retrieving info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples and parameter definitions, but does not explicitly state when to use this tool versus alternatives. For instance, it does not contrast with list_subscriptions or get_events_info. Usage context is implicit, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.12.1- Added
get_indicator_history - Changed
get_integration_guide1 field changed- added
Input schema / properties / chainAdded value: +{ + "default": "", + "title": "Chain", + "type": "string" +}
4 tool updates
v0.8.1- Added
get_feed_value - Added
get_vision_payload - Added
list_subscriptions - Added
lookup_event_feed
3 tool updates
v0.4.0- Added
get_vision_history - Added
get_visions_guide - Added
get_visions_info
10 tool updates
v0.3.0- Added
check_oracle_health - Added
get_contracts - Added
get_events_guide - Added
get_events_info - Added
get_integration_guide - Added
get_market_summary - Added
get_pricing - Added
get_token_feeds - Added
list_tokens - Added
subscribe_info
7 tool updates
v0.2.4- Removed
check_oracle_health - Removed
get_contracts - Removed
get_integration_guide - Removed
get_market_summary - Removed
get_pricing - Removed
get_token_feeds - Removed
list_tokens
7 tool updates
v0.2.2- First observed
check_oracle_health - First observed
get_contracts - First observed
get_integration_guide - First observed
get_market_summary - First observed
get_pricing - First observed
get_token_feeds - First observed
list_tokens
TDQS
Scored across 18 tools
Several tools have unclear boundaries: list_tokens, get_market_summary, and check_oracle_health all return uptime, status, and data-source health, with list_tokens already including 30-day uptime. Pricing/cost info also overlaps across get_pricing, get_events_info, and subscribe_info. Most other tools are distinct, but these multi-way overlaps make tool selection genuinely ambiguous.
The vast majority of tools follow a clean lowercase snake_case verb_noun pattern, and the get_* family is dominant. Parallel names like get_events_info/get_events_guide and get_visions_info/get_visions_guide reinforce consistency, though a few outliers such as subscribe_info and check_oracle_health use different verbs.
18 tools sits in the 16–25 range that feels heavy for a single-purpose server. The domain has multiple sub-areas, but the overlapping status/health tools suggest the surface could be consolidated. It is not excessive enough for a 2, but it is beyond the ideal 3–15 scope.
The tool set covers token discovery, feed data, historical verification, event subscription planning, vision analysis, contract addresses, integration guides, and pricing, which supports most real workflows. Minor gaps exist, such as no direct historical Event fire enumeration and no on-chain subscription actions, but agents can work around these via guides and get_indicator_history.
Maintenance
Related MCP Connectors
Crypto market signals and portfolio telemetry. 6 tools pay-per-call in USDC, no API key.
Chainlink - 35 tools for price feeds and oracle data
Market and on-chain crypto data for AI agents. Pay per call in USDC on Base (x402).
Crypto market signals, technical indicators, and sentiment analysis for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables interaction with Chainlink's decentralized oracle network, providing access to real-time price feeds, serverless functions, smart contract automation, verifiable randomness, cross-chain messaging, and proof of reserve across multiple blockchain networks.-
- FlicenseNot gradedqualityDmaintenanceProvides real-time cryptocurrency market data and technical indicators (EMA, MACD, RSI, ATR, Bollinger Bands) from Aster DEX with multi-timeframe analysis support for trading pairs like BTC, ETH, and SOL.-
- AlicenseNot gradedqualityCmaintenancePrice feeds, TWAPs, and oracle service for autonomous agent settlement.MIT
- AlicenseNot gradedqualityDmaintenanceProvides real-time crypto market data for AI agents, including derivatives, liquidations, options, macro, and market regime detection, with pay-per-call via x402 micropayments on Base.182 npmMIT