{
  "data": {
    "tool": {
      "category": "",
      "endpoint": "https://quantrisk-mcp.quantrisk.workers.dev/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/quantrisk-mcp-server.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/quantrisk-mcp-server.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/quantrisk-mcp-server.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 4686,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 10
          },
          "findings": [
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "analyze_risk",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"analyze\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "calculate_greeks",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "compare_portfolios",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "correlation_matrix",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "monte_carlo_simulation",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "optimize_portfolio",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "performance_attribution",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "price_history",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "sector_exposure",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "stress_test",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "10 of 10 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:24:58Z",
        "count": 10,
        "schemaTokens": 4686,
        "status": "ok",
        "tools": [
          {
            "name": "analyze_risk",
            "description": "Calculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "benchmark": {
                  "default": "SPY",
                  "description": "Benchmark ticker for beta calculation, e.g. SPY or QQQ. Default: SPY.",
                  "maxLength": 10,
                  "minLength": 1,
                  "type": "string"
                },
                "confidence_level": {
                  "default": 0.95,
                  "description": "VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95.",
                  "maximum": 0.99,
                  "minimum": 0.01,
                  "type": "number"
                },
                "horizon_days": {
                  "default": 1,
                  "description": "Risk horizon in trading days. 1 = overnight, 21 ≈ 1 month, 252 ≈ 1 year. Default: 1.",
                  "maximum": 252,
                  "minimum": 1,
                  "type": "integer"
                },
                "lookback_days": {
                  "default": 252,
                  "description": "Number of historical trading days to use. 252 ≈ 1 year, 756 ≈ 3 years. Range: 30-1260. Default: 252.",
                  "maximum": 1260,
                  "minimum": 30,
                  "type": "integer"
                },
                "method": {
                  "default": "historical",
                  "description": "VaR calculation method. \"historical\" uses empirical return distribution, \"parametric\" assumes normality, \"cornish_fisher\" adjusts for skew and kurtosis. Default: \"historical\".",
                  "enum": [
                    "historical",
                    "parametric",
                    "cornish_fisher"
                  ],
                  "type": "string"
                },
                "positions": {
                  "description": "Array of portfolio positions. Each entry needs a ticker and quantity. Free tier: max 20 positions. Paid tier: up to 500.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "cost_basis": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                      },
                      "quantity": {
                        "description": "Number of shares held. Use a negative value to represent a short position.",
                        "type": "number"
                      },
                      "ticker": {
                        "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticker",
                      "quantity"
                    ],
                    "type": "object"
                  },
                  "maxItems": 500,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "positions"
              ],
              "type": "object"
            }
          },
          {
            "name": "monte_carlo_simulation",
            "description": "Run Monte Carlo simulation on a portfolio to model the distribution of future returns, including percentile outcomes and probability of loss.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "horizon_days": {
                  "default": 21,
                  "description": "Simulation horizon in trading days. 21 ≈ 1 month, 63 ≈ 1 quarter, 252 ≈ 1 year. Default: 21.",
                  "maximum": 252,
                  "minimum": 1,
                  "type": "integer"
                },
                "lookback_days": {
                  "default": 252,
                  "description": "Historical window used to estimate drift and volatility parameters. Range: 30-1260 trading days. Default: 252.",
                  "maximum": 1260,
                  "minimum": 30,
                  "type": "integer"
                },
                "model": {
                  "default": "gbm",
                  "description": "Stochastic process model. \"gbm\" = Geometric Brownian Motion (standard), \"jump_diffusion\" = adds jump risk for fat-tail scenarios. Default: \"gbm\".",
                  "enum": [
                    "gbm",
                    "jump_diffusion"
                  ],
                  "type": "string"
                },
                "num_paths": {
                  "default": 10000,
                  "description": "Number of simulation paths to run. More paths = more accurate but slower. Free tier: max 1,000. Paid tier: up to 100,000. Default: 10,000.",
                  "maximum": 100000,
                  "minimum": 100,
                  "type": "integer"
                },
                "positions": {
                  "description": "Array of portfolio positions. Free tier: max 20 positions. Paid tier: up to 500.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "cost_basis": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                      },
                      "quantity": {
                        "description": "Number of shares held. Use a negative value to represent a short position.",
                        "type": "number"
                      },
                      "ticker": {
                        "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticker",
                      "quantity"
                    ],
                    "type": "object"
                  },
                  "maxItems": 500,
                  "minItems": 1,
                  "type": "array"
                },
                "seed": {
                  "anyOf": [
                    {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Random seed for reproducible results. Omit for a fresh random run each time."
                }
              },
              "required": [
                "positions"
              ],
              "type": "object"
            }
          },
          {
            "name": "stress_test",
            "description": "Stress test a portfolio against historical crisis scenarios (GFC 2008, COVID 2020, etc.) or custom shocks (paid tier).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "custom_shocks": {
                  "anyOf": [
                    {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "market_shock": {
                            "description": "Broad market shock applied to all positions not covered by ticker_shocks or sector_shocks. e.g. -0.10 = market down 10%. Range: -1.0 to 1.0.",
                            "maximum": 1,
                            "minimum": -1,
                            "type": "number"
                          },
                          "name": {
                            "description": "Name for this custom scenario, e.g. 'Rate spike +300bps'. 1-50 characters.",
                            "maxLength": 50,
                            "minLength": 1,
                            "type": "string"
                          },
                          "sector_shocks": {
                            "additionalProperties": {
                              "maximum": 1,
                              "minimum": -1,
                              "type": "number"
                            },
                            "description": "Per-sector shocks applied to all positions in that sector. e.g. { Technology: -0.15 }. Range: -1.0 to 1.0.",
                            "type": "object"
                          },
                          "ticker_shocks": {
                            "additionalProperties": {
                              "maximum": 1,
                              "minimum": -1,
                              "type": "number"
                            },
                            "description": "Per-ticker price shocks as decimals, e.g. { AAPL: -0.20 } = AAPL drops 20%. Range: -1.0 to 1.0.",
                            "type": "object"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Custom shock definitions. PAID tier only. Each shock specifies ticker-level, sector-level, or market-wide price changes."
                },
                "positions": {
                  "description": "Array of portfolio positions. Free tier: max 20 positions and historical scenarios only. Paid tier: up to 500 positions plus custom shocks.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "cost_basis": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                      },
                      "quantity": {
                        "description": "Number of shares held. Use a negative value to represent a short position.",
                        "type": "number"
                      },
                      "ticker": {
                        "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticker",
                      "quantity"
                    ],
                    "type": "object"
                  },
                  "maxItems": 500,
                  "minItems": 1,
                  "type": "array"
                },
                "scenarios": {
                  "default": [
                    "gfc_2008",
                    "covid_2020"
                  ],
                  "description": "Historical scenarios to run. Available values: gfc_2008, covid_2020, dot_com_2000, black_monday_1987, taper_tantrum_2013, rate_hike_2022, volmageddon_2018, euro_crisis_2011. Default: [gfc_2008, covid_2020].",
                  "items": {
                    "enum": [
                      "gfc_2008",
                      "covid_2020",
                      "dot_com_2000",
                      "black_monday_1987",
                      "taper_tantrum_2013",
                      "rate_hike_2022",
                      "volmageddon_2018",
                      "euro_crisis_2011"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "positions"
              ],
              "type": "object"
            }
          },
          {
            "name": "optimize_portfolio",
            "description": "Find the optimal portfolio allocation using mean-variance optimization. Supports max Sharpe, min variance, and target return objectives. Paid tier only.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "constraints": {
                  "additionalProperties": false,
                  "description": "Optional weight constraints. See ConstraintsInput for details.",
                  "properties": {
                    "max_weight": {
                      "default": 1,
                      "description": "Maximum allocation weight per asset as a decimal. 0.1 = max 10% in any single asset. Range: 0.0-1.0. Default: 1.0.",
                      "maximum": 1,
                      "minimum": 0,
                      "type": "number"
                    },
                    "min_weight": {
                      "default": 0,
                      "description": "Minimum allocation weight per asset as a decimal. 0.0 = no minimum (asset may be excluded). Range: 0.0-1.0. Default: 0.0.",
                      "maximum": 1,
                      "minimum": 0,
                      "type": "number"
                    },
                    "sector_max": {
                      "anyOf": [
                        {
                          "additionalProperties": {
                            "maximum": 1,
                            "minimum": 0,
                            "type": "number"
                          },
                          "type": "object"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Maximum total portfolio weight per sector, e.g. { Technology: 0.30 } = max 30% in tech. Keys should be GICS sector names."
                    }
                  },
                  "type": "object"
                },
                "lookback_days": {
                  "default": 756,
                  "description": "Historical window for estimating return and covariance. 252 = 1 year, 756 = 3 years, 1260 = 5 years. Range: 252-1260. Default: 756.",
                  "maximum": 1260,
                  "minimum": 252,
                  "type": "integer"
                },
                "objective": {
                  "default": "max_sharpe",
                  "description": "Optimization objective. \"max_sharpe\" = maximize risk-adjusted return, \"min_variance\" = minimize portfolio volatility, \"target_return\" = hit a specific return with minimum risk. Default: \"max_sharpe\".",
                  "enum": [
                    "max_sharpe",
                    "min_variance",
                    "target_return"
                  ],
                  "type": "string"
                },
                "risk_free_rate": {
                  "default": 0.05,
                  "description": "Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe ratio calculation. Default: 0.05.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "target_return": {
                  "anyOf": [
                    {
                      "exclusiveMinimum": 0,
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "description": "Required when objective is \"target_return\". Annualized return as a decimal, e.g. 0.12 = 12% annual return target."
                },
                "tickers": {
                  "description": "Universe of tickers to optimize across. Must be 2-50 tickers. The optimizer will determine the best weights within this set.",
                  "items": {
                    "maxLength": 10,
                    "minLength": 1,
                    "pattern": "^[A-Z0-9.^-]{1,10}$",
                    "type": "string"
                  },
                  "maxItems": 50,
                  "minItems": 2,
                  "type": "array"
                }
              },
              "required": [
                "tickers"
              ],
              "type": "object"
            }
          },
          {
            "name": "correlation_matrix",
            "description": "Compute the pairwise correlation matrix for a set of assets. Identifies highly correlated pairs and diversification opportunities.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "lookback_days": {
                  "default": 252,
                  "description": "Historical window for computing correlations in trading days. 30 = ~6 weeks, 252 = ~1 year. Range: 30-1260. Default: 252.",
                  "maximum": 1260,
                  "minimum": 30,
                  "type": "integer"
                },
                "method": {
                  "default": "pearson",
                  "description": "Correlation method. \"pearson\" = linear correlation (standard), \"spearman\" = rank-based (robust to outliers), \"kendall\" = concordance-based. Default: \"pearson\".",
                  "enum": [
                    "pearson",
                    "spearman",
                    "kendall"
                  ],
                  "type": "string"
                },
                "tickers": {
                  "description": "Tickers to include in the correlation matrix. Minimum 2, maximum 50. Free tier: max 10 tickers. Paid tier: up to 50.",
                  "items": {
                    "maxLength": 10,
                    "minLength": 1,
                    "pattern": "^[A-Z0-9.^-]{1,10}$",
                    "type": "string"
                  },
                  "maxItems": 50,
                  "minItems": 2,
                  "type": "array"
                }
              },
              "required": [
                "tickers"
              ],
              "type": "object"
            }
          },
          {
            "name": "performance_attribution",
            "description": "Break down portfolio performance into factor exposures, sector allocation, and position contributions. Computes Sharpe, Sortino, Treynor, Calmar, and Information ratios.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "benchmark": {
                  "default": "SPY",
                  "description": "Benchmark ticker for relative performance metrics (Information Ratio, Tracking Error, Beta). Default: SPY.",
                  "maxLength": 10,
                  "minLength": 1,
                  "type": "string"
                },
                "period_days": {
                  "default": 252,
                  "description": "Measurement period in trading days. 252 = ~1 year. Range: 30-1260. Default: 252.",
                  "maximum": 1260,
                  "minimum": 30,
                  "type": "integer"
                },
                "positions": {
                  "description": "Array of portfolio positions. Free tier: max 20 positions (basic ratios only). Paid tier: up to 500 positions with full factor attribution.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "cost_basis": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                      },
                      "quantity": {
                        "description": "Number of shares held. Use a negative value to represent a short position.",
                        "type": "number"
                      },
                      "ticker": {
                        "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticker",
                      "quantity"
                    ],
                    "type": "object"
                  },
                  "maxItems": 500,
                  "minItems": 1,
                  "type": "array"
                },
                "risk_free_rate": {
                  "default": 0.05,
                  "description": "Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Sharpe, Sortino, and Treynor ratios. Default: 0.05.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                }
              },
              "required": [
                "positions"
              ],
              "type": "object"
            }
          },
          {
            "name": "sector_exposure",
            "description": "Break down portfolio exposure by GICS sector, market cap, and asset class. Returns concentration metrics including the Herfindahl-Hirschman Index.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "positions": {
                  "description": "Array of portfolio positions to analyze. Returns GICS sector weights, market cap breakdown, and concentration metrics.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "cost_basis": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                      },
                      "quantity": {
                        "description": "Number of shares held. Use a negative value to represent a short position.",
                        "type": "number"
                      },
                      "ticker": {
                        "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "ticker",
                      "quantity"
                    ],
                    "type": "object"
                  },
                  "maxItems": 500,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "positions"
              ],
              "type": "object"
            }
          },
          {
            "name": "price_history",
            "description": "Fetch historical OHLCV price data for one or more tickers. Free tier: 1 ticker, 252 days. Paid tier: up to 20 tickers, 1260 days.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "days": {
                  "default": 252,
                  "description": "Number of historical trading days to return. Free tier: max 252 days (~1 year). Paid tier: up to 1260 days (~5 years). Default: 252.",
                  "maximum": 1260,
                  "minimum": 1,
                  "type": "integer"
                },
                "interval": {
                  "default": "daily",
                  "description": "Price interval. \"daily\" returns one OHLCV row per trading day, \"weekly\" aggregates to weekly bars, \"monthly\" aggregates to monthly bars. Default: \"daily\".",
                  "enum": [
                    "daily",
                    "weekly",
                    "monthly"
                  ],
                  "type": "string"
                },
                "tickers": {
                  "description": "Ticker symbols to fetch price history for. Free tier: max 1 ticker. Paid tier: up to 20 tickers.",
                  "items": {
                    "maxLength": 10,
                    "minLength": 1,
                    "pattern": "^[A-Z0-9.^-]{1,10}$",
                    "type": "string"
                  },
                  "maxItems": 20,
                  "minItems": 1,
                  "type": "array"
                }
              },
              "required": [
                "tickers"
              ],
              "type": "object"
            }
          },
          {
            "name": "compare_portfolios",
            "description": "Compare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "confidence_level": {
                  "default": 0.95,
                  "description": "VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95.",
                  "maximum": 0.99,
                  "minimum": 0.01,
                  "type": "number"
                },
                "period_days": {
                  "default": 252,
                  "description": "Lookback period in trading days used for return and risk calculations. 252 = ~1 year. Range: 30-1260. Default: 252.",
                  "maximum": 1260,
                  "minimum": 30,
                  "type": "integer"
                },
                "portfolios": {
                  "description": "Two to five named portfolios to compare head-to-head. Each needs a unique name and a list of positions. Min: 2, max: 5.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "description": "Human-readable label for this portfolio, e.g. 'Current' or 'Rebalanced'. 1-50 chars.",
                        "maxLength": 50,
                        "minLength": 1,
                        "type": "string"
                      },
                      "positions": {
                        "description": "Positions in this portfolio. 1-500 entries.",
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "cost_basis": {
                              "anyOf": [
                                {
                                  "exclusiveMinimum": 0,
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "Per-share cost basis in USD. Optional — used only for P\u0026L calculations."
                            },
                            "quantity": {
                              "description": "Number of shares held. Use a negative value to represent a short position.",
                              "type": "number"
                            },
                            "ticker": {
                              "description": "Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters.",
                              "maxLength": 10,
                              "minLength": 1,
                              "pattern": "^[A-Z0-9.^-]{1,10}$",
                              "type": "string"
                            }
                          },
                          "required": [
                            "ticker",
                            "quantity"
                          ],
                          "type": "object"
                        },
                        "maxItems": 500,
                        "minItems": 1,
                        "type": "array"
                      }
                    },
                    "required": [
                      "name",
                      "positions"
                    ],
                    "type": "object"
                  },
                  "maxItems": 5,
                  "minItems": 2,
                  "type": "array"
                }
              },
              "required": [
                "portfolios"
              ],
              "type": "object"
            }
          },
          {
            "name": "calculate_greeks",
            "description": "Calculate option Greeks (delta, gamma, theta, vega, rho) for individual options or an options portfolio. Uses Black-Scholes for European, binomial for American style. Paid tier only.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "options": {
                  "description": "Array of option positions to calculate Greeks for. 1-100 options. Results include per-option Greeks and aggregated portfolio Greeks.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "expiry": {
                        "description": "Option expiry date in ISO 8601 format, e.g. 2026-12-19. Must be a future date.",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string"
                      },
                      "implied_volatility": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Implied volatility as a decimal, e.g. 0.25 = 25%. If omitted or null, it is computed from market_price."
                      },
                      "market_price": {
                        "anyOf": [
                          {
                            "exclusiveMinimum": 0,
                            "type": "number"
                          },
                          {
                            "type": "null"
                          }
                        ],
                        "description": "Current market price of the option in USD. Required when implied_volatility is not provided."
                      },
                      "option_type": {
                        "description": "Option type: \"call\" gives the right to buy, \"put\" gives the right to sell.",
                        "enum": [
                          "call",
                          "put"
                        ],
                        "type": "string"
                      },
                      "quantity": {
                        "default": 1,
                        "description": "Number of contracts. Positive = long, negative = short. Default: 1.",
                        "type": "integer"
                      },
                      "strike": {
                        "description": "Option strike price in USD. Must be a positive number.",
                        "exclusiveMinimum": 0,
                        "type": "number"
                      },
                      "style": {
                        "default": "european",
                        "description": "Option exercise style. \"european\" can only be exercised at expiry (Black-Scholes). \"american\" can be exercised any time (binomial model). Default: \"european\".",
                        "enum": [
                          "european",
                          "american"
                        ],
                        "type": "string"
                      },
                      "underlying": {
                        "description": "Ticker symbol of the underlying asset, e.g. AAPL.",
                        "maxLength": 10,
                        "minLength": 1,
                        "pattern": "^[A-Z0-9.^-]{1,10}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "underlying",
                      "strike",
                      "expiry",
                      "option_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 100,
                  "minItems": 1,
                  "type": "array"
                },
                "risk_free_rate": {
                  "default": 0.05,
                  "description": "Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Black-Scholes and binomial pricing models. Default: 0.05.",
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                }
              },
              "required": [
                "options"
              ],
              "type": "object"
            }
          }
        ]
      },
      "name": "QuantRisk",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "@quantrisk/mcp-server",
          "version": "1.0.2",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/quantrisk-mcp-server.json",
      "popularity": {
        "githubStars": 2,
        "npmWeekly": 54
      },
      "registryName": "dev.quantrisk/mcp-server",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://quantrisk-mcp.quantrisk.workers.dev/mcp"
        }
      ],
      "repository": "https://github.com/78degrees/mcp-server",
      "reviewed": false,
      "slug": "quantrisk-mcp-server",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=dev.quantrisk/mcp-server",
      "summary": "Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.",
      "updatedAt": "2026-05-09T21:53:30Z",
      "url": "https://www.anchorterminal.com/tools/quantrisk-mcp-server",
      "vendor": "quantrisk.dev",
      "vendorUrl": "https://quantrisk.dev",
      "version": "1.0.2",
      "websiteUrl": "https://quantrisk.dev",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/quantrisk-mcp-server",
    "json": "https://www.anchorterminal.com/tools/quantrisk-mcp-server.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/quantrisk-mcp-server.md",
    "slim": "https://www.anchorterminal.com/tools/quantrisk-mcp-server.min.md"
  },
  "markdown": "# QuantRisk\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by quantrisk.dev (https://quantrisk.dev)\n- Listed because: It's published in the registry under quantrisk.dev, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.\n\n## Facts\n\n- MCP registry: `dev.quantrisk/mcp-server` 1.0.2\n- Endpoint: https://quantrisk-mcp.quantrisk.workers.dev/mcp (streamable HTTP)\n- Package: npm `@quantrisk/mcp-server` (stdio)\n- Source: https://github.com/78degrees/mcp-server\n- Website: https://quantrisk.dev\n- npm downloads a week: 54\n- GitHub stars: 2\n- Registry entry updated: 2026-05-09\n\n## Tools\n\n- Tools it lists (10, about 4,686 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:24 UTC):\n  - `analyze_risk`: Calculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.\n  - `monte_carlo_simulation`: Run Monte Carlo simulation on a portfolio to model the distribution of future returns, including percentile outcomes and probability of loss.\n  - `stress_test`: Stress test a portfolio against historical crisis scenarios (GFC 2008, COVID 2020, etc.) or custom shocks (paid tier).\n  - `optimize_portfolio`: Find the optimal portfolio allocation using mean-variance optimization. Supports max Sharpe, min variance, and target return objectives. Paid tier only.\n  - `correlation_matrix`: Compute the pairwise correlation matrix for a set of assets. Identifies highly correlated pairs and diversification opportunities.\n  - `performance_attribution`: Break down portfolio performance into factor exposures, sector allocation, and position contributions. Computes Sharpe, Sortino, Treynor, Calmar, and…\n  - `sector_exposure`: Break down portfolio exposure by GICS sector, market cap, and asset class. Returns concentration metrics including the Herfindahl-Hirschman Index.\n  - `price_history`: Fetch historical OHLCV price data for one or more tickers. Free tier: 1 ticker, 252 days. Paid tier: up to 20 tickers, 1260 days.\n  - `compare_portfolios`: Compare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.\n  - `calculate_greeks`: Calculate option Greeks (delta, gamma, theta, vega, rho) for individual options or an options portfolio. Uses Black-Scholes for European, binomial for American…\n- How its tools read to an agent (0 errors, 10 warnings, 1 note, about 4,686 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC16 analyze_risk: no readOnlyHint or destructiveHint\n  - warn TC16 calculate_greeks: no readOnlyHint or destructiveHint\n  - warn TC16 compare_portfolios: no readOnlyHint or destructiveHint\n  - warn TC16 correlation_matrix: no readOnlyHint or destructiveHint\n  - warn TC16 monte_carlo_simulation: no readOnlyHint or destructiveHint\n  - warn TC16 optimize_portfolio: no readOnlyHint or destructiveHint\n  - warn TC16 performance_attribution: no readOnlyHint or destructiveHint\n  - warn TC16 price_history: no readOnlyHint or destructiveHint\n  - warn TC16 sector_exposure: no readOnlyHint or destructiveHint\n  - warn TC16 stress_test: no readOnlyHint or destructiveHint\n  - note TC24 server: 10 of 10 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/quantrisk-mcp-server.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "QuantRisk",
        "url": ""
      }
    ],
    "description": "QuantRisk, an MCP server by quantrisk.dev, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "QuantRisk",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/quantrisk-mcp-server",
    "published": "",
    "section": "indexed",
    "title": "QuantRisk: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/quantrisk-mcp-server"
  },
  "tokens": {
    "markdown": 1150,
    "slim": 1080
  },
  "version": 1
}
