Skip to main content
Glama
aiexp1

Tanod MCP server

chainpeek: ETH and BTC OHLCV price candles from on-chain DEX swaps

get_dex_price_candles
Read-onlyIdempotent

Fetch ETH or BTC OHLCV price candles in USDC from on-chain DEX swaps to chart and analyze price movements across multiple intervals.

Instructions

chainpeek: Get ETH or BTC OHLCV price candles from on-chain DEX swaps. For the oracle price now use get_token_price. Returns OHLCV candles for ETH (WETH/USDC) or BTC (cbBTC/USDC) in USDC from public Uniswap v3 swaps on Base, at 5m, 15m, 1h, 4h or 1d, with the pool, fee tier and the block the data is current to (about a minute behind). Computed by Tanod from one allow-listed pool per pair, not an exchange feed: DEX prices can differ from centralized exchanges; a candle without swaps repeats the previous close; the last candle is still forming. Informational only, not investment advice. A bad pair, interval or limit is a 422 before any payment; a 503 warming_up (index still loading) or rpc_unavailable is not charged. Typically under 0.1 s (served from an index kept current in the background). Price: USD 0.003. Free: 10 chain reads per IP per UTC day. Docs: https://tanod.dev/learn/crypto-ohlcv-candles-api.html

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pairYesWETH/USDC (ETH in USDC, Uniswap v3 0.3% pool on Base) or cbBTC/USDC (BTC in USDC, Uniswap v3 0.05% pool on Base).
limitNoNumber of candles, newest last. Default 48 (1d: 30). Lookback caps: 5m and 15m 200, 1h 168, 4h 42, 1d 30.
intervalNoCandle length, UTC-aligned.1h

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dexNo
feeNo
baseNo
noteNo
pairNo
poolNo
as_ofNo
chainNo
countNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
quoteNo
sourceNo
candlesNo
intervalNo
as_of_isoNo
price_unitNo
timestampsNo
as_of_blockNo
interval_secondsNo
last_candle_partialNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses that the data comes from one allow-listed pool rather than an exchange feed, that DEX prices can differ from CEX, that a swap-less candle repeats the prior close, and that the last candle is still forming. It also covers failure modes (422 before payment, 503 warming_up/rpc_unavailable not charged) and latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, followed by the alternative, then data provenance, caveats and operational details. It is dense and long, but nearly every sentence carries distinct information; only minor trimming is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations, the description need not explain return values, and it still covers provenance, caveats, error/payment semantics, latency and pricing. Nothing an agent needs to invoke it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so pair, limit (with per-interval lookback caps) and interval are already fully documented in the schema. The description restates the intervals and that a bad pair/interval/limit yields a 422, but adds little parameter meaning beyond what the schema provides, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get OHLCV price candles) and pins the exact scope: ETH (WETH/USDC) or BTC (cbBTC/USDC) in USDC from Uniswap v3 on Base. It explicitly distinguishes itself from the sibling get_token_price, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative route explicitly ('For the oracle price now use get_token_price') and makes the use case (historical/forming candles vs. spot oracle) clear. There is no explicit when-not-to-use or statement about which other price siblings to prefer, but the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools