{"serverId":"mcp-registry/io.sentralis/portfolio-risk","tools":[{"name":"get_analysis_result","fixed":{"name":"get_analysis_result","description":"Fetch an analysis by id. status=queued → poll again shortly; succeeded → result contains the risk envelope ({ok:true, result} or a persisted domain error like INSUFFICIENT_DATA) plus resolved data dates and the deterministic inputs hash; failed → error explains why.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["analysis_id"],"properties":{"analysis_id":{"type":"string","format":"uuid"}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":144,"tokensAfter":144},{"name":"list_risk_engines","fixed":{"name":"list_risk_engines","description":"List the available risk-analysis engines with their JSON-Schema config contracts, limits, and asOfDate (point-in-time) support. Call this before run_risk_analysis to learn the exact config fields each engine requires.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":101,"tokensAfter":101},{"name":"list_supported_symbols","fixed":{"name":"list_supported_symbols","description":"Search the supported asset universe (max 100 results). Preflight inline-portfolio symbols here — unknown symbols are dropped from valuation or yield INSUFFICIENT_DATA.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"query":{"type":"string","maxLength":40}},"additionalProperties":false},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":108,"tokensAfter":108},{"name":"run_risk_analysis","fixed":{"name":"run_risk_analysis","description":"Submit a risk analysis (engines: monte-carlo, historical-replay, sector-concentration-stress, liquidity-stress, correlation-regime-stress, counterparty-infrastructure-risk, factor-shock, macro-sensitivity). Provide EXACTLY ONE portfolio source: portfolio_ref (a stored portfolio id — see the user's portfolios) OR inline_positions (ad-hoc, max 30 positions of {symbol, amount-as-decimal-string}). config must satisfy the engine's JSON Schema from list_risk_engines. as_of_date (YYYY-MM-DD, engines wi","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["engine","config"],"properties":{"config":{"type":"object","additionalProperties":{}},"engine":{"enum":["monte-carlo","historical-replay","sector-concentration-stress","liquidity-stress","correlation-regime-stress","counterparty-infrastructure-risk","factor-shock","macro-sensitivity"],"type":"string"},"as_of_date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"portfolio_ref":{"type":"string","maxLength":100},"inline_positions":{"type":"array","items":{"type":"object","required":["symbol","amount"],"properties":{"amount":{"type":"string","maxLength":60,"minLength":1},"symbol":{"type":"string","maxLength":40,"minLength":1}},"additionalProperties":false},"maxItems":30,"minItems":1}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":380,"tokensAfter":380}],"toolsChanged":4,"tokensSaved":0,"todo":[{"tool":"get_analysis_result","params":["analysis_id"]},{"tool":"list_supported_symbols","params":["query"]},{"tool":"run_risk_analysis","params":["config","engine","as_of_date","portfolio_ref","inline_positions"]}],"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."}