{"serverId":"mcp-registry/dev.quantrisk/mcp-server","tools":[{"name":"analyze_risk","fixed":{"name":"analyze_risk","description":"Calculate core risk metrics for a portfolio — Value at Risk (VaR), Conditional VaR (CVaR), volatility, beta, and max drawdown.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["positions"],"properties":{"method":{"enum":["historical","parametric","cornish_fisher"],"type":"string","default":"historical","description":"VaR calculation method. \"historical\" uses empirical return distribution, \"parametric\" assumes normality, \"cornish_fisher\" adjusts for skew and kurtosis. Default: \"historical\"."},"benchmark":{"type":"string","default":"SPY","maxLength":10,"minLength":1,"description":"Benchmark ticker for beta calculation, e.g. SPY or QQQ. Default: SPY."},"positions":{"type":"array","items":{"type":"object","required":["ticker","quantity"],"properties":{"ticker":{"type":"string","pattern":"^[A-Z0-9.^-]{1,10}$","maxLength":10,"minLength":1,"description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"additionalProperties":false},"maxItems":500,"minItems":1,"description":"Array of portfolio positions. Each entry needs a ticker and quantity. Free tier: max 20 positions. Paid tier: up to 500."},"horizon_days":{"type":"integer","default":1,"maximum":252,"minimum":1,"description":"Risk horizon in trading days. 1 = overnight, 21 ≈ 1 month, 252 ≈ 1 year. Default: 1."},"lookback_days":{"type":"integer","default":252,"maximum":1260,"minimum":30,"description":"Number of historical trading days to use. 252 ≈ 1 year, 756 ≈ 3 years. Range: 30-1260. Default: 252."},"confidence_level":{"type":"number","default":0.95,"maximum":0.99,"minimum":0.01,"description":"VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":581,"tokensAfter":581},{"name":"calculate_greeks","fixed":{"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":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["options"],"properties":{"options":{"type":"array","items":{"type":"object","required":["underlying","strike","expiry","option_type"],"properties":{"style":{"enum":["european","american"],"type":"string","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\"."},"expiry":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Option expiry date in ISO 8601 format, e.g. 2026-12-19. Must be a future date."},"strike":{"type":"number","description":"Option strike price in USD. Must be a positive number.","exclusiveMinimum":0},"quantity":{"type":"integer","default":1,"description":"Number of contracts. Positive = long, negative = short. Default: 1."},"underlying":{"type":"string","pattern":"^[A-Z0-9.^-]{1,10}$","maxLength":10,"minLength":1,"description":"Ticker symbol of the underlying asset, e.g. AAPL."},"option_type":{"enum":["call","put"],"type":"string","description":"Option type: \"call\" gives the right to buy, \"put\" gives the right to sell."},"market_price":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Current market price of the option in USD. Required when implied_volatility is not provided."},"implied_volatility":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Implied volatility as a decimal, e.g. 0.25 = 25%. If omitted or null, it is computed from market_price."}},"additionalProperties":false},"maxItems":100,"minItems":1,"description":"Array of option positions to calculate Greeks for. 1-100 options. Results include per-option Greeks and aggregated portfolio Greeks."},"risk_free_rate":{"type":"number","default":0.05,"maximum":1,"minimum":0,"description":"Annualized risk-free rate as a decimal, e.g. 0.05 = 5%. Used in Black-Scholes and binomial pricing models. Default: 0.05."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":636,"tokensAfter":636},{"name":"compare_portfolios","fixed":{"name":"compare_portfolios","description":"Compare two or more portfolio allocations head-to-head across all key risk and return metrics. Paid tier only.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["portfolios"],"properties":{"portfolios":{"type":"array","items":{"type":"object","required":["name","positions"],"properties":{"name":{"type":"string","maxLength":50,"minLength":1,"description":"Human-readable label for this portfolio, e.g. 'Current' or 'Rebalanced'. 1-50 chars."},"positions":{"type":"array","items":{"type":"object","required":["ticker","quantity"],"properties":{"ticker":{"type":"string","pattern":"^[A-Z0-9.^-]{1,10}$","maxLength":10,"minLength":1,"description":"Ticker symbol, e.g. AAPL or MSFT. Must be uppercase, 1-10 characters."},"quantity":{"type":"number","description":"Number of shares held. Use a negative value to represent a short position."},"cost_basis":{"anyOf":[{"type":"number","exclusiveMinimum":0},{"type":"null"}],"description":"Per-share cost basis in USD. Optional — used only for P&L calculations."}},"additionalProperties":false},"maxItems":500,"minItems":1,"description":"Positions in this portfolio. 1-500 entries."}},"additionalProperties":false},"maxItems":5,"minItems":2,"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."},"period_days":{"type":"integer","default":252,"maximum":1260,"minimum":30,"description":"Lookback period in trading days used for return and risk calculations. 252 = ~1 year. Range: 30-1260. Default: 252."},"confidence_level":{"type":"number","default":0.95,"maximum":0.99,"minimum":0.01,"description":"VaR confidence level as a decimal, e.g. 0.95 = 95%. Range: 0.01-0.99. Default: 0.95."}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":509,"tokensAfter":509}],"toolsChanged":3,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}