asset-management
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| portfolio_summaryA | The user's current holdings + P&L + annualized returns (offline, read-only). Use to answer 'what do I hold / how am I doing'. |
| risk_reportA | Drawdown-first risk panel for the held portfolio: max drawdown (depth/dates/recovery + CI), Ulcer, CDaR, and Sharpe/Sortino/Calmar with bootstrap confidence intervals, plus the annualized time-weighted return (it rides on the same daily history). Offline, read-only. Use to answer 'how risky / how deep are the drawdowns' — and for the time-weighted return portfolio_summary can't compute. |
| rebalance_checkA | Buy/sell/hold suggestions to move current holdings toward the target allocation (ASSET_TARGET). There are exactly 4 modes: 'to_total' (rebalance the whole book back to target weights — ALSO deploys new_cash into the rebalance if you pass it) and 'bands' (trade only sleeves that drifted past the 5%/25% threshold — the one mode that IGNORES new_cash); 'fixed_dca' (spread new_cash across the target mix) and 'cash_flow_only' (put new_cash into the most-underweight sleeves) — these two REQUIRE new_cash > 0 and suggest all-HOLD when it is 0. Offline + read-only — it suggests, never trades. A NEW target ticker can't be sized offline (no cached price); those appear under 'unpriced'. |
| securities_factsA | Published fund facts for each of the user's holdings (offline, read-only): type (ETF vs stock), expense ratio, AUM, average volume, age, category. Use to answer 'what am I paying / how big / how liquid / how old are my funds'. Reads the 7-day metadata cache; uncached holdings appear under 'missing'. |
| discover_gapsA | Roles the user's portfolio is light in (≤3% of market value) and the largest low-cost ETFs that fill each (offline, read-only, propose-only). Use to answer 'what am I missing / what could I consider adding'. The candidate listing is deterministic; for the full per-candidate screen call |
| screen_candidateA | Judge a NEW ticker against the user's book (offline, read-only, propose-only): cost, liquidity, age, concentration, overlap with what they hold, and whether it diversified their past drawdowns — each with a reason and the figures behind it. Use to answer 'is TICKER a good fit'. Fetches TICKER's price history on demand if it isn't cached (unless ASSET_MCP_OFFLINE is set). Never a buy recommendation or a return forecast. |
| propose_allocationA | Propose a strategic target allocation for a risk posture (conservative / moderate / aggressive) over the user's book + the curated universe, and validate it against a canonical reference (60-40 / all-weather / permanent) with a walk-forward held-out drawdown verdict. Use to answer 'what should a moderate portfolio look like for me, and is it sound'. Propose-only: never trades, never a recommendation or return forecast — every weight comes from the deterministic core. The weights are always returned; the verdict needs the reference tickers cached, else it's null with a warm note. Pass benchmark='none' to skip validation. |
| starter_allocationA | Turn a new user's risk answers into a starting allocation. Pass the three onboarding answers — horizon ('under_3_years' | '3_to_10_years' | 'over_10_years'), loss_response ('sell' | 'hold' | 'buy_more'), cash_buffer ('no' | 'partly' | 'comfortably') — and it maps them to a conservative/moderate/aggressive posture (a fixed, explainable rubric — never your guess) and returns that preset allocation validated against a benchmark (60-40 / all-weather / permanent, or 'none' to skip — default 60-40), same as propose_allocation. Ask the three questions in plain language first, then call this with the chosen answer tokens. Propose-only: a hand-designed starting posture, never a recommendation or a return forecast. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| portfolio_checkup | The full picture: holdings + returns + drawdown-first risk, in plain words. |
| whats_my_drawdown | How deep my portfolio fell, how long it stayed down, and what that felt like. |
| should_i_rebalance | Whether my target policy says to act, for a chosen mode (to_total | bands | fixed_dca | cash_flow_only). |
| fill_my_gaps | Portfolio roles I'm light in + screened candidate ETFs for each (propose-only). |
| find_my_starting_allocation | New here? Answer 3 risk questions and get a starting allocation matched to them. |
| propose_a_posture | A starting allocation for a risk posture (conservative / moderate / aggressive), validated against a benchmark (60-40 / all-weather / permanent, or 'none' to skip). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| guarantees | The trust manifest: what this server will and won't do — four guarantees enforced in code and pinned by tests. |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/disin7c9/asset-management'
If you have feedback or need assistance with the MCP directory API, please join our Discord server