Sentralis Portfolio Risk
Server Details
Crypto portfolio risk analysis: VaR, scenarios, liquidity and correlation engines as MCP tools.
- Status
- Healthy
- Uptime
- 21.2% over 56 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: discovery (list_risk_engines, list_supported_symbols), execution (run_risk_analysis), and retrieval (get_analysis_result). The async submit-and-poll pattern is explicit, so an agent cannot easily confuse them.
All four tools follow a consistent snake_case verb_noun pattern: get_analysis_result, list_risk_engines, list_supported_symbols, run_risk_analysis. Verb choice is predictable and mirrors the operation type.
Four tools are well-scoped for this server's narrow risk-analysis purpose: two lookup tools, one submission tool, and one result-fetch tool. No tool feels redundant or missing for the described workflow.
The surface covers the full async analysis lifecycle: learn engine configs, validate symbols, run an analysis, and poll for results. Minor gaps include no way to list past analyses or cancel a queued/running job, but these are workarounds, not dead ends.
Available Tools
4 toolsget_analysis_resultAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discharges it well: it discloses the three status outcomes, the return envelope shape ({ok:true, result} or a persisted domain error), and the presence of resolved data dates and an inputs hash. It omits auth/permission requirements and any rate-limit or retry-interval specifics for the queued case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then a compact status → meaning breakdown with no filler sentences. Slightly dense with domain jargon ('risk envelope', 'deterministic inputs hash') that is not unpacked, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema or annotation coverage, so the description must describe returns and lifecycle itself, and it largely does — status handling, envelope shape, error example, and extra result fields. It stops short of detailing what the risk envelope contains, which is the main remaining gap for a fetch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of param meaning, and it adds only 'by id'. It confirms the parameter is an analysis identifier but does not say how to obtain that id (e.g., returned by run_risk_analysis) or any validity constraints beyond the schema's uuid format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Fetch an analysis by id'), which is clearly distinct from the list_* siblings and from run_risk_analysis as its create counterpart. It does not explicitly name or contrast a sibling tool, so it falls just short of the 5 tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the status=queued branch tells the agent to poll again, which implies this is the polling/fetch step after run_risk_analysis. There is no explicit when-to-use statement, no precondition (e.g., where the analysis_id comes from), and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_risk_enginesAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the return payload (config contracts, limits, point-in-time support). It does not mention pagination, ordering, authentication, or whether the engine list is static or tenant-specific, which are minor gaps for a read-only enumeration tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first defines the resource and its payload, the second gives the call-ordering rule. Purpose is front-loaded before guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of sketching the return contents (config contracts, limits, asOfDate), which is enough for a zero-parameter discovery call. It could say slightly more about the shape of each engine entry, but nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter semantics to add beyond the schema. The description correctly adds no misleading parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('risk-analysis engines') and goes further to name the payload contents: JSON-Schema config contracts, limits, and asOfDate support. An agent can distinguish this discovery tool from get_analysis_result, list_supported_symbols, and run_risk_analysis without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the sequencing: 'Call this before run_risk_analysis to learn the exact config fields each engine requires.' This names the dependent sibling and the condition that triggers this call, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_symbolsAInspect
Search the supported asset universe (max 100 results). Preflight inline-portfolio symbols here — unknown symbols are dropped from valuation or yield INSUFFICIENT_DATA.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two important behaviors: a max of 100 results and that unknown symbols are dropped or cause INSUFFICIENT_DATA. It omits auth requirements, match semantics, and truncation behavior when more than 100 match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the result cap parenthesized and the usage hook front-loaded. No filler, though the em-dash clause is slightly compressed for the consequence it describes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param lookup with no output schema and no annotations, the description covers the invocation trigger and the failure consequence but leaves the input semantics and return shape undocumented. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is 1 parameter with 0% schema description coverage, and the description never mentions 'query' at all — no match mode (substring/prefix/exact), no case sensitivity, no behavior for an empty query. Since coverage is low, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('supported asset universe') with the result cap. It is clear what the tool returns, though it does not explicitly distinguish itself from siblings like get_analysis_result or run_risk_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Preflight inline-portfolio symbols here' gives a concrete when-to-use context tied to downstream valuation. It stops short of enumerating alternatives or when-not-to-use cases, but the intended moment of invocation is unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_risk_analysisAInspect
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 with asOfDateSupported only) runs the analysis point-in-time: current portfolio composition × historical market data. ALWAYS returns an analysis_id immediately — poll get_analysis_result until status is succeeded or failed.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | ||
| engine | Yes | ||
| as_of_date | No | ||
| portfolio_ref | No | ||
| inline_positions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: it discloses the mandatory async pattern (ALWAYS returns an analysis_id immediately, poll get_analysis_result until succeeded/failed), the 30-position inline cap, and the point-in-time semantics of as_of_date (current composition × historical data). It omits auth requirements, rate limits, and the failure/error surface, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, with the action and portfolio-sourcing constraint stated first and operational details following. The long parenthetical engine list and the packed final clause cost some readability, though every sentence carries load-bearing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex, nested-schema tool with no output schema and no annotations, the description covers the async lifecycle, the return contract (analysis_id), config dependency, and portfolio alternatives. It would be complete at 5 with a note on permissions/limits or what a failed status implies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description supplies semantics for all five parameters beyond the raw schema: portfolio_ref as a stored portfolio id, inline_positions as ad-hoc with max 30 of {symbol, amount-as-decimal-string}, config as engine-specific JSON Schema validated via list_risk_engines, and as_of_date with format plus the asOfDateSupported restriction. This compensates fully for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Submit a risk analysis') and enumerates the eight supported engines, immediately separating it from siblings like get_analysis_result and list_risk_engines. An agent knows exactly what this tool does and what domain it covers without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the one-of portfolio sourcing rule (portfolio_ref OR inline_positions, not both) and routes config validation to list_risk_engines and result retrieval to get_analysis_result. It lacks explicit when-not-to-use guidance (e.g. when to prefer list_risk_engines or how to distinguish stored vs ad-hoc portfolios), so it stops just short of the top.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_analysis_result - First observed
list_risk_engines - First observed
list_supported_symbols - First observed
run_risk_analysis
Related MCP Connectors
Portfolio risk analytics — VaR, Monte Carlo, optimization, options Greeks, stress testing.
Crypto transaction firewall and risk tools for MCP agents.
RiskOracle - 13-tool enterprise risk MCP: heatmaps, KRIs, scenario sims, Basel/ICAAP outputs.
Agent-native crypto market-data over MCP+REST: order flow, whales, liquidations, calibrated scores
Related MCP Servers
- AlicenseAqualityDmaintenancePortfolio risk analytics MCP server — VaR, Monte Carlo simulation, stress testing, portfolio optimization, options Greeks, and correlation analysis. Real market data via Yahoo Finance. Free tier available, Pro at $29/mo.1095 npm2MIT
- FlicenseNot gradedqualityCmaintenanceEnables portfolio risk assessment, sentiment analysis, and investment recommendations via MCP tools.-
- AlicenseNot gradedqualityBmaintenanceEnables quantitative portfolio tail-risk analysis, option Greeks, Monte Carlo stochastic simulations, fixed-income duration/convexity, and Nelson-Siegel yield-curve interpolation through MCP tools.7MIT
- AlicenseNot gradedqualityBmaintenanceEnables quantitative risk analysis by calculating portfolio Value-at-Risk and Conditional VaR/Expected Shortfall across parametric and historical loss distributions, along with related option Greeks, Monte Carlo simulations, and fixed-income analytics through MCP.7MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.