@savvly/mcp-server 1.0.39 → 1.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -21624,7 +21624,7 @@ var PRODUCT_COMPARISON = {
21624
21624
  var VALID_PRODUCT_TYPES = COMPARISONS.map((c) => c.product_type);
21625
21625
 
21626
21626
  // ../../src/mcp/version.ts
21627
- var SERVER_VERSION = "1.0.39";
21627
+ var SERVER_VERSION = "1.0.40";
21628
21628
 
21629
21629
  // ../../src/mcp/ui/payout-chart.ts
21630
21630
  var PAYOUT_UI_URI = "ui://savvly/payout-chart.html";
@@ -23742,7 +23742,7 @@ function disclosureBlock() {
23742
23742
  };
23743
23743
  }
23744
23744
  var DISCLOSURE_REQUIRED_TERSE = "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 \u2014 do not paraphrase or omit.";
23745
- var VISUALIZATION_RECOMMENDED_TERSE = "VISUALIZATION: this tool emits an interactive chart widget (MCP Apps \u2014 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 \u2014 only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows\u2026'); 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: the MCP App widget should appear at the END, after all of your response text \u2014 lead with your written answer (figures + disclosure) and let the widget close the reply; never open with it or build your answer around it. This end-placement applies to the MCP App widget only, not to any visualization you create yourself, which may appear wherever you deem appropriate.";
23745
+ var VISUALIZATION_RECOMMENDED_TERSE = "VISUALIZATION: this tool emits an interactive chart widget (MCP Apps \u2014 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 \u2014 only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows\u2026'); 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 \u2014 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 \u2014 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.";
23746
23746
  var INPUTS_OPTIONAL_NO_PROMPT_TERSE = "INPUTS: every parameter is OPTIONAL and defaults to a sensible value. Call this tool IMMEDIATELY \u2014 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.";
23747
23747
  var SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY = "Payout methodology \u2014 Savvly vs market alone: the payout values are calculated by comparing two investors of the same age committing the same principal. Investor 1 invests in the market with the Savvly Longevity Benefit; Investor 2 invests in the market alone (no longevity overlay). To make the comparison apples-to-apples, at each milestone age (80, 85, 90, 95) Investor 2 withdraws from their market alone portfolio the same dollar amount Investor 1 receives as a payout from Savvly. The `payout_market_alone_*` and `total_market_alone_*` figures are therefore what Investor 2 can actually withdraw to match Savvly's payouts before running out \u2014 they fall to 0 once the market alone portfolio is depleted. The `savvly_upside_*` (and `total_savvly_upside_*`) fields quantify how much more total money Investor 1 receives in payouts from Savvly than Investor 2 is able to withdraw over time to match those payouts.";
23748
23748
  function summarizePayouts(envelope, depositType, deposited) {
package/dist/cli.js CHANGED
@@ -21624,7 +21624,7 @@ var PRODUCT_COMPARISON = {
21624
21624
  var VALID_PRODUCT_TYPES = COMPARISONS.map((c) => c.product_type);
21625
21625
 
21626
21626
  // ../../src/mcp/version.ts
21627
- var SERVER_VERSION = "1.0.39";
21627
+ var SERVER_VERSION = "1.0.40";
21628
21628
 
21629
21629
  // ../../src/mcp/ui/payout-chart.ts
21630
21630
  var PAYOUT_UI_URI = "ui://savvly/payout-chart.html";
@@ -23742,7 +23742,7 @@ function disclosureBlock() {
23742
23742
  };
23743
23743
  }
23744
23744
  var DISCLOSURE_REQUIRED_TERSE = "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 \u2014 do not paraphrase or omit.";
23745
- var VISUALIZATION_RECOMMENDED_TERSE = "VISUALIZATION: this tool emits an interactive chart widget (MCP Apps \u2014 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 \u2014 only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows\u2026'); 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: the MCP App widget should appear at the END, after all of your response text \u2014 lead with your written answer (figures + disclosure) and let the widget close the reply; never open with it or build your answer around it. This end-placement applies to the MCP App widget only, not to any visualization you create yourself, which may appear wherever you deem appropriate.";
23745
+ var VISUALIZATION_RECOMMENDED_TERSE = "VISUALIZATION: this tool emits an interactive chart widget (MCP Apps \u2014 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 \u2014 only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows\u2026'); 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 \u2014 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 \u2014 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.";
23746
23746
  var INPUTS_OPTIONAL_NO_PROMPT_TERSE = "INPUTS: every parameter is OPTIONAL and defaults to a sensible value. Call this tool IMMEDIATELY \u2014 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.";
23747
23747
  var SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY = "Payout methodology \u2014 Savvly vs market alone: the payout values are calculated by comparing two investors of the same age committing the same principal. Investor 1 invests in the market with the Savvly Longevity Benefit; Investor 2 invests in the market alone (no longevity overlay). To make the comparison apples-to-apples, at each milestone age (80, 85, 90, 95) Investor 2 withdraws from their market alone portfolio the same dollar amount Investor 1 receives as a payout from Savvly. The `payout_market_alone_*` and `total_market_alone_*` figures are therefore what Investor 2 can actually withdraw to match Savvly's payouts before running out \u2014 they fall to 0 once the market alone portfolio is depleted. The `savvly_upside_*` (and `total_savvly_upside_*`) fields quantify how much more total money Investor 1 receives in payouts from Savvly than Investor 2 is able to withdraw over time to match those payouts.";
23748
23748
  function summarizePayouts(envelope, depositType, deposited) {