Skip to content
Eden Engine

Crypto Perpetual Funding Rate History (by Exchange & Pair)

omnial/exchange-funding-history

Given a trading pair and an exchange, returns a time series of historical perpetual futures funding rate records for that pair -- the raw rate plus its 1-hour, 8-hour, and annualized normalizations at each interval -- up to 500 records per call.

activeper callv4

Price

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

Data source

Binance, OKX, Bybit, Bitget, Hyperliquid and other exchanges

Funding rates from the exchange you select: Binance by default, or OKX, Bybit, Bitget, Hyperliquid and others.

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.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

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

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

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/exchange-funding-history", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/exchange-funding-history", 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 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "pair"
  ],
  "properties": {
    "from": {
      "type": "string",
      "minLength": 1,
      "description": "Start of time range. Accepts Unix seconds or date string (YYYY-MM-DD, ISO8601). Not all exchanges support historical queries; some only return recent data regardless of this value. Example: 2026-03-01."
    },
    "pair": {
      "type": "string",
      "minLength": 1,
      "description": "Trading pair (e.g. BTC/USDT). Example: BTC/USDT."
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 500,
      "minimum": 1,
      "description": "Max number of records. For longer history, paginate using the last returned timestamp as the next from value. Example: 100. Defaults to 100."
    },
    "exchange": {
      "enum": [
        "binance",
        "okx",
        "bybit",
        "bitget",
        "gate",
        "htx",
        "mexc",
        "bitfinex",
        "bitmex",
        "hyperliquid"
      ],
      "type": "string",
      "default": "binance",
      "description": "Exchange identifier. Note: hyperliquid uses USDC-settled perps (e.g. BTC/USDC:USDC); pass USDC-quoted pairs when querying hyperliquid. Example: binance. Defaults to \"binance\"."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "Present only on a rejected call, e.g. an unrecognized pair. Observed value: 'HTTP_400'."
    },
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "pair": {
            "type": "string",
            "description": "The trading pair as the exchange itself denotes it -- observed WITHOUT a ':USDC' settlement suffix even when the request pair included one (requesting 'BTC/USDC:USDC' on hyperliquid returned pair 'BTC/USDC')."
          },
          "exchange": {
            "type": "string",
            "description": "Echoes the requested exchange, e.g. 'binance', 'hyperliquid'."
          },
          "timestamp": {
            "type": "integer",
            "description": "Unix seconds marking the funding interval."
          },
          "funding_rate": {
            "type": "number",
            "description": "The rate for this interval. Observed negative on some intervals (e.g. -0.0000015)."
          },
          "funding_rate_1h": {
            "type": "number",
            "description": "funding_rate normalized to a 1-hour rate."
          },
          "funding_rate_8h": {
            "type": "number",
            "description": "funding_rate normalized to an 8-hour rate."
          },
          "funding_rate_raw": {
            "type": "number",
            "description": "Typically identical to funding_rate; kept as its own field since the vendor returns it separately."
          },
          "funding_interval_hours": {
            "type": "integer",
            "description": "How often this exchange pays funding. Observed 8 for binance, 1 for hyperliquid -- not the same across exchanges."
          },
          "funding_rate_annualized": {
            "type": "number",
            "description": "funding_rate compounded to a yearly rate."
          }
        },
        "additionalProperties": false
      },
      "description": "One entry per funding interval. Present only on a successful call."
    },
    "meta": {
      "type": "object",
      "properties": {
        "cached": {
          "type": "boolean",
          "description": "Whether this response was served from the provider's cache. Typically false."
        }
      },
      "description": "Present only on a successful call.",
      "additionalProperties": false
    },
    "message": {
      "type": "string",
      "description": "Human-readable detail accompanying `code`. Observed value: 'Invalid input: HTTP 400'."
    }
  },
  "description": "The funding history response. A successful call returns `data`/`meta`; a rejected pair/exchange combination returns `code`/`message` instead -- the two shapes do not overlap.",
  "additionalProperties": false
}