Skip to content
Eden Engine

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.

activeper callv1
Provider
Web & Business Data Network
Category
crypto-signals
Provider price
$0.01638 per call
Latency p50 / p95
— / —
Success rate
Verified

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "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.json
{
  "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
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.01638
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 8, 2026