Skip to main content
Glama
Savvly

savvly-mcp

Project Retirement Trajectory With Savvly

project_retirement_with_savvly
Read-onlyIdempotent

Simulate a full retirement savings trajectory with and without a Savvly allocation, from current age to life expectancy, to see the projected funding gap and possible higher monthly paycheck.

Instructions

Full retirement simulation showing the projected savings trajectory WITH and WITHOUT a Savvly allocation across the planning horizon (current_age → life_expectancy). Requires current_age ≤ retirement_age ≤ life_expectancy. Returns gap_score, possible_higher_monthly_paycheck, a server-provided headline message, and a per-year age_dependent_values[] timeline. Disclaimers + per-field hints under metadata. DISCLOSURE REQUIRED: display disclosure.text verbatim and link disclosure.url to the user alongside any figures from this response. Required by SEC Marketing Rule and FINRA Rule 2210 — do not paraphrase or omit. VISUALIZATION: this tool emits an interactive chart widget (MCP Apps — see _meta.ui) that the HOST renders inline and editable; other clients render only your text and show no chart. That widget is the canonical chart for these numbers: do NOT draw, generate, or re-render a duplicate of it. You MAY still create your OWN, DIFFERENT visualization (e.g. a table or an alternate breakdown) and place it wherever you judge best — only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows…'); you cannot tell whether the host rendered the widget. Summarize the key figures in prose and show the disclosure text and link, and reference the widget only conditionally (e.g. 'if your client shows the interactive chart, its fields are editable to re-run the projection'). ORDER: BEFORE you call this tool, ALWAYS write at least one short lead-in paragraph (1-3 sentences) framing what the projection will show — do NOT invent specific figures you do not have yet. On hosts that render the widget inline at the tool call, this keeps your text ahead of the chart so the widget is never the first thing shown; THEN call the tool (this lead-in is framing, NOT asking the user for inputs — still call it in the same turn without waiting) and give the grounded figures + disclosure after it returns. This lead-in rule applies to the MCP App widget only; any visualization you create yourself may appear wherever you judge best. INPUTS: every parameter is OPTIONAL and defaults to a sensible value. Call this tool IMMEDIATELY — pass only the values the user explicitly stated and omit the rest. Do NOT ask the user for starting values, assumptions, or missing parameters before calling; the rendered widget has editable fields so they adjust age, amounts, and other assumptions inline after it appears.

Input Schema

NameRequiredDescriptionDefault
current_ageNoCurrent age (default 40)
inflation_rateNoExpected annual inflation rate % (default 3)
retirement_ageNoPlanned retirement age (default 68)
life_expectancyNoPlanning horizon (default 100)
monthly_paycheckNoDesired monthly retirement paycheck in USD (default 4500)
monthly_contributionNoMonthly retirement contribution in USD (default 1000)
percentage_in_savvlyNoPercentage of the retirement portfolio allocated to Savvly (default 5)
pre_retirement_returnNoExpected pre-retirement annual return % (default 6)
annual_income_increaseNoAnnual contribution % increase (default 2)
post_retirement_returnNoExpected post-retirement annual return % (default 5)
other_retirement_incomeNoOther monthly retirement income in USD (default 1600)
current_retirement_savingsNoCurrent total retirement savings in USD (default 60000)

Output Schema

