Skip to main content
Glama

Money in every month, replayed

monthly_plan
Read-onlyIdempotent

Replays the same amount bought on the first trading day of every month, on one portfolio's own daily history with dividends reinvested: what it became against what was put in, the day it stood furthest below the money put in so far, and the longest stretch below it; then the same plan from every January the record allows, because the start year is luck. Use it for 'if I put X a month into these, what would it have become?'; for withdrawals living_off_it, for the record itself return_history. Holdings are weights here; monthly is the amount, start the first year. In the money of each year, before taxes and trading fees. What happened, never a forecast or a probability; years before the record are not invented.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
baseNoCurrency every figure is expressed in (USD, EUR, GBP, CAD…). Default USD.
startNoThe year whose January the plan starts in; the record's first whole January when absent.
monthlyYesAmount bought every month, in the base currency.
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
runNoThe plan from `start`: start (first buying day), year, months, put, value, worst_day, worst_value, worst_put, gap (how far below the money put in at its hardest moment), under_months (longest stretch below it, at month ends), brief_dip, under_from, under_to.
baseNoCurrency of every figure.
dataNoWhere the prices came from and what was missing or repaired.
kindNoreplayed.
startNoThe year whose January the plan started in.
_fenceYesWhat these figures are and are not: descriptive, no forecast, no advice. Repeat its sense when presenting the result.
amountNoBought every month, in the base currency.
recordNostart, end: the shared daily record replayed.
startsNoThe same plan from every January in `start_years`, in order; each as `run`.
limitationsNoWhat the figures leave out, in words.
start_yearsNoEvery January the record allows as a start.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: dividends are reinvested, results are in each year's money, figures are pre-tax and pre-fee, the plan is re-run from every January, and nothing before the record is extrapolated. It does not discuss cost or return shape, but the output schema covers the latter.

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 leads and the routing sentence follows, so it is front-loaded. The middle clause stacking three outputs ('what it became..., the day it stood furthest below..., the longest stretch below it') is dense and slightly clause-heavy, but each clause carries real information.

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?

For a read-only historical simulation with full annotations and an output schema, the description supplies everything needed to call it correctly: what is simulated, in what currency basis, what caveats apply, and which siblings to prefer instead. No material gap remains.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters including the weights-vs-amounts acceptance rule and ticker format. The description's 'Holdings are weights here; monthly is the amount, start the first year' restates that mapping rather than adding new meaning, so the baseline 3 applies.

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 specific verb (replays) on a specific resource (a fixed monthly purchase on one portfolio's history), and enumerates exactly what it computes: final value vs. contributions, deepest shortfall, longest underwater stretch, plus re-runs from every January. An agent can distinguish it from return_history or living_off_it without opening either 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 phrase ('if I put X a month into these, what would it have become?') and names two alternatives with their selecting conditions: living_off_it for withdrawals and return_history for the raw record. When-to-use and when-to-use-something-else are both present.

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