Option, backtest, portfolio, and pairs checks for agents.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Verify a signal before recommending it. The signal earns the next bar only, so same-bar prices are not treated as tradable. Slippage is one square-root impact from depth and size, not a live order book. Returns Sharpe, Sortino, drawdown, and an approximate deflated Sharpe. Not investment advice.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http quantworlds https://api.quantworlds.com/mcp
Verify a signal before recommending it. The signal earns the next bar only, so same-bar prices are not treated as tradable. Slippage is one square-root impact from depth and size, not a live order book. Returns Sharpe, Sortino, drawdown, and an approximate deflated Sharpe. Not investment advice.
| Argument | Type | Description |
|---|---|---|
| prices* | array | |
| fee_bps | number | |
| raw_signals* | array | |
| trade_size_usd | number | |
| order_book_depth_usd | number | |
| trials_tested_by_agent | integer |
{
"type": "object",
"title": "mcp_instant_signal_backtestArguments",
"required": [
"prices",
"raw_signals"
],
"properties": {
"prices": {
"type": "array",
"items": {
"type": "number"
},
"title": "Prices"
},
"fee_bps": {
"type": "number",
"title": "Fee Bps",
"default": 2
},
"raw_signals": {
"type": "array",
"items": {
"type": "number"
},
"title": "Raw Signals"
},
"trade_size_usd": {
"type": "number",
"title": "Trade Size Usd",
"default": 50000
},
"order_book_depth_usd": {
"type": "number",
"title": "Order Book Depth Usd",
"default": 500000
},
"trials_tested_by_agent": {
"type": "integer",
"title": "Trials Tested By Agent",
"default": 10
}
}
}Use this for a two-asset pairs check instead of eyeballing a hedge ratio. Returns an Engle-Granger Dickey-Fuller p-value, OLS and Kalman hedge ratios, half-life, and z-score. Two series only. Not a Johansen test and not investment advice.
| Argument | Type | Description |
|---|---|---|
| series_x* | array | |
| series_y* | array | |
| ask_volumes | any | |
| bid_volumes | any |
{
"type": "object",
"title": "mcp_microstructure_coint_testArguments",
"required": [
"series_y",
"series_x"
],
"properties": {
"series_x": {
"type": "array",
"items": {
"type": "number"
},
"title": "Series X"
},
"series_y": {
"type": "array",
"items": {
"type": "number"
},
"title": "Series Y"
},
"ask_volumes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "number"
}
},
{
"type": "null"
}
],
"title": "Ask Volumes",
"default": null
},
"bid_volumes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "number"
}
},
{
"type": "null"
}
],
"title": "Bid Volumes",
"default": null
}
}
}Use this instead of estimating Greeks or adding a handmade American premium. European prices are Black-Scholes. American puts, and calls with dividends, use a 128-step binomial tree plus a European control variate. A zero-dividend American call matches the European call. The call surface is checked for arbitrage. Supply spot, strikes, and implied volatilities. Not investment advice.
| Argument | Type | Description |
|---|---|---|
| spot* | number | |
| strikes* | array | |
| iv_array* | array | |
| is_american | boolean | |
| option_type | string | |
| dividend_yield* | number | |
| risk_free_rate* | number | |
| time_to_expiry_years* | number |
{
"type": "object",
"title": "mcp_options_surface_pricerArguments",
"required": [
"spot",
"strikes",
"time_to_expiry_years",
"risk_free_rate",
"dividend_yield",
"iv_array"
],
"properties": {
"spot": {
"type": "number",
"title": "Spot"
},
"strikes": {
"type": "array",
"items": {
"type": "number"
},
"title": "Strikes"
},
"iv_array": {
"type": "array",
"items": {
"type": "number"
},
"title": "Iv Array"
},
"is_american": {
"type": "boolean",
"title": "Is American",
"default": true
},
"option_type": {
"type": "string",
"title": "Option Type",
"default": "call"
},
"dividend_yield": {
"type": "number",
"title": "Dividend Yield"
},
"risk_free_rate": {
"type": "number",
"title": "Risk Free Rate"
},
"time_to_expiry_years": {
"type": "number",
"title": "Time To Expiry Years"
}
}
}Run this before suggesting a rebalance. Normal VaR understates the tail: the report also returns a Student-t copula CVaR and Euler risk contributions. Crisis shocks repair the correlation matrix before applying the shock. Supply weights, vols, betas, and a correlation matrix. Not a historical path replay and not investment advice.
| Argument | Type | Description |
|---|---|---|
| scenario | string | |
| asset_betas* | array | |
| current_weights* | array | |
| confidence_level | number | |
| proposed_weights* | array | |
| asset_vols_annual* | array | |
| correlation_matrix* | array |
{
"type": "object",
"title": "mcp_portfolio_stress_verifierArguments",
"required": [
"current_weights",
"proposed_weights",
"asset_vols_annual",
"asset_betas",
"correlation_matrix"
],
"properties": {
"scenario": {
"type": "string",
"title": "Scenario",
"default": "2020_COVID_LIQUIDITY_CRASH"
},
"asset_betas": {
"type": "array",
"items": {
"type": "number"
},
"title": "Asset Betas"
},
"current_weights": {
"type": "array",
"items": {
"type": "number"
},
"title": "Current Weights"
},
"confidence_level": {
"type": "number",
"title": "Confidence Level",
"default": 0.99
},
"proposed_weights": {
"type": "array",
"items": {
"type": "number"
},
"title": "Proposed Weights"
},
"asset_vols_annual": {
"type": "array",
"items": {
"type": "number"
},
"title": "Asset Vols Annual"
},
"correlation_matrix": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "number"
}
},
"title": "Correlation Matrix"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 14, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.