Skip to main content
This guide uses Context Query mode with Meridian pinned by tool ID. Query mode is the dependable starting point because Context handles method selection, execution, grounding, and response assembly.

1. Create a Context API key

  1. Sign in at ctxprotocol.com.
  2. Configure the wallet spending cap required by Context.
  3. Fund the Context wallet for paid tool calls.
  4. Create an API key under Settings → API Keys.
Store the key in an environment variable. Never embed it in browser code or commit it to a repository.
export CONTEXT_API_KEY="sk_live_YOUR_KEY"

2. Install an SDK

npm install @ctxprotocol/sdk
pip install ctxprotocol

3. Query Meridian

import { ContextClient } from "@ctxprotocol/sdk";

const MERIDIAN_TOOL_ID = "e5e62fa5-28e1-42f4-8b84-f4866234df43";
const client = new ContextClient({
  apiKey: process.env.CONTEXT_API_KEY!,
});

const result = await client.query.run({
  query: [
    "Use Meridian to return BTCUSDT futures rows for Binance, Bybit, OKX,",
    "and Hyperliquid from 2026-07-13 00:00 UTC to 01:00 UTC at 1h resolution.",
    "Include close_price, funding_rate, dollar_open_interest_close,",
    "buy_dollar_volume, and sell_dollar_volume."
  ].join(" "),
  tools: [MERIDIAN_TOOL_ID],
  responseShape: "evidence_only",
  includeData: true,
});

console.log(result.evidence);
console.log(result.data);
import asyncio
import os

from ctxprotocol import ContextClient

MERIDIAN_TOOL_ID = "e5e62fa5-28e1-42f4-8b84-f4866234df43"

async def main() -> None:
    async with ContextClient(api_key=os.environ["CONTEXT_API_KEY"]) as client:
        result = await client.query.run(
            query=(
                "Use Meridian to return BTCUSDT futures rows for Binance, Bybit, "
                "OKX, and Hyperliquid from 2026-07-13 00:00 UTC to 01:00 UTC "
                "at 1h resolution. Include close_price, funding_rate, "
                "dollar_open_interest_close, buy_dollar_volume, and "
                "sell_dollar_volume."
            ),
            tools=[MERIDIAN_TOOL_ID],
            response_shape="evidence_only",
            include_data=True,
        )
        print(result.evidence)
        print(result.data)

asyncio.run(main())

4. Inspect the response

For repeatable data pipelines, prefer evidence_only. Context may return bounded rows inline and a full-data reference for larger results. Meridian rows use canonical exchange, product, and time identities. Optional response sections include:
  • columns: names, types, units, and data families.
  • coverage: what exists for each exchange/product/range.
  • provenance: the source and collection lineage.
  • warnings: explicit limitations or source-limited values.
Do not infer missing values as zero. Read coverage, provenance, and warnings before using a result in research or automation.

Next steps

TypeScript integration

Python integration

Official MCP endpoint

Futures reference