Skip to main content
Glama

Fortunest demo

Holdings

holdings
Read-onlyIdempotent

DEMO portfolio (synthetic, shared, read-only). Read the holdings table — the positions themselves — instead of the whole context. sort: weight (default), value, dayChange (today's money move), dayChangePct (today's move in percent), gainPct, gainAbs, loss (biggest losses first), name, symbol; order desc|asc overrides the sensible default for the key. limit is 1-50 (default 10) with offset/nextOffset paging. filter narrows by account label, assetClass (Equities, Bonds, Gold & commodities, Real estate, Crypto, Cash, Other), category, sector, region, currency, an explicit symbols list and minWeight (a PERCENT, so 5 means 5%). fields picks the row width: core (symbol, name, weightPct, value, dayChangePct, dayChangeAbs, totalGainPct, totalGainAbs, quantity, assetClass, sector, category, accounts), fundamentals (adds valuation, growth, fair value, analyst view), lots (adds open quantity, tax-free quantity and the next maturity) or all. Every field ending in Pct is a PERCENT (4.32 = 4.32%). total counts the filtered list, not the page. Positions under 0.1% of the portfolio have no row: smallHoldingsGrouped gives their count, value and combined weight; a filter by symbols, assetClass, category or sector also names the matching ones, with their category, under notListed — held, but without a row. 'Top 5 holdings' is one call: sort=weight, limit=5.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "holdings"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNo
limitNo
orderNo
fieldsNo
filterNo
offsetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, and the description adds substantial context beyond that: the data is synthetic/demo and shared, positions under 0.1% are omitted but summarized via smallHoldingsGrouped and notListed, and total counts the filtered list rather than the page. Those are exactly the non-obvious traits an agent would otherwise get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, then parameters are walked through in a compact semicolon-delimited run with zero filler sentences. It is dense and long, but nearly every clause adds a distinct fact; a bulleted parameter block would read faster than the prose flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and six parameters including a nested filter object, the description still covers everything an agent needs: sorting, paging, filtering, row width, percent semantics, and the small-holdings edge case that would otherwise look like missing data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load, and it does: it explains each sort key's meaning (dayChange = today's money move, loss = biggest losses first), that order overrides the sensible default, that limit is 1-50 with default 10 and offset/nextOffset paging, every filter dimension, that minWeight is a percent, and the exact contents of each fields preset.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Read the holdings table — the positions themselves') and immediately scopes it against a broader alternative ('instead of the whole context'), which lets an agent distinguish it from whole-portfolio readers like get_core without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use and a concrete workflow shortcut ('Top 5 holdings' is one call: sort=weight, limit=5), plus guidance on which fields preset to pick. It stops short of explicit when-not-to-use routing to the singular `holding` sibling or to tax_lots, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.