Bitcoin & Ethereum On-Chain Indicator Time Series
omnial/market-onchain-indicator
Given a token (BTC or ETH), an on-chain metric (NUPL, SOPR, MVRV, Puell Multiple, NVM, NVT, NVT Golden Cross, or an exchange-flow metric: inflow, outflow, netflow, reserve), and a date range, returns a daily time series of that metric's value for each day in range.
Price
$0.0164 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/market-onchain-indicator" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/market-onchain-indicator" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/market-onchain-indicator", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/market-onchain-indicator", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0164 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"symbol",
"metric"
],
"properties": {
"to": {
"type": "string",
"minLength": 1,
"description": "End of time range. Accepts Unix seconds or date string (YYYY-MM-DD). Defaults to today when omitted. Maximum range is 365 days. Responses are capped at about 100 data points; when meta.has_more is true, split from/to into smaller windows (about 90 days for daily data). Example: 2026-03-01."
},
"from": {
"type": "string",
"minLength": 1,
"description": "Start of time range. Accepts Unix seconds or date string (YYYY-MM-DD). Defaults to 90 days ago when omitted. Maximum range is 365 days. Responses are capped at about 100 data points; when meta.has_more is true, split from/to into smaller windows (about 90 days for daily data). Example: 2026-01-01."
},
"metric": {
"enum": [
"nupl",
"sopr",
"mvrv",
"puell-multiple",
"nvm",
"nvt",
"nvt-golden-cross",
"exchange-flows/inflow",
"exchange-flows/outflow",
"exchange-flows/netflow",
"exchange-flows/reserve"
],
"type": "string",
"description": "On-chain metric name. Can be nupl, sopr, mvrv, puell-multiple, nvm, nvt, nvt-golden-cross, or exchange-flows/{inflow,outflow,netflow,reserve}. Example: nupl."
},
"symbol": {
"enum": [
"BTC",
"ETH"
],
"type": "string",
"description": "Token ticker symbol. Can be BTC or ETH. Example: BTC."
},
"exchange": {
"enum": [
"all_exchange",
"spot_exchange",
"derivative_exchange",
"coinbase_prime",
"binance",
"coinbase_advanced",
"okx",
"kraken",
"bybit",
"bitstamp",
"gemini",
"bitget",
"kucoin",
"bitfinex",
"gate_io",
"deribit",
"mexc",
"htx_global",
"bitflyer",
"coinone",
"bithumb",
"upbit",
"hashkey_exchange"
],
"type": "string",
"default": "all_exchange",
"description": "Curated exchange filter for exchange-flow metrics. Use /v1/market/exchange-flow/exchanges to list labels. Example: all_exchange. Defaults to \"all_exchange\"."
},
"granularity": {
"enum": [
"day"
],
"type": "string",
"default": "day",
"description": "Aggregation granularity. Example: day. Defaults to \"day\"."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "number",
"description": "The metric's value for this day. Units/scale depend on the metric: NUPL/SOPR/MVRV are ratios observed roughly in the 0-2 range, exchange-flow metrics (inflow/outflow/netflow/reserve) are raw token-unit amounts and can be negative (netflow observed negative on days with net exchange outflow)."
},
"metric": {
"type": "string",
"description": "The requested metric name, echoing the input."
},
"symbol": {
"type": "string",
"description": "'BTC' or 'ETH', echoing the input."
},
"exchange": {
"type": "string",
"description": "Only observed present for exchange-flow metrics (e.g. 'all_exchange', echoing the input's exchange filter). Not present for non-exchange-flow metrics like nupl."
},
"timestamp": {
"type": "number",
"description": "Unix seconds, start of the day (UTC)."
},
"exchange_name": {
"type": "string",
"description": "Human-readable label for `exchange` (e.g. 'All Exchange'). Only observed present for exchange-flow metrics."
}
},
"additionalProperties": true
},
"description": "One entry per day in the requested range (up to ~100 points per call; see meta.has_more)."
},
"meta": {
"type": "object",
"properties": {
"limit": {
"type": "number"
},
"cached": {
"type": "boolean"
},
"offset": {
"type": "number"
},
"has_more": {
"type": "boolean",
"description": "True when more data points exist beyond this response's window -- split the from/to range into smaller windows and call again to page through."
}
},
"additionalProperties": true
}
},
"description": "A daily time series of on-chain metric values for the requested symbol.",
"additionalProperties": true
}