Skip to main content

Overview

Dataloader retrieves market price history, adds technical indicators, and exports tables for other research servers. Fetching data and exporting a file are separate operations.

Connection

MCP URL: https://quantx-api.limex.pro/mcps/dataloader Select Dataloader in the QuantX marketplace. Use its gateway connection with Streamable HTTP and QuantX authorization; follow Client Setup. Yahoo requests need no provider key. For Massive, send your own key as the X-Massive-Api-Key header; the server does not keep one. If source is omitted, a request that carries the key uses Massive, and a request without it uses Yahoo. Set source when the choice matters. Cursor configuration (.cursor/mcp.json):
Set the referenced environment variables before starting Cursor. Remove the Massive header if you only use Yahoo. For Claude Code or Python, use the client-specific format in Client Setup.

Tools

The same server also provides Shared MCP Tools.

Examples

Retrieve Daily Prices

Call fetch-ohlcvs:
timeframe, start_date, and end_date are required at runtime even though the schema defaults are null. Both dates are inclusive. Inspect row_count and ticker_details. adjust_dividends (default true) back-adjusts cash dividends for Yahoo and Massive. Massive stock splits are always adjusted. With the default, Yahoo returns adjusted prices and no adj_close column. price_decimals (default 4) rounds OHLC only. Massive stocks are loaded as one security across renames and reused tickers. identity_date (default end_date) is the day that symbol must mean the security you want. For daily bars, yahoo_backstop (default true) returns Yahoo’s whole series when Massive has no bars or Yahoo has more bars in the window; ticker_details.data_source is then "yahoo". Read warnings. Symbols with a market prefix (X:, C:, I:, O:) are loaded as given: no identity tracking, no local adjustment, and no Yahoo backstop. In a multi-ticker request, series that loaded are still returned if another ticker fails. The failed item has error in ticker_details. The call fails only when no ticker loads.

Calculate an Indicator

Call list-supported-indicators with {"request": {}} to inspect supported names. This small compute-indicators example uses supplied synthetic prices:
For a stored fetch, chain the result without downloading its payload: set df to null and pass its result_id, or use variable: "$last". An inline table goes directly in df; do not put a reference object inside that field or pass the whole response envelope. Indicator warm-up rows may be missing; do not silently treat them as zeros.

Export a Table

ticker, dataset_name, start_date, and end_date are required and are not read from the table. To export a stored fetch or indicator result, set dataframe to null and pass result_id or variable ($last):
An inline table goes directly in dataframe. Supported file_format values are csv (the default), parquet, and pickle; only use pickle in a trusted environment. Fetch the file with artifact_signed_url or artifact_read_chunk. The signed URL is short-lived and read-only: use it exactly as returned and expect it to expire at expires_at. If that call returns STORAGE_NOT_SUPPORTED, read the bytes with artifact_read_chunk and keep the artifact_id.

Results and Limitations

  • Use result_get to inspect a stored payload. To continue a Dataloader workflow, compute-indicators and save-dataframe can consume its result_id or variable directly.
  • Read ticker_details for data_source, warnings, and a per-ticker error. A Massive stock load also reports security_id, segments, and window when Massive provides them.
  • When moving data to another MCP server, send the table contents: a result_id only works on the server that produced it.
  • Preserve timestamps and ticker separation when computing returns or building panels.
  • A successful connection does not guarantee provider coverage, an active provider subscription, or an unrestricted data quota.
  • Unsupported indicators, nonnumeric prices, and missing required columns are input errors; provider failures are separate.