{
  "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"
  },
  "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"
    ]
  }
}
