Skip to main content
Glama

What a savings target takes

solve_savings_plan
Read-onlyIdempotent

What it takes to reach a target: the return needed, or the saving needed.

Returns ``required_per_annum`` (the rate that reaches the target as stated), and
``required_contribution`` and ``required_initial`` (the two saving levers, each
at the supplied rate). A required return says what the target demands, not how
likely it is; ``describe_portfolio_outlook`` gives a strategy's expected return
for comparison.

A negative ``required_per_annum`` means deposits alone overshoot the target. A
negative ``required_contribution`` means no monthly saving is needed.
``required_per_annum: null`` means no rate in the solver's range reaches the target.
``per_annum_by_year`` (a glide path's rates) can stand in for ``per_annum`` when
the saving levers are solved.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "target_value": "<target_value>",
      "years": "<years>"
    },
    "name": "solve_savings_plan"
  }
}

Input Schema

NameRequiredDescriptionDefault
yearsYes
cadenceNomonthly
per_annumNoAssumed growth while the saving levers are solved. Omit it and only the required RETURN is answered — "how much must I save" has no answer until something is assumed about growth.
contributionNo
target_valueYes
initial_amountNo
per_annum_by_yearNo

Output Schema

NameRequiredDescriptionDefault
yearsYes
cadenceYes
currencyYes
target_valueYes
required_initialNoWhat must be put in at the start instead, at the rate given. Negative on the same terms.
required_per_annumNoThe constant rate that lands exactly on the target, holding the money as stated. NEGATIVE where the deposits alone already overshoot — it then takes a loss to miss. None where nothing between -95% and +100% a year reaches it, which is a target the levers do not move.
required_contributionNoWhat must be paid in each period to reach the target at the rate given. NEGATIVE means the opening amount alone already overshoots: no saving is needed, which is not the same as a negative deposit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely non-obvious semantics: negative `required_per_annum` means deposits overshoot, negative `required_contribution` means no saving needed, and `null` means no rate in range reaches the target. It also flags that a required return says nothing about likelihood, which prevents a common misinterpretation.

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 core purpose, then output semantics, then edge-case value meanings — a sensible order with no filler sentences. It runs slightly long and restates some `per_annum` guidance already present in the schema.

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?

With an output schema present, explaining return values is optional bonus rather than obligation, and the description goes further by interpreting sentinel values. For a 7-parameter tool the main gap is the unexplained `cadence`/`years` semantics, though their names and constraints make them largely self-evident.

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 only 14%, so the description must carry weight, and it does explain the interaction between `per_annum` and `per_annum_by_year` (glide path standing in for a flat rate) plus what the 'saving levers' are. However, `cadence`, `years`, and `target_value` get no treatment at all, and the `per_annum` explanation largely duplicates the schema's own description.

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

Purpose4/5

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

The description states a specific inverse-solve purpose: 'What it takes to reach a target: the return needed, or the saving needed,' and names the concrete outputs. It is clearly a solver rather than a forward projection, but it never names the obvious sibling `project_savings_plan`, which is the tool an agent would most likely confuse it with.

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?

It routes the agent onward to `describe_portfolio_outlook` for expected return comparison, and clarifies that omitting `per_annum` answers only the return question. What's missing is an explicit statement of when to choose this over `project_savings_plan` (forward projection) — the distinction is implied rather than stated.

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