Skip to content
Eden Engine

Historical Crypto Candles (OHLCV) by Exchange & Pair

omnial/exchange-candles

Given an exchange, a trading pair, and a candle interval, returns a time series of OHLCV candles for that market -- open, high, low, close, base and quote volume, and trade count where the exchange reports it -- with an option to fill no-trade intervals with candles that repeat the last close for a continuous chart.

activeper callv2

Price

Up to $0.00819 per call; you pay what the call used

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 $5.00.

Data source

Bithumb, Upbit, HashKey, bitFlyer, Coinone and Korbit

Data from Bithumb, Upbit, HashKey, bitFlyer, Coinone and Korbit.

Use it

Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.

Connect once and your AI can find and run this tool, and any other it needs.

For developers: the calls your assistant makes
agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/exchange-candles" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/exchange-candles" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/exchange-candles", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/exchange-candles", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not 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.

ChargePrice
Per call
$0.00819
Updated
Oct 27, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "exchange",
    "pair"
  ],
  "properties": {
    "to": {
      "type": "string",
      "minLength": 1,
      "description": "End of time range. Accepts Unix seconds or date string. Example: 2026-06-24T10:00:00Z."
    },
    "from": {
      "type": "string",
      "minLength": 1,
      "description": "Start of time range. Accepts Unix seconds or date string. Example: 2026-06-24T09:00:00Z."
    },
    "pair": {
      "type": "string",
      "minLength": 1,
      "description": "Trading pair in base/quote form, e.g. BTC/KRW. Example: BTC/KRW."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 300,
      "minimum": 1,
      "description": "Max number of candles to return. Weekly candles allow up to 300 rows for a 5-year chart; intraday intervals are capped at 100. Example: 100. Defaults to 100."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Pagination offset. Example: 0. Defaults to 0."
    },
    "exchange": {
      "enum": [
        "bithumb",
        "upbit",
        "hashkey",
        "bitflyer",
        "coinone",
        "korbit"
      ],
      "type": "string",
      "description": "Exchange identifier. Example: bithumb."
    },
    "interval": {
      "enum": [
        "5m",
        "4h",
        "1w"
      ],
      "type": "string",
      "default": "5m",
      "description": "Candle interval. Example: 5m. Defaults to \"5m\"."
    },
    "include_synthetic": {
      "type": "boolean",
      "default": true,
      "description": "Whether to include carry-forward candles for no-trade intervals. Defaults to true for continuous charts; set false for raw exchange-only candles. Example: True. Defaults to true."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "low": {
            "type": "number"
          },
          "high": {
            "type": "number"
          },
          "open": {
            "type": "number"
          },
          "pair": {
            "type": "string",
            "description": "Echoes the requested trading pair."
          },
          "close": {
            "type": "number"
          },
          "region": {
            "type": "string",
            "description": "Two-letter market region, e.g. 'kr'."
          },
          "exchange": {
            "type": "string",
            "description": "Echoes the requested exchange."
          },
          "interval": {
            "type": "string",
            "description": "Echoes the requested candle interval."
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix seconds marking the candle open."
          },
          "close_time": {
            "type": "integer",
            "description": "Unix seconds marking the candle close."
          },
          "trade_count": {
            "type": "integer",
            "description": "Number of trades in the interval. Seen on every candle of a bithumb 5-minute query but absent from every candle of an upbit weekly query -- whether this depends on the exchange, the interval, or something else is not documented; do not assume it is always present."
          },
          "volume_base": {
            "type": "number",
            "description": "Volume in the base asset. Observed 0 on a synthetic, no-trade candle."
          },
          "is_synthetic": {
            "type": "boolean",
            "description": "True for a carry-forward candle synthesized for a no-trade interval (observed on one bithumb candle, with open=high=low=close and zero volume). Only appears when the request's include_synthetic was true or defaulted."
          },
          "volume_quote": {
            "type": "number",
            "description": "Volume in the quote asset. Observed 0 on a synthetic, no-trade candle."
          }
        },
        "additionalProperties": false
      },
      "description": "One entry per candle, typically most recent first."
    },
    "meta": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "integer",
          "description": "Echoes the requested (or defaulted) limit."
        },
        "total": {
          "type": "integer",
          "description": "Total candles available for the query."
        },
        "cached": {
          "type": "boolean",
          "description": "Whether this response was served from the provider's cache."
        },
        "offset": {
          "type": "integer",
          "description": "Echoes the requested (or defaulted) offset."
        }
      },
      "additionalProperties": false
    }
  },
  "description": "The candle response.",
  "additionalProperties": false
}