asset-management
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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' (the same plan, but only when some sleeve has drifted past the 5%/25% threshold; if none has, every line is HOLD); '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), each with comparable funds from its standard SHELF — core funds first, so a style tilt or junk bond never fills a gap while a plain option exists (offline, read-only, propose-only). |
| 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 held-out recent-window 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. |
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: onboarding allocation, portfolio summary, risk analysis, rebalancing, fund facts, gap discovery, ticker screening, and strategic allocation. There is no ambiguity between any pair.
All names use snake_case with two words, but the pattern mixes verb_noun (discover_gaps, screen_candidate, propose_allocation), noun_noun (portfolio_summary, risk_report, securities_facts), and adjective_noun (starter_allocation). It is mostly consistent and readable, but not perfectly uniform.
With 8 tools, the server is well-scoped for an asset management assistant. Each tool serves a distinct function without unnecessary overlap, covering core operations like allocation, analysis, rebalancing, and screening.
The tool surface covers the full lifecycle of portfolio management: starting allocation, strategic proposal, performance reporting, risk analysis, rebalancing, fund information, gap identification, and new investment screening. No obvious gaps are present for a read-only advisory system.