MCP Integration

Connect any AI assistant to Pulse synthetic market data using the Model Context Protocol.

The Pulse MCP server exposes our market data and backtesting tools as LLM-callable functions via the Model Context Protocol. Ask your AI assistant to analyse spread behaviour, run a TWAP backtest, or profile order book depth — all in natural language.

The MCP server never returns raw market data. All responses are aggregated statistics or backtest results, keeping payloads small and LLM-friendly.

Available tools

The following tools are registered on the MCP server. Your AI assistant will automatically discover them when connected.

ToolDescription
list_calibrated_dataList the instruments and calibrated dates the agent-based model can simulate
list_available_dataList every symbol-day in the raw data registry, calibrated or not — what a foundation model can be prompted with
list_scenariosList market scenarios and their default parameters
run_simulationSubmit a Monte Carlo simulation job, agent-based (engine="abm") or foundation-model (engine="fm")
check_jobGet status of a simulation job
list_jobsList all simulation jobs for the current user
get_job_resultsGet results for all simulations in a job
list_cached_simulationsList cached baseline simulations (free tier)
list_sim_filesList available files for a simulation
get_mid_price_seriesDownload mid-price time series for a simulation
get_exec_scheduleDownload execution schedule for algo simulations
get_sim_paramsGet simulation configuration parameters
get_sim_metricsGet simulation result metrics
get_exec_resultsDownload execution cost metrics for one algo run
run_validationSubmit a Pulse-Check validation job
check_validation_jobGet a validation job's status without its results — poll this, not get_validation_job
get_validation_jobGet a finished validation job's full results
list_validation_jobsList validation jobs for the current user
get_job_logsRead the engine log for a failed job, to find out why it failed
list_fm_modelsList the foundation models available, and what each accepts

Available data

See Download data for the full symbol list, available cached simulations, and output file details.

Discovering symbols and dates

Two tools answer "what can I run?", one per engine. Both catalogs are too large to hand an assistant in one response, so both summarise by default. Each instrument comes back as one row with date_count, first_date and last_date instead of the per-date detail. A symbol or date filter, or include_dates, returns the dates themselves.

list_calibrated_data lists what the agent-based model can simulate. Every instrument and date it returns is calibrated, so it is a valid input to run_simulation with the default engine.

ArgumentDescription
symbolExact ticker, e.g. "700.HK". Returns that instrument's full date detail
dateCalibration date "YYYY-MM-DD". Returns the instruments calibrated on it
exchangeExchange protocol, e.g. "hkex_securities"
providerData provider, e.g. "omd" or "bmll"
limit / offsetPage the listing. limit is 1–1000, default 50; offset defaults to 0
include_datesReturn per-date detail for every instrument in the page

It returns total (matches before paging), returned, limit, offset, truncated and instruments, so the assistant can tell when a listing was cut short and page for the rest.

list_available_data lists the raw data registry: every symbol-day that exists, calibrated or not. That is what a foundation model can be prompted with, and what could be calibrated.

ArgumentDescription
symbolExact symbol, e.g. "700" or "TSCO"
qCase-insensitive substring match over the symbol
providerData provider, e.g. "bmll"
exchangeExchange protocol, e.g. "lse" or "hkex_securities"
dateTrading date "YYYY-MM-DD". Keeps only symbols with data on it
model_idA model from list_fm_models, by model_id or production name. Keeps only the markets it accepts
include_calibration_stateAlso return which of each symbol's days are already calibrated
include_datesReturn every date per symbol instead of the summary
limit / offsetPage the listing. limit is 1–200, default 50; offset defaults to 0

It returns total, limit, offset and symbols, one entry per {symbol, provider, exchange}.

You rarely need to name these arguments yourself. Asking "which dates can I simulate 700.HK on?" or "what is ready on 2 September 2025?" is enough for the assistant to pick the right tool and filter.

The same ticker can appear under more than one data provider, with different dates and tick sizes — Tencent is 700.HK from omd and 700 from bmll. A date that exists for one will not necessarily exist for the other, so if a simulation is rejected for an unavailable date, check the provider before the date.

Prerequisites

  • A Pulse API key — get one from your Dashboard
  • Node.js installed (for the mcp-remote bridge used by Claude Desktop)

Claude Code (CLI)

The quickest way to connect — add the server in one command:

bash
claude mcp add pulse -s user \
  --transport http \
  https://pulse-mcp.simudyne.com/mcp \
  --header "X-API-Key: YOUR_API_KEY"

Restart Claude Code and you are ready to go. Ask it to "run a flash crash simulation for 700.HK".

Claude Desktop

1. Open your config file

On macOS it is located at:

path
~/Library/Application Support/Claude/claude_desktop_config.json

On Windows:

path
%APPDATA%\\Claude\\claude_desktop_config.json

2. Add the Pulse MCP server

Paste the following into the mcpServers object, replacing YOUR_API_KEY with your actual key:

json
{
  "mcpServers": {
    "pulse": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://pulse-mcp.simudyne.com/mcp",
        "--header",
        "X-API-Key: YOUR_API_KEY"
      ],
      "timeout": 300000
    }
  }
}

The timeout is set to 5 minutes (300 000 ms). Some tools like run_simulation submit asynchronous jobs, so you can use check_job to poll for completion. 5 minutes is a safe default for most operations.

3. Restart Claude Desktop

Fully quit Claude Desktop (Cmd+Q on macOS) and reopen it. You should see a tools icon at the bottom of the chat input showing pulse with 20 tools available.

Try asking: "What symbols are available for simulation?"

Any MCP-compatible client

The Pulse MCP server works with any tool that supports the Model Context Protocol — including Cursor, Windsurf, VS Code + GitHub Copilot, Cline, Zed, and many others. To connect, you need three things:

What you need

  • MCP server URL — https://pulse-mcp.simudyne.com/mcp
  • Your API key — passed as an X-API-Key header with every request
  • Node.js — required for the mcp-remote bridge that converts between stdio and HTTP (most desktop clients use stdio under the hood)

Generic configuration

MCP is a client- and model-agnostic protocol, so the same server works regardless of which assistant you use — only the config file location differs between clients. Replace YOUR_API_KEY with your actual key and paste this block into your client's MCP server configuration:

json
{
  "mcpServers": {
    "pulse": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://pulse-mcp.simudyne.com/mcp",
        "--header",
        "X-API-Key: YOUR_API_KEY"
      ],
      "timeout": 300000
    }
  }
}

If your client supports Streamable HTTP transport directly (e.g. via a url field), you can point it straight at https://pulse-mcp.simudyne.com/mcp and skip the mcp-remote bridge entirely. Pass your API key as an X-API-Key header.