Skip to main content
Glama

Quantic Finance

How your portfolio has done

get_performance
Read-only

How the signed-in user's portfolio has actually done — an annualized money-weighted return (XIRR) in their preferred currency, including dividends received and any sales, next to what the same money moved on the same days would have made in broad index funds.

Money-weighted, not time-weighted: it counts when each amount went in, so money invested before a good year earns more of the credit than money added at the end. Every flow is converted at the exchange rate published on its own date, so currency movement is part of the answer — unlike get_realized, which deliberately never converts because it measures a position rather than a portfolio.

status says whether a number was produced:

  • "ok" — rate_pct and the comparison are present.

  • "insufficient_ledger" — no holding has any trades behind it, so there is nothing to measure a return on. Ask the user to import their broker's trades.

  • "awaiting_rates" — historical exchange rates for the years the ledger spans are still being fetched; they arrive shortly.

coverage matters when reporting this. Holdings whose shares were typed in by hand have no purchase behind them, so they are excluded from both the flows and the value: the rate describes only the part with trade history, and coverage.value_pct says how much of the portfolio that is. Say so rather than presenting the figure as the whole portfolio's.

Benchmarks are accumulating funds, whose price already includes reinvested dividends, so both sides are total return. They are priced monthly, so treat the comparison as a direction rather than a decimal. Private to the caller.

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": "get_performance"
  }
}

Input Schema

NameRequiredDescriptionDefault
portfolioNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already mark the tool as readOnlyHint=true, and the description adds substantial behavioral detail beyond that: per-date currency conversion, status semantics, exclusion of hand-entered holdings from the calculation, monthly benchmark pricing, total-return treatment, and privacy for the caller. There is no contradiction with the read-only annotation.

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

Conciseness5/5

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

Although the description is long, every sentence contributes essential interpretation or caveat information. The content is front-loaded with the core definition, then organized into clear paragraphs and bullet-style status details, making it scannable despite its length.

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

Completeness4/5

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

For a tool with no output schema and only one simple parameter, the description is remarkably complete: it explains the metric, edge cases, status values, benchmark limitations, and reporting caveats. The only meaningful gap is the meaning of the portfolio parameter, which would be necessary for an agent to invoke the tool with full confidence.

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

Parameters1/5

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

The input schema has one parameter, portfolio, with a string type and no description, and schema description coverage is 0%. The description never explains what the portfolio parameter should contain, whether it is an ID, name, or optional selector, or what happens when it is omitted. Since the description must compensate for the absence of schema coverage and does not, the parameter semantics are effectively missing.

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?

The description states a precise verb and resource: it measures how the signed-in user's portfolio has actually done, defined as an annualized money-weighted return (XIRR) including dividends and sales, with a benchmark comparison. It also explicitly distinguishes itself from get_realized, making the tool's scope easy to separate from siblings.

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

Usage Guidelines5/5

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

The description provides actionable usage guidance: it explains the money-weighted vs time-weighted distinction, calls out get_realized as the alternative for position-level measurement, and gives explicit handling instructions for the statuses such as asking the user to import trades when the ledger is insufficient. It also warns how to report coverage rather than overstating the return as portfolio-wide.

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.

Resources