Skip to main content
Glama

The record, month by month

return_history
Read-onlyIdempotent

What one portfolio returned over its record: growth per year, before and after inflation, best and worst months and years, the range of any 12 months in a row, returns by month and year, and how far the weights drift between rebalances. Use it for 'how did this do?'; for crises only use past_crises, for money put in every month monthly_plan. Base sets the currency the growth is measured in (default USD), which changes the result for holdings priced in other currencies. Past record only, not a forecast.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseNoCurrency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.
holdingsYesWhat is held: {ticker: weight or amount}. Weights need not sum to one; amounts in the base currency are also accepted (then the crises are shown in money). 1 to 100 holdings. Tickers as the exchange lists them (VOO, VWCE.DE, XAW.TO; 'CASH.USD' for cash).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
cagrNoGrowth per year over the record.
dataNoWhere the prices came from and what was missing or repaired.
gridNoMonthly returns: one row per year, null where the record has no month.
driftNoPer holding: target weight and how far it drifted between rebalances.
statsNobest_month, worst_month, best_year, worst_year, pct_positive, n_months, var95, cvar95, real_cagr (after inflation).
yearsNoCalendar years.
_fenceYesWhat these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.
monthsNoMonth names, aligned with each row of `grid`.
yearlyNoReturn per calendar year, aligned with `years`.
distributionNoHistogram of monthly returns: centers, counts.
rolling_statsNoAny 12 months in a row: min, max, percentiles, share negative.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description still adds real context beyond them: the result is a past record and explicitly not a forecast, and the base currency choice changes results for holdings priced in other currencies. It does not discuss pagination or performance limits, keeping it short of a 5.

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?

Front-loaded with the returned content before routing advice, and every sentence carries information. The output enumeration is dense but coherent; it is slightly long, which keeps it out of the top score rather than harming comprehension.

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?

An output schema exists, so return values need not be restated, and the description covers purpose, routing, the currency caveat, and the past-only scope. For a two-parameter read tool, an agent has everything needed to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns extra by explaining the consequence of 'base' (it sets the currency growth is measured in and changes the result for non-USD-priced holdings) in a way the schema's terse field description does not.

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+resource and precisely enumerates what is returned: growth per year before/after inflation, best/worst months and years, rolling 12-month ranges, calendar returns, and weight drift between rebalances. It also explicitly distinguishes itself from siblings past_crises and monthly_plan, so an agent can route without opening another schema.

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?

Gives an explicit trigger ('how did this do?') plus two named alternatives with their selecting conditions ('for crises only use past_crises, for money put in every month monthly_plan'). Nothing about when to choose this versus its siblings is left to inference.

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