Index One MCP
Query financial index data, run backtests, and deploy systematic investment strategies on Index One.
What it can do
- List Operations: List available pipeline operations (id, name, description, category). Call with no args to see all + the category list; pass a category to narrow. Use this to discover real operations
- Get Operations: Get the full parameter schema and output shape for specific operations. Always fetch an operation's spec before using it so parameters are correct.
- List Examples: List production-tested example pipelines (id/name/description). Optional substring search.
What data it sees
Do you need an account
No: the server works without sign-in
Query financial index data, run backtests, and deploy systematic investment strategies on Index One.
How to connect
How to connect Index One MCP to Claude
The server address to paste into Claude settings:
https://mcp--indexone.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Index One MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://mcp--indexone.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Index One MCP to Cursor
The server address to paste into Cursor settings:
https://mcp--indexone.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (22)
Raw names from tools/list. Only developers need these.
| list_operations | List available pipeline operations (id, name, description, category). Call with no args to see all + the category list; pass a category to narrow. Use this to discover real operations instead of guessing. |
| get_operations | Get the full parameter schema and output shape for specific operations. Always fetch an operation's spec before using it so parameters are correct. |
| list_examples | List production-tested example pipelines (id/name/description). Optional substring search. |
| get_example | Fetch one or MORE example pipelines to learn correct wiring. Pass several ids in 'example_ids' to fetch them in a SINGLE call (cheaper than separate calls) — useful when the index combines patterns from different examples. Each returned example carries 'index_parameters_json' (a JSON string of the full pipeline). |
| list_workflows | List live workflows. scope='team' (the user's), 'public' (public/featured), or 'all'. Use to build off or repair an existing workflow/index. |
| get_workflow | Fetch one workflow by id. Returns id/name/operation_ids plus 'workflow_json' (a JSON string of the full workflow's index_parameters, including its operations). |
| list_datasets | List the user's team datasets (id/name/description). Never invent dataset ids — use these. |
| inspect_dataset | Inspect a team dataset's real data. view='schema' (columns+dtypes), 'sample' (rows), 'shape', 'unique' (distinct values of 'column'), or 'stats' (per-column distribution summary). Use before filtering on it. |
| run_pipeline | Run a single operation, sub-pipeline, or full workflow in PREVIEW mode (nothing is persisted; source data is real). Returns per-operation state and an output SUMMARY (columns, shape, small sample). Use it to test that a step works and to discover the real columns an operation produces, then inspect_run / get_column_values on the result. |
| inspect_run | Introspect a cached run_pipeline output. view='schema'|'sample'|'shape'|'unique'|'stats'. For 'unique' pass the 'column' (e.g. which sector values exist before filtering). 'stats' returns per-column count/nulls/mean/std/min/quartiles/max — use it to find which factor/score/weight column is skewed or dominates (pass 'column' for one, omit for all). Defaults to the most recent run and, if it has one operation, that operation. |
| get_column_values | Distinct values of a column — from a dataset (dataset_id) or a cached run (op_id/run_id). The canonical way to discover real filter values (sectors, countries, ratings, ...). |
| validate_workflow | Validate a candidate workflow against the manifest. Returns structured issues. Call before submitting. |
| get_index | Get an index's metadata: name, description, stage/status, calendar settings, value series, and an operation summary. Works for your team's indices and public ones. |
| get_index_values | Historical index value series (EOD rows with every value series, e.g. PR/TR). Optional ISO start_time/end_time bounds; long series are evenly downsampled to the point cap, always keeping the latest point. |
| get_index_holdings | Index holdings snapshot (constituents with shares, weights, divisor) at-or-before 'time' (default: latest). Pass 'limit' for the top-N by weight. |
| get_index_weightings | Index weighting snapshot at-or-before 'time' (default: latest). |
| get_index_universe | Index universe snapshot (eligible securities) at-or-before 'time' (default: latest). |
| get_index_stats | Risk/return summary from the index's EOD value series: cumulative + annualized return, annualized volatility, max drawdown. 'series' picks a value column (default 'value'). |
| run_backtest | Run a historical simulation of a workflow (index_parameters JSON). Validates, then launches the run and immediately returns a backtest_id — poll get_backtest until status is 'completed' or 'failed'. Never creates a live index — use deploy_index. |
| get_backtest | Fetch a stored backtest result by backtest_id: performance summary and, with include_series=true, the (downsampled) value series. After deploy_index, also reports the deployed live index id. |
| save_workflow | Persist a workflow for the caller's team. Without workflow_id: creates a new DRAFT workflow. With workflow_id: updates an owned workflow in place (a live workflow's changed operations trigger a live reload). Always validated first; never changes stage. |
| deploy_index | Create a LIVE index from a saved workflow_id or inline index_parameters: runs a full backtest, persists its history, and registers the index for continuous scheduled calculation. Requires confirm=true. Returns the pending index_id + backtest_id immediately — poll get_index(index_id) or get_backtest(backtest_id) until the index lands on 'live' or 'failed' (deployed_index_id appears in get_backtest when done). |