NameRequiredDescriptionDefault
inputsYes
resultYes
summaryYesConvenience summary. The narrative carries the canonical full-disclosures URL inline; display it verbatim alongside any figures from this response.
metadataYes
disclosureYesDISCLOSURE REQUIRED: display `disclosure.text` and link `disclosure.url` to the user whenever you present any number from this response. Required by SEC Marketing Rule and FINRA Rule 2210.
visualizationNoRecommended chart for this projection — a year-by-year area chart of `result.age_dependent_values` (savings with vs. without Savvly). Render it when the surface can display a graph. The richer `metadata.display_hints` block carries the same chart plus layout/tooltip detail.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.102
    • changedOutput schema / properties / metadata / properties / disclaimer / properties / assumptions / description
      Previous value: -"Verbatim bullet list of key assumptions used by the simulation (SSA tables, 8% market growth, 3% early-withdrawal rate, net of fund operating expenses, etc.). Surface when a user asks what the projection assumes."New value: +"Verbatim bullet list of key assumptions used by the simulation (SSA tables, 8% market growth, 0.2% annual early-withdrawal rate, net of fund operating expenses, etc.). Surface when a user asks what the projection assumes."
  2. Changed11 schema fields changedv1.0.97
    • changedInput schema / properties / annual_income_increase / maximum
      Previous value: -20New value: +10
    • addedInput schema / properties / current_retirement_savings / maximum
      Added value: +100000000
    • addedInput schema / properties / inflation_rate / maximum
      Added value: +10
    • addedInput schema / properties / inflation_rate / minimum
      Added value: +0
    • addedInput schema / properties / monthly_contribution / maximum
      Added value: +100000
    • addedInput schema / properties / monthly_paycheck / maximum
      Added value: +1000000
    • addedInput schema / properties / other_retirement_income / maximum
      Added value: +1000000
    • addedInput schema / properties / post_retirement_return / maximum
      Added value: +15
    • addedInput schema / properties / post_retirement_return / minimum
      Added value: +0
    • addedInput schema / properties / pre_retirement_return / maximum
      Added value: +15
    • addedInput schema / properties / pre_retirement_return / minimum
      Added value: +0
  3. Changed10 schema fields changedv1.0.92
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / properties / inputs / additionalProperties
      Previous value: -{}New value: +true
    • addedOutput schema / properties / inputs / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / metadata / properties / display_hints / properties / chart / properties / tooltip / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / metadata / properties / field_descriptions / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / result / properties / age_dependent_values / items / properties / age / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / result / properties / age_dependent_values / items / properties / age / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / visualization / properties / chart / properties / tooltip / propertyNames
      Added value: +{
      +  "type": "string"
      +}
  4. Changed1 schema field changedv1.0.69
    • changedInput schema / properties / current_age / minimum
      Previous value: -25New value: +18
  5. Changed2 schema fields changedv1.0.39
    • changedInput schema / properties / current_age / maximum
      Previous value: -79New value: +75
    • changedOutput schema / properties / metadata / properties / disclaimer / properties / assumptions / description
      Previous value: -"Verbatim bullet list of key assumptions used by the simulation (SSA tables, 8% market growth, 3% early-withdrawal rate, net of fees, etc.). Surface when a user asks what the projection assumes."New value: +"Verbatim bullet list of key assumptions used by the simulation (SSA tables, 8% market growth, 3% early-withdrawal rate, net of fund operating expenses, etc.). Surface when a user asks what the projection assumes."
  6. First observedv0.1.0

TDQS

A4/5.0
Behavior5/5

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

Beyond readOnly/idempotent annotations, the description discloses the age-ordering constraint, the returned fields (gap_score, possible_higher_monthly_paycheck, age_dependent_values[], metadata), mandatory legal disclosure handling, and the important host-rendering behavior for the MCP App widget. It also warns not to claim a chart is visible and not to re-render the canonical widget, which is substantial behavioral context.

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

Conciseness3/5

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

The description is front-loaded and organized, but it is quite long and repeats the lead-in/widget/no-duplicate-chart instructions in several forms. Those details matter for legal and host-rendering reasons, but the repetition reduces conciseness.

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 complex financial simulation with an output schema, this description covers the key gaps: parameter default behavior, output fields, legal disclosure obligations, widget rendering constraints, and the lead-in ordering rule. An agent has enough context to call and present results correctly without opening additional documentation.

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?

The schema already documents all 12 parameters at 100% coverage, so the baseline is 3. The description adds meaningful procedural semantics: every parameter is optional with sensible defaults, the agent should pass only explicitly stated values, omit the rest, and must not ask the user for missing assumptions before calling.

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 simulation: a full retirement trajectory with and without a Savvly allocation across current_age → life_expectancy. That clearly identifies the resource and verb, but it never explicitly names when to use this instead of siblings such as project_savvly_lumpsum, project_savvly_monthly, or compare_savvly_vs_alternative.

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

Usage Guidelines3/5

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

It gives strong procedural guidance ('Call this tool IMMEDIATELY', 'Do NOT ask the user for starting values'), which tells the agent how to invoke it. However, it does not explicitly state when to use this full simulation versus the other Savvly projection or comparison tools, so alternative selection is only implied.

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