@savvly/mcp-server 1.0.32 → 1.0.38

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.
package/dist/cli.js CHANGED
@@ -21099,17 +21099,17 @@ var EMPTY_COMPLETION_RESULT = {
21099
21099
 
21100
21100
  // ../../src/data/product.ts
21101
21101
  var PRODUCT = {
21102
- name: "Savvly Longevity Benefit Fund",
21102
+ name: "Savvly Longevity Benefit",
21103
21103
  category: "longevity_benefit_fund",
21104
21104
  tagline: "Market upside + longevity protection in a single SEC-registered investment",
21105
- positioning_statement: "Savvly is not insurance, not an annuity \u2014 it is a new kind of longevity-linked security: an SEC-registered closed-end investment fund that delivers structured milestone payouts via market participation plus longevity-pool reallocation.",
21106
- description: "Savvly offers a Longevity Benefit \u2014 an SEC-registered investment fund that combines S&P 500 index fund participation with a longevity pool reallocation mechanism. Contributions are invested in a low-cost S&P 500 ETF from Vanguard (VOO), held in custody at US Bank. At milestone ages (80, 85, 90, and 95), investors receive structured payouts that include both their market growth and an additional benefit from the longevity pool \u2014 when investors exit early, their unused share may be reallocated to remaining participants. This is NOT an annuity and NOT insurance. It is a capital markets structure registered with the SEC.",
21105
+ positioning_statement: "Savvly is not insurance, not an annuity \u2014 it is a new kind of longevity-linked security: an SEC-registered closed-end investment fund that delivers structured milestone payouts via market participation plus longevity-pool allocation.",
21106
+ description: "Savvly offers longevity protection \u2014 an SEC-registered investment fund that combines S&P 500 index fund participation with a longevity pool allocation mechanism. Contributions are invested in a low-cost S&P 500 ETF from Vanguard (VOO), held in custody at U.S. Bank. At milestone ages (80, 85, 90, and 95), investors receive structured payouts that include both their market growth and an additional benefit from the longevity pool \u2014 when investors exit early, their unused share may be allocated to remaining participants. This is NOT an annuity and NOT insurance. It is a capital markets structure registered with the SEC.",
21107
21107
  regulatory: {
21108
21108
  type: "SEC-registered investment fund",
21109
21109
  act: "Investment Company Act of 1940",
21110
- adviser: "Savvly Advisor LLC",
21110
+ adviser: "Savvly Advisor, LLC",
21111
21111
  adviser_type: "SEC-registered investment adviser",
21112
- custodian: "US Bank",
21112
+ custodian: "U.S. Bank",
21113
21113
  is_insurance: false,
21114
21114
  is_annuity: false
21115
21115
  },
@@ -21125,10 +21125,10 @@ var PRODUCT = {
21125
21125
  fees: {
21126
21126
  common_shares_bps: 55,
21127
21127
  tracking_shares_bps: 110,
21128
- blended_range_bps: { low: 55, high: 70 },
21129
- summary: "Savvly charges 55 bps on common (purchased) shares and 110 bps on tracking (allocated) shares. The effective blended fee depends on a participant's mix of the two share classes; estimates fall in the 55\u201370 bps range.",
21130
- structure: "Savvly's own management fees are 55 bps on purchased shares and 110 bps on allocated shares. These are separate from the underlying ETF expense ratio (~3 bps on VOO), which applies to every S&P 500 investor whether they hold Savvly or hold the ETF directly.",
21131
- estimates_are_net: "All return and payout illustrations published by Savvly are presented NET of Savvly's management fees."
21128
+ blended_range_bps: { low: 55, high: 80 },
21129
+ summary: "Savvly's annual fund operating expenses are 55 bps on common (purchased) shares and 110 bps on tracking (allocated) shares. The blended annual fund operating expense depends on a participant's mix of the two share classes; estimates fall in the 55\u201380 bps range.",
21130
+ structure: "Savvly's annual fund operating expenses are 55 bps on purchased shares and 110 bps on allocated shares.",
21131
+ estimates_are_net: "All return and payout illustrations published by Savvly are presented NET of Savvly's annual fund operating expenses."
21132
21132
  },
21133
21133
  payout_schedule: [
21134
21134
  {
@@ -21165,13 +21165,13 @@ var PRODUCT = {
21165
21165
  example: "After 10 years: min(1.0, 0.75 + 0.10) = 85% of the lesser of your original investment or current market value"
21166
21166
  },
21167
21167
  longevity_pool: {
21168
- description: "When investors exit the pool before reaching a payout milestone, their unused share may be reallocated to remaining investors, potentially increasing the returns available for those who stay. This mechanism creates an additional return above pure market performance \u2014 similar in concept to mortality credits in traditional tontines, but structured as an SEC-registered fund.",
21169
- mechanism: "reallocation",
21168
+ description: "When investors exit the pool before reaching a payout milestone, their unused share may be allocated to remaining investors, potentially increasing the returns available for those who stay. This mechanism creates an additional return above pure market performance \u2014 similar in concept to mortality credits in longevity-risk pooling arrangements, but structured as an SEC-registered fund.",
21169
+ mechanism: "allocation",
21170
21170
  not_insurance: "Unlike annuities, there is no insurance company bearing the risk. The benefit comes from the pool structure itself."
21171
21171
  },
21172
21172
  tax_treatment: {
21173
- general: "Long-term capital gains treatment (based on current tax law, subject to change)",
21174
- employer_roth: "Qualified Roth treatment available in employer-sponsored context",
21173
+ general: "Intends to qualify as a Regulated Investment Company (RIC); distributions are generally taxable as ordinary income or capital gain, and in-kind ETF payouts carry capital gains",
21174
+ employer_roth: "Tax-deferred when held in a tax-deferred account such as an IRA or 401(k)",
21175
21175
  note: "Consult a tax professional for advice specific to your situation"
21176
21176
  },
21177
21177
  channels: [
@@ -21197,7 +21197,7 @@ var PRODUCT = {
21197
21197
  portability_note: "Account remains portable on job change",
21198
21198
  company: {
21199
21199
  name: "Savvly",
21200
- legal_name: "Savvly Advisor LLC",
21200
+ legal_name: "Savvly Advisor, LLC",
21201
21201
  location: "Boulder, CO",
21202
21202
  backers: ["Techstars", "AgeTech Collaborative", "Pivotal Ventures"],
21203
21203
  partnerships: ["Gallagher"],
@@ -21239,7 +21239,7 @@ var PRODUCT = {
21239
21239
  }
21240
21240
  },
21241
21241
  disclaimers: {
21242
- projections: "Projections are hypothetical illustrations based on assumed rates of return and are not guarantees of future performance. Past performance does not guarantee future results. Savvly Advisor LLC is an SEC-registered investment adviser. Please consult a financial advisor for advice tailored to your specific situation.",
21242
+ projections: "Projections are hypothetical illustrations based on assumed rates of return and are not guarantees of future performance. Past performance does not guarantee future results. Savvly Advisor, LLC is an SEC-registered investment adviser. Please consult a financial advisor for advice tailored to your specific situation.",
21243
21243
  comparisons: "Comparisons are for informational purposes only and represent general product category characteristics. Specific products may vary. This is not investment advice.",
21244
21244
  general: "Payouts are potential outcomes based on fund participation, market performance, and pool dynamics. They are not guaranteed.",
21245
21245
  chart_summary: "This investment estimator is for illustrative purposes only, to help show possible performance for investors. The returns presented reflect Savvly's aspirational goals and are hypothetical, and there is no guarantee that these same results will be achieved by investors. All investors must consider their specific risk tolerances before any financial strategies are chosen for investment purposes. Please see full disclosures for more information.",
@@ -21285,45 +21285,49 @@ var SAVVLY_DIMENSIONS = {
21285
21285
  longevity_protection: {
21286
21286
  score: 5,
21287
21287
  label: "Very High",
21288
- explanation: "Structured milestone payouts at ages 80, 85, 90, and 95 with longevity pool reallocation benefit"
21288
+ explanation: "Structured milestone payouts at ages 80, 85, 90, and 95 with longevity pool allocation benefit"
21289
21289
  },
21290
21290
  market_upside: {
21291
21291
  score: 5,
21292
21292
  label: "Very High",
21293
21293
  explanation: "Full S&P 500 participation via low-cost ETFs \u2014 no return caps, no floors"
21294
21294
  },
21295
- counterparty_risk: {
21296
- score: 2,
21297
- label: "Low",
21298
- explanation: "Pool-based structure, assets held at US Bank under SEC oversight. No insurance company solvency risk"
21295
+ counterparty_safety: {
21296
+ score: 4,
21297
+ label: "High",
21298
+ explanation: "Pool-based structure, assets held at U.S. Bank under SEC oversight. No insurance company solvency risk"
21299
21299
  },
21300
21300
  liquidity: {
21301
- score: 3,
21302
- label: "Medium",
21301
+ score: 2,
21302
+ label: "Low",
21303
21303
  explanation: "Early withdrawal available at 75% of contribution + 1% per year held, capped at 100%"
21304
21304
  },
21305
- fees: {
21306
- range: "~0.55-0.70% blended (estimate)",
21307
- structure: "Savvly management fees: 55 bps on common (purchased) shares + 110 bps on tracking (allocated) shares; blended cost depends on the participant's share mix and is typically estimated in the 55-70 bps range. Plus the underlying S&P 500 ETF expense ratio (~3 bps on VOO), which any S&P 500 investor incurs. All Savvly return illustrations are net of management fees.",
21308
- score: 4
21305
+ cost_to_value: {
21306
+ score: 4,
21307
+ label: "High",
21308
+ explanation: "No initial fees. Fees are ~0.55-0.80% blended (estimate) \u2014 Savvly's annual fund operating expenses: 55 bps on common (purchased) shares + 110 bps on tracking (allocated) shares; the blended operating expense depends on the participant's share mix and is typically estimated in the 55-80 bps range. All Savvly return illustrations are net of these operating expenses."
21309
+ },
21310
+ affordability: {
21311
+ score: 4,
21312
+ label: "High",
21313
+ explanation: "$10/month contribution, or $100 lump-sum"
21309
21314
  },
21310
- minimum_investment: { amount: "$10/month", score: 5 },
21311
- tax_treatment: "Long-term capital gains (current law); qualified Roth in employer context",
21312
- regulatory_oversight: "SEC \u2014 Investment Company Act of 1940; Savvly Advisor LLC is SEC-registered",
21315
+ tax_treatment: "Taxed as ordinary income or capital gain; in-kind payouts carry capital gains; tax-deferred only in an IRA/401(k)",
21316
+ regulatory_oversight: "SEC \u2014 Investment Company Act of 1940; Savvly Advisor, LLC is SEC-registered",
21313
21317
  portability: {
21314
21318
  score: 5,
21315
21319
  label: "Very High",
21316
21320
  explanation: "Fully portable on job change"
21317
21321
  },
21318
- death_benefit: "Early withdrawal value returned to estate (75% + 1%/year held, capped at 100%)",
21322
+ death_benefit: "Low. Early withdrawal value returned to estate (75% + 1%/year held, capped at 100%)",
21319
21323
  inflation_protection: {
21320
21324
  score: 4,
21321
21325
  label: "High",
21322
21326
  explanation: "Market-linked returns provide natural inflation hedge over long horizons"
21323
21327
  },
21324
- complexity: {
21325
- score: 2,
21326
- label: "Low",
21328
+ simplicity: {
21329
+ score: 3,
21330
+ label: "Medium",
21327
21331
  explanation: "Simple structure: contribute, stay invested, receive milestone payouts. One underlying fund."
21328
21332
  }
21329
21333
  };
@@ -21344,7 +21348,7 @@ var COMPARISONS = [
21344
21348
  label: "None",
21345
21349
  explanation: "Fixed rate \u2014 no participation in market growth"
21346
21350
  },
21347
- counterparty_risk: {
21351
+ counterparty_safety: {
21348
21352
  score: 3,
21349
21353
  label: "Medium",
21350
21354
  explanation: "Depends on insurance company solvency; state guaranty association limits apply (typically $250K)"
@@ -21354,12 +21358,16 @@ var COMPARISONS = [
21354
21358
  label: "Very Low",
21355
21359
  explanation: "Surrender charges typically 5-10 years; often irrevocable after annuitization"
21356
21360
  },
21357
- fees: {
21358
- range: "0.5-2%",
21359
- structure: "Embedded in interest rate spread (not separately disclosed)",
21360
- score: 3
21361
+ cost_to_value: {
21362
+ score: 3,
21363
+ label: "Medium",
21364
+ explanation: "Sales commission plus 0.5-2% \u2014 Embedded in interest rate spread (not separately disclosed)"
21365
+ },
21366
+ affordability: {
21367
+ score: 3,
21368
+ label: "Medium",
21369
+ explanation: "Minimum $1,000-$25,000"
21361
21370
  },
21362
- minimum_investment: { amount: "$1,000-$25,000", score: 2 },
21363
21371
  tax_treatment: "Ordinary income tax on gains; 10% penalty before age 59.5",
21364
21372
  regulatory_oversight: "State insurance regulators (not SEC)",
21365
21373
  portability: {
@@ -21373,9 +21381,9 @@ var COMPARISONS = [
21373
21381
  label: "None",
21374
21382
  explanation: "Fixed nominal payments erode with inflation over decades"
21375
21383
  },
21376
- complexity: {
21377
- score: 2,
21378
- label: "Low",
21384
+ simplicity: {
21385
+ score: 3,
21386
+ label: "Medium",
21379
21387
  explanation: "Simple concept but contract terms can be lengthy"
21380
21388
  }
21381
21389
  }
@@ -21396,7 +21404,7 @@ var COMPARISONS = [
21396
21404
  label: "Medium",
21397
21405
  explanation: "Subaccount investment options, but rider costs (2-3%+) significantly reduce net returns"
21398
21406
  },
21399
- counterparty_risk: {
21407
+ counterparty_safety: {
21400
21408
  score: 3,
21401
21409
  label: "Medium",
21402
21410
  explanation: "Insurance company guarantee on riders; subaccount assets are segregated but riders depend on issuer solvency"
@@ -21406,12 +21414,16 @@ var COMPARISONS = [
21406
21414
  label: "Low",
21407
21415
  explanation: "Surrender charges (6-8 years typical); 10% annual free withdrawal; penalties before 59.5"
21408
21416
  },
21409
- fees: {
21410
- range: "2-3.5%+",
21411
- structure: "Mortality & expense charge (~1.25%) + admin (~0.15%) + subaccount (~0.5-1%) + rider (~1%)",
21412
- score: 1
21417
+ cost_to_value: {
21418
+ score: 2,
21419
+ label: "Low",
21420
+ explanation: "Sales commission plus 2-3.5%+ \u2014 Mortality & expense charge (~1.25%) + admin (~0.15%) + subaccount (~0.5-1%) + rider (~1%)"
21421
+ },
21422
+ affordability: {
21423
+ score: 2,
21424
+ label: "Low",
21425
+ explanation: "Minimum investment $5,000-$25,000"
21413
21426
  },
21414
- minimum_investment: { amount: "$5,000-$25,000", score: 2 },
21415
21427
  tax_treatment: "Tax-deferred growth; ordinary income tax on withdrawals; 10% penalty before 59.5",
21416
21428
  regulatory_oversight: "SEC (securities) + State insurance regulators (dual-regulated)",
21417
21429
  portability: {
@@ -21425,9 +21437,9 @@ var COMPARISONS = [
21425
21437
  label: "Medium",
21426
21438
  explanation: "Market exposure provides some hedge, but high fees drag on real returns"
21427
21439
  },
21428
- complexity: {
21429
- score: 5,
21430
- label: "Very High",
21440
+ simplicity: {
21441
+ score: 1,
21442
+ label: "Very Low",
21431
21443
  explanation: "Multiple fee layers, rider options, surrender schedules, subaccount choices, and benefit bases to track"
21432
21444
  }
21433
21445
  }
@@ -21448,7 +21460,7 @@ var COMPARISONS = [
21448
21460
  label: "Low",
21449
21461
  explanation: "Returns linked to index but capped (typically 4-8% annual cap) with participation rates (50-80%)"
21450
21462
  },
21451
- counterparty_risk: {
21463
+ counterparty_safety: {
21452
21464
  score: 3,
21453
21465
  label: "Medium",
21454
21466
  explanation: "Insurance company guarantee; state guaranty association limits apply"
@@ -21458,12 +21470,16 @@ var COMPARISONS = [
21458
21470
  label: "Low",
21459
21471
  explanation: "Surrender charges 7-10 years; 10% annual free withdrawal"
21460
21472
  },
21461
- fees: {
21462
- range: "0.5-2%",
21463
- structure: "Embedded in cap/participation rate spread; rider fees additional",
21464
- score: 3
21473
+ cost_to_value: {
21474
+ score: 2,
21475
+ label: "Low",
21476
+ explanation: "Sales commission plus 0.5-2% \u2014 Embedded in cap/participation rate spread; rider fees additional"
21477
+ },
21478
+ affordability: {
21479
+ score: 2,
21480
+ label: "Low",
21481
+ explanation: "$10,000+"
21465
21482
  },
21466
- minimum_investment: { amount: "$10,000+", score: 2 },
21467
21483
  tax_treatment: "Tax-deferred; ordinary income on withdrawals; 10% penalty before 59.5",
21468
21484
  regulatory_oversight: "State insurance regulators (not SEC-regulated)",
21469
21485
  portability: {
@@ -21477,9 +21493,9 @@ var COMPARISONS = [
21477
21493
  label: "Low",
21478
21494
  explanation: "Caps on returns limit upside; 0% floor protects against losses but not inflation"
21479
21495
  },
21480
- complexity: {
21481
- score: 4,
21482
- label: "High",
21496
+ simplicity: {
21497
+ score: 2,
21498
+ label: "Low",
21483
21499
  explanation: "Participation rates, caps, spreads, crediting methods, and reset periods make outcomes opaque"
21484
21500
  }
21485
21501
  }
@@ -21500,9 +21516,9 @@ var COMPARISONS = [
21500
21516
  label: "High",
21501
21517
  explanation: "Diversified market exposure (stocks + bonds), but glide path reduces equity allocation over time"
21502
21518
  },
21503
- counterparty_risk: {
21504
- score: 1,
21505
- label: "Very Low",
21519
+ counterparty_safety: {
21520
+ score: 5,
21521
+ label: "Very High",
21506
21522
  explanation: "Mutual fund \u2014 assets held in trust; no single-entity solvency risk"
21507
21523
  },
21508
21524
  liquidity: {
@@ -21510,12 +21526,16 @@ var COMPARISONS = [
21510
21526
  label: "Very High",
21511
21527
  explanation: "Redeemable any business day at NAV (within tax-advantaged account rules)"
21512
21528
  },
21513
- fees: {
21514
- range: "0.10-0.75%",
21515
- structure: "Expense ratio (index-based: 0.10-0.15%; actively managed: 0.40-0.75%)",
21516
- score: 4
21529
+ cost_to_value: {
21530
+ score: 3,
21531
+ label: "Medium",
21532
+ explanation: "0.10-0.75% \u2014 Expense ratio (index-based: 0.10-0.15%; actively managed: 0.40-0.75%)"
21533
+ },
21534
+ affordability: {
21535
+ score: 4,
21536
+ label: "High",
21537
+ explanation: "$0-$1,000"
21517
21538
  },
21518
- minimum_investment: { amount: "$0-$1,000", score: 5 },
21519
21539
  tax_treatment: "Depends on account type (401k/IRA: tax-deferred; taxable: capital gains)",
21520
21540
  regulatory_oversight: "SEC \u2014 Investment Company Act of 1940",
21521
21541
  portability: {
@@ -21529,9 +21549,9 @@ var COMPARISONS = [
21529
21549
  label: "Medium",
21530
21550
  explanation: "Equity component hedges inflation, but increasing bond allocation reduces this over time"
21531
21551
  },
21532
- complexity: {
21533
- score: 1,
21534
- label: "Very Low",
21552
+ simplicity: {
21553
+ score: 5,
21554
+ label: "Very High",
21535
21555
  explanation: "Single-fund solution \u2014 pick your target year, done"
21536
21556
  }
21537
21557
  }
@@ -21552,9 +21572,9 @@ var COMPARISONS = [
21552
21572
  label: "Medium",
21553
21573
  explanation: "Diversified portfolio but conservative allocation limits upside"
21554
21574
  },
21555
- counterparty_risk: {
21556
- score: 1,
21557
- label: "Very Low",
21575
+ counterparty_safety: {
21576
+ score: 5,
21577
+ label: "Very High",
21558
21578
  explanation: "Mutual fund structure \u2014 no insurance company risk"
21559
21579
  },
21560
21580
  liquidity: {
@@ -21562,12 +21582,16 @@ var COMPARISONS = [
21562
21582
  label: "High",
21563
21583
  explanation: "Redeemable at NAV; monthly distributions can be stopped/changed"
21564
21584
  },
21565
- fees: {
21566
- range: "0.30-0.65%",
21567
- structure: "Expense ratio",
21568
- score: 4
21585
+ cost_to_value: {
21586
+ score: 4,
21587
+ label: "High",
21588
+ explanation: "0.30-0.65% \u2014 Expense ratio"
21589
+ },
21590
+ affordability: {
21591
+ score: 3,
21592
+ label: "Medium",
21593
+ explanation: "$1,000-$5,000"
21569
21594
  },
21570
- minimum_investment: { amount: "$1,000-$5,000", score: 3 },
21571
21595
  tax_treatment: "Distributions may include return of capital, capital gains, and income",
21572
21596
  regulatory_oversight: "SEC \u2014 Investment Company Act of 1940",
21573
21597
  portability: {
@@ -21581,130 +21605,26 @@ var COMPARISONS = [
21581
21605
  label: "Low",
21582
21606
  explanation: "Fixed target distribution rate may not keep pace with inflation"
21583
21607
  },
21584
- complexity: {
21585
- score: 2,
21586
- label: "Low",
21608
+ simplicity: {
21609
+ score: 4,
21610
+ label: "High",
21587
21611
  explanation: "Simple concept but distribution sustainability requires monitoring"
21588
21612
  }
21589
21613
  }
21590
- },
21591
- {
21592
- product_type: "social_security_delay",
21593
- display_name: "Social Security Delay Strategy",
21594
- category: "government_benefit",
21595
- description: "Delaying Social Security benefits from age 62 to 70 increases the monthly benefit by approximately 8% per year of delay. Provides inflation-adjusted lifetime income backed by the U.S. government.",
21596
- dimensions: {
21597
- longevity_protection: {
21598
- score: 5,
21599
- label: "Very High",
21600
- explanation: "Inflation-adjusted lifetime income \u2014 the strongest longevity protection available"
21601
- },
21602
- market_upside: {
21603
- score: 1,
21604
- label: "None",
21605
- explanation: "Fixed formula \u2014 only inflation adjustment (COLA), no market participation"
21606
- },
21607
- counterparty_risk: {
21608
- score: 1,
21609
- label: "Very Low",
21610
- explanation: "Backed by U.S. government (some policy/benefit-cut risk exists long-term)"
21611
- },
21612
- liquidity: {
21613
- score: 1,
21614
- label: "None",
21615
- explanation: "Irreversible once claimed (limited 12-month withdrawal window)"
21616
- },
21617
- fees: {
21618
- range: "N/A",
21619
- structure: "No fees \u2014 funded by payroll taxes",
21620
- score: 5
21621
- },
21622
- minimum_investment: { amount: "N/A (earned via work credits)", score: 5 },
21623
- tax_treatment: "Up to 85% of benefits taxable as ordinary income depending on total income",
21624
- regulatory_oversight: "Federal government \u2014 Social Security Administration",
21625
- portability: {
21626
- score: 5,
21627
- label: "Very High",
21628
- explanation: "Follows the individual regardless of employment"
21629
- },
21630
- death_benefit: "Survivor benefits available to spouse (reduced amount)",
21631
- inflation_protection: {
21632
- score: 5,
21633
- label: "Very High",
21634
- explanation: "Annual cost-of-living adjustment (COLA) tied to CPI"
21635
- },
21636
- complexity: {
21637
- score: 2,
21638
- label: "Low",
21639
- explanation: "Simple concept but optimal claiming strategy depends on marital status, health, and other income"
21640
- }
21641
- }
21642
- },
21643
- {
21644
- product_type: "self_managed_drawdown",
21645
- display_name: "Self-Managed Drawdown (4% Rule)",
21646
- category: "diy_strategy",
21647
- description: "The traditional approach: accumulate in a diversified portfolio, then withdraw approximately 4% per year in retirement. Based on the Trinity Study (1998) targeting a 30-year retirement horizon.",
21648
- dimensions: {
21649
- longevity_protection: {
21650
- score: 1,
21651
- label: "None",
21652
- explanation: "Designed for ~30-year horizon. High failure rate at extreme longevity (35+ years). Sequence-of-returns risk in early retirement can deplete assets rapidly."
21653
- },
21654
- market_upside: {
21655
- score: 5,
21656
- label: "Very High",
21657
- explanation: "Full market participation \u2014 investor controls asset allocation"
21658
- },
21659
- counterparty_risk: {
21660
- score: 1,
21661
- label: "Very Low",
21662
- explanation: "Diversified portfolio \u2014 no single-entity risk"
21663
- },
21664
- liquidity: {
21665
- score: 5,
21666
- label: "Very High",
21667
- explanation: "Full access to assets at any time"
21668
- },
21669
- fees: {
21670
- range: "0.03-0.50%",
21671
- structure: "Depends on chosen funds (index funds: 0.03-0.10%)",
21672
- score: 5
21673
- },
21674
- minimum_investment: { amount: "Any amount", score: 5 },
21675
- tax_treatment: "Depends on account type and asset location strategy",
21676
- regulatory_oversight: "SEC (for funds held); no regulatory framework for the strategy itself",
21677
- portability: {
21678
- score: 5,
21679
- label: "Very High",
21680
- explanation: "Assets are fully yours \u2014 move anywhere"
21681
- },
21682
- death_benefit: "Full remaining portfolio value to beneficiaries",
21683
- inflation_protection: {
21684
- score: 3,
21685
- label: "Medium",
21686
- explanation: "Equity returns hedge inflation long-term, but the 4% rule uses inflation-adjusted withdrawals that can strain the portfolio in high-inflation periods"
21687
- },
21688
- complexity: {
21689
- score: 3,
21690
- label: "Medium",
21691
- explanation: "Requires discipline, ongoing portfolio management, and resistance to behavioral biases (overspending, panic selling). No guardrails."
21692
- }
21693
- }
21694
21614
  }
21695
21615
  ];
21696
21616
  var PRODUCT_COMPARISON = {
21697
21617
  savvly: SAVVLY_DIMENSIONS,
21698
21618
  comparisons: COMPARISONS,
21699
21619
  metadata: {
21700
- version: "1.0.0",
21620
+ version: "1.2.0",
21701
21621
  disclaimer: "Comparisons are for informational purposes only and represent general product category characteristics. Specific products may vary. This is not investment advice. Consult a qualified financial advisor for recommendations tailored to your situation."
21702
21622
  }
21703
21623
  };
21704
21624
  var VALID_PRODUCT_TYPES = COMPARISONS.map((c) => c.product_type);
21705
21625
 
21706
21626
  // ../../src/mcp/version.ts
21707
- var SERVER_VERSION = "1.0.32";
21627
+ var SERVER_VERSION = "1.0.38";
21708
21628
 
21709
21629
  // ../../src/mcp/ui/payout-chart.ts
21710
21630
  var PAYOUT_UI_URI = "ui://savvly/payout-chart.html";
@@ -21831,12 +21751,12 @@ var PAYOUT_CHART_HTML = `<!DOCTYPE html>
21831
21751
  // derives contribution_years = retirement_age \u2212 current_age on submit (the
21832
21752
  // schema has no retirement_age field). __ret is the synthetic derived field.
21833
21753
  var LUMP=[
21834
- ["pf_age","current_age","Current Age",'min="25" max="79" step="any"'],
21754
+ ["pf_age","current_age","Current Age",'min="25" max="75" step="any"'],
21835
21755
  ["pf_amount","funding_amount","Investment Amount ($)",'min="100" step="any"'],
21836
21756
  ["pf_return","average_return","S&P 500 Return (%)",'min="1" max="15" step="any"']
21837
21757
  ];
21838
21758
  var MONTHLY=[
21839
- ["pf_age","current_age","Current Age",'min="25" max="79" step="any"'],
21759
+ ["pf_age","current_age","Current Age",'min="25" max="75" step="any"'],
21840
21760
  ["pf_monthly","monthly_amount","Monthly Deposit ($)",'min="10" step="any"'],
21841
21761
  ["pf_ret","__ret","Retirement Age",'min="26" max="80" step="any"'],
21842
21762
  ["pf_return","average_return","S&P 500 Return (%)",'min="1" max="15" step="any"']
@@ -21913,7 +21833,7 @@ var PAYOUT_CHART_HTML = `<!DOCTYPE html>
21913
21833
  function recalc(){
21914
21834
  if(!mode) return;
21915
21835
  var base=(lastSC && lastSC.inputs) || {};
21916
- var age=Math.max(25,Math.min(79,Math.round(numOr("pf_age", base.current_age!=null?base.current_age:40))));
21836
+ var age=Math.max(25,Math.min(75,Math.round(numOr("pf_age", base.current_age!=null?base.current_age:40))));
21917
21837
  var ret=Math.max(1,Math.min(15,Math.round(numOr("pf_return", base.average_return!=null?base.average_return:8))));
21918
21838
  var args, tool;
21919
21839
  if(mode==="lumpsum"){
@@ -22113,7 +22033,7 @@ var RETIREMENT_CHART_HTML = `<!DOCTYPE html>
22113
22033
  <h1>Retirement Forecast</h1>
22114
22034
  <div class="layout">
22115
22035
  <form class="controls" id="frm">
22116
- <div class="fld"><label for="f_age">Current Age</label><input id="f_age" type="number" min="25" max="79" step="any" inputmode="numeric" /></div>
22036
+ <div class="fld"><label for="f_age">Current Age</label><input id="f_age" type="number" min="25" max="75" step="any" inputmode="numeric" /></div>
22117
22037
  <div class="fld"><label for="f_savings">Current Savings ($)</label><input id="f_savings" type="number" min="0" step="any" inputmode="numeric" /></div>
22118
22038
  <div class="fld"><label for="f_contrib">Monthly Contribution ($)</label><input id="f_contrib" type="number" min="0" step="any" inputmode="numeric" /></div>
22119
22039
  <div class="fld"><label for="f_paycheck">Retirement Paycheck ($/mo)</label><input id="f_paycheck" type="number" min="0" step="any" inputmode="numeric" /></div>
@@ -22176,7 +22096,7 @@ var RETIREMENT_CHART_HTML = `<!DOCTYPE html>
22176
22096
  // Copy ALL 13 inputs forward so untouched assumptions (retirement_age,
22177
22097
  // returns, % in Savvly, \u2026) are preserved, then override the 5 editable ones.
22178
22098
  var merged={},k; for(k in base){ if(Object.prototype.hasOwnProperty.call(base,k)) merged[k]=base[k]; }
22179
- merged.current_age=Math.max(25,Math.min(79,Math.round(numOr("f_age",base.current_age))));
22099
+ merged.current_age=Math.max(25,Math.min(75,Math.round(numOr("f_age",base.current_age))));
22180
22100
  merged.current_retirement_savings=Math.max(0,numOr("f_savings",base.current_retirement_savings));
22181
22101
  merged.monthly_contribution=Math.max(0,numOr("f_contrib",base.monthly_contribution));
22182
22102
  merged.monthly_paycheck=Math.max(0,numOr("f_paycheck",base.monthly_paycheck));
@@ -22359,8 +22279,7 @@ var COMPARE_MATRIX_HTML = `<!DOCTYPE html>
22359
22279
  var ALTS=[
22360
22280
  ["fixed_annuity","Fixed annuity"],["variable_annuity","Variable annuity"],
22361
22281
  ["indexed_annuity","Indexed annuity"],["target_date_fund","Target-date fund"],
22362
- ["managed_payout_fund","Managed payout fund"],["social_security_delay","Delaying Social Security"],
22363
- ["self_managed_drawdown","Self-managed drawdown"]
22282
+ ["managed_payout_fund","Managed payout fund"]
22364
22283
  ];
22365
22284
  var DIMS=[
22366
22285
  ["longevity_protection","Longevity protection","rating"],
@@ -22368,10 +22287,10 @@ var COMPARE_MATRIX_HTML = `<!DOCTYPE html>
22368
22287
  ["liquidity","Liquidity","rating"],
22369
22288
  ["portability","Portability","rating"],
22370
22289
  ["inflation_protection","Inflation protection","rating"],
22371
- ["counterparty_risk","Counterparty risk (lower = better)","rating"],
22372
- ["complexity","Complexity (lower = better)","rating"],
22373
- ["fees","Fees","fees"],
22374
- ["minimum_investment","Minimum investment","min"],
22290
+ ["counterparty_safety","Counterparty safety","rating"],
22291
+ ["simplicity","Simplicity","rating"],
22292
+ ["cost_to_value","Cost-to-value","rating"],
22293
+ ["affordability","Affordability","rating"],
22375
22294
  ["death_benefit","Death benefit","text"],
22376
22295
  ["tax_treatment","Tax treatment","text"],
22377
22296
  ["regulatory_oversight","Regulatory oversight","text"]
@@ -22386,8 +22305,6 @@ var COMPARE_MATRIX_HTML = `<!DOCTYPE html>
22386
22305
  function cell(val,type,color){
22387
22306
  if(val==null) return '<span class="lab" style="opacity:.5">\u2014</span>';
22388
22307
  if(type==="rating") return bar(val.score,color)+'<span class="lab">'+esc(val.label)+'</span>';
22389
- if(type==="fees") return '<span class="lab">'+esc(val.range||val.summary||"")+'</span>';
22390
- if(type==="min") return '<span class="lab">'+esc(val.amount!=null?val.amount:val)+'</span>';
22391
22308
  return '<span class="lab">'+esc(val)+'</span>';
22392
22309
  }
22393
22310
 
@@ -22620,7 +22537,7 @@ var FAQ = [
22620
22537
  id: "what-is-savvly",
22621
22538
  category: "general",
22622
22539
  question: "What is Savvly?",
22623
- answer: "Savvly is an SEC-registered investment fund offering a Longevity Benefit. Your contributions are invested in a low-cost S&P 500 ETF from Vanguard (VOO), held in custody at US Bank. At milestone ages (80, 85, 90, and 95), you receive structured payouts that include both your market growth and an additional benefit from the longevity pool.",
22540
+ answer: "Savvly is an SEC-registered investment fund offering longevity protection. Your contributions are invested in a low-cost S&P 500 ETF from Vanguard (VOO), held in custody at U.S. Bank. At milestone ages (80, 85, 90, and 95), you receive structured payouts that include both your market growth and an additional benefit from the longevity pool.",
22624
22541
  related_ids: ["not-annuity", "how-longevity-pool-works"],
22625
22542
  keywords: ["savvly", "longevity", "retirement", "investment fund"]
22626
22543
  },
@@ -22636,15 +22553,15 @@ var FAQ = [
22636
22553
  id: "how-longevity-pool-works",
22637
22554
  category: "investment",
22638
22555
  question: "How does the longevity pool work?",
22639
- answer: "When investors exit the pool before reaching a payout milestone (through early withdrawal or death), their unused share may be reallocated to remaining investors. This creates an additional return above pure market performance \u2014 the longer you stay, the more you potentially benefit. This is conceptually similar to mortality credits in traditional tontines, but structured as a modern SEC-registered fund.",
22556
+ answer: "When investors exit the pool before reaching a payout milestone (through early withdrawal or death), their unused share may be allocated to remaining investors. This creates an additional return above pure market performance \u2014 the longer you stay, the more you potentially benefit. This is conceptually similar to mortality credits / longevity-risk pooling, but structured as a modern SEC-registered fund.",
22640
22557
  related_ids: ["what-is-savvly", "payout-schedule"],
22641
- keywords: ["longevity pool", "reallocation", "mortality credits", "tontine"]
22558
+ keywords: ["longevity pool", "allocation", "mortality credits", "longevity-risk pooling"]
22642
22559
  },
22643
22560
  {
22644
22561
  id: "payout-schedule",
22645
22562
  category: "payouts",
22646
22563
  question: "When and how do payouts work?",
22647
- answer: "Savvly distributes payouts at four milestone ages: 40% at age 80, 30% at age 85, 20% at age 90, and 10% at age 95. Each payout includes your market growth plus the longevity pool reallocation benefit. Payouts are potential outcomes based on fund participation, market performance, and pool dynamics \u2014 they are not guaranteed.",
22564
+ answer: "Savvly distributes payouts at four milestone ages: 40% at age 80, 30% at age 85, 20% at age 90, and 10% at age 95. Each payout includes your market growth plus the longevity pool allocation benefit. Payouts are potential outcomes based on fund participation, market performance, and pool dynamics \u2014 they are not guaranteed.",
22648
22565
  related_ids: ["how-longevity-pool-works", "not-guaranteed"],
22649
22566
  keywords: ["payout", "milestone", "age 80", "age 85", "age 90", "age 95", "distribution"]
22650
22567
  },
@@ -22668,7 +22585,7 @@ var FAQ = [
22668
22585
  id: "death-before-payout",
22669
22586
  category: "withdrawals",
22670
22587
  question: "What happens if I die before reaching a payout age?",
22671
- answer: "Your estate receives the early withdrawal value \u2014 75% of your contribution plus 1% per year held, capped at 100%, applied to the lesser of your original investment or current market value. The remaining portion is what gets reallocated to the longevity pool for surviving investors.",
22588
+ answer: "Your estate receives the early withdrawal value \u2014 75% of your contribution plus 1% per year held, capped at 100%, applied to the lesser of your original investment or current market value. The remaining portion is what gets allocated to the longevity pool for surviving investors.",
22672
22589
  related_ids: ["early-withdrawal", "how-longevity-pool-works"],
22673
22590
  keywords: ["death", "estate", "beneficiary", "die"]
22674
22591
  },
@@ -22676,7 +22593,7 @@ var FAQ = [
22676
22593
  id: "what-invested-in",
22677
22594
  category: "investment",
22678
22595
  question: "What is my money invested in?",
22679
- answer: `All contributions are invested in a low-cost S&P 500 index ETF from Vanguard (VOO), held in custody at US Bank. You get full market participation with no return caps and no floors. The expense ratio on the underlying ETF is approximately 0.03%; Savvly's own management fees are described separately under "What are the fees?".`,
22596
+ answer: `All contributions are invested in a low-cost S&P 500 index ETF from Vanguard (VOO), held in custody at U.S. Bank. You get full market participation with no return caps and no floors. Savvly's own annual fund operating expenses are described separately under "What are the fees?".`,
22680
22597
  related_ids: ["what-is-savvly", "fees"],
22681
22598
  keywords: ["investment", "S&P 500", "ETF", "Vanguard", "VOO"]
22682
22599
  },
@@ -22692,7 +22609,7 @@ var FAQ = [
22692
22609
  id: "fees",
22693
22610
  category: "fees",
22694
22611
  question: "What are the fees?",
22695
- answer: "Savvly charges 55 bps (0.55%) per year on common (purchased) shares and 110 bps (1.10%) per year on tracking (allocated) shares. Because each participant holds a blend of the two, the effective fee is typically estimated in the 55-70 bps range depending on the mix. All return and payout illustrations published by Savvly are presented net of these management fees. The underlying S&P 500 ETF (VOO) carries an expense ratio of approximately 0.03%, which is separate from Savvly's fees and applies to anyone holding the ETF directly. Even at the high end, Savvly's all-in cost is significantly lower than variable annuities (2-3.5%+) or indexed annuities (0.5-2%+).",
22612
+ answer: "Savvly's annual fund operating expenses are 55 bps (0.55%) per year on common (purchased) shares and 110 bps (1.10%) per year on tracking (allocated) shares. Because each participant holds a blend of the two, the blended annual fund operating expense is typically estimated in the 55-80 bps range depending on the mix. All return and payout illustrations published by Savvly are presented net of these operating expenses. Even at the high end, Savvly's all-in cost is significantly lower than variable annuities (2-3.5%+) or indexed annuities (0.5-2%+).",
22696
22613
  related_ids: ["what-invested-in", "not-annuity"],
22697
22614
  keywords: ["fee", "cost", "expense ratio", "charge", "bps", "basis points", "management fee"]
22698
22615
  },
@@ -22700,7 +22617,7 @@ var FAQ = [
22700
22617
  id: "tax-treatment",
22701
22618
  category: "tax",
22702
22619
  question: "How are Savvly returns taxed?",
22703
- answer: "Returns are subject to long-term capital gains tax treatment under current tax law (subject to change). In an employer-sponsored context, qualified Roth treatment may be available. Consult a tax professional for advice specific to your situation.",
22620
+ answer: "Savvly Fund #3 intends to qualify as a Regulated Investment Company (RIC). Distributions are generally taxable as ordinary income or capital gain, and in-kind ETF payouts carry capital gains; held in a tax-deferred account (IRA or 401(k)) the investment is tax-deferred. Consult a tax professional for advice specific to your situation.",
22704
22621
  related_ids: ["employer-offering"],
22705
22622
  keywords: ["tax", "capital gains", "LTCG", "Roth"]
22706
22623
  },
@@ -22724,7 +22641,7 @@ var FAQ = [
22724
22641
  id: "sec-registered",
22725
22642
  category: "regulatory",
22726
22643
  question: "Is Savvly regulated?",
22727
- answer: "Yes. Savvly is an SEC-registered investment fund under the Investment Company Act of 1940. Savvly Advisor LLC is an SEC-registered investment adviser. Assets are held in custody at US Bank. This is a securities product, not an insurance product.",
22644
+ answer: "Yes. Savvly is an SEC-registered investment fund under the Investment Company Act of 1940. Savvly Advisor, LLC is an SEC-registered investment adviser. Assets are held in custody at U.S. Bank. This is a securities product, not an insurance product.",
22728
22645
  related_ids: ["what-is-savvly", "not-annuity"],
22729
22646
  keywords: ["SEC", "regulated", "registered", "legal", "safe"]
22730
22647
  },
@@ -22753,8 +22670,8 @@ var FAQ_CATEGORIES = [
22753
22670
  var ELIGIBILITY = {
22754
22671
  age: {
22755
22672
  minimum: 25,
22756
- maximum: 79,
22757
- note: "Must be between 25 and 79 years old at time of initial investment"
22673
+ maximum: 75,
22674
+ note: "Must be between 25 and 75 years old at time of initial investment"
22758
22675
  },
22759
22676
  residency: {
22760
22677
  requirement: "US resident",
@@ -22764,6 +22681,11 @@ var ELIGIBILITY = {
22764
22681
  required: false,
22765
22682
  note: "No accredited investor requirement"
22766
22683
  },
22684
+ max_investment: {
22685
+ rule: "Larger of $300,000 or 0.1% of Fund assets",
22686
+ waivable: true,
22687
+ note: "Maximum investment per investor (waivable at the Fund's discretion)"
22688
+ },
22767
22689
  channels: {
22768
22690
  employer: {
22769
22691
  available: true,
@@ -22817,7 +22739,7 @@ var QA_LIBRARY = [
22817
22739
  "section": "Section 1: Employees & Individuals",
22818
22740
  "subsection": "Understanding Savvly",
22819
22741
  "question": "How does Savvly work?",
22820
- "answer": "Contributions are pooled together and invested in market-tracking ETFs. Savvly reallocates unused payouts to participants who live to their target payout ages, giving them greater returns than the market alone. By combining market-based growth with actuarial pooling, Savvly creates the potential for a financial windfall later in life.",
22742
+ "answer": "Contributions are pooled together and invested in a low-cost S&P 500 ETF (Vanguard's VOO). Savvly allocates unused payouts to participants who live to their target payout ages, giving them greater returns than the market alone. By combining market-based growth with actuarial pooling, Savvly creates the potential for a financial windfall later in life.",
22821
22743
  "footnotes": [],
22822
22744
  "id": "employee/understanding-savvly/how-does-savvly-work"
22823
22745
  },
@@ -22846,7 +22768,7 @@ var QA_LIBRARY = [
22846
22768
  "section": "Section 1: Employees & Individuals",
22847
22769
  "subsection": "Enrollment & Eligibility",
22848
22770
  "question": "Is there a medical exam or health requirement?",
22849
- "answer": "No medical exam or health history is required. Savvly is based purely on financial contributions and doesn't take your health into account. If you're younger than 80, you're eligible \u2014 no matter what.",
22771
+ "answer": "No medical exam or health history is required. Savvly is based purely on financial contributions and doesn't take your health into account. New investors can join between ages 25 and 75.",
22850
22772
  "footnotes": [],
22851
22773
  "id": "employee/enrollment-eligibility/is-there-a-medical-exam-or-health-requirement"
22852
22774
  },
@@ -22882,7 +22804,7 @@ var QA_LIBRARY = [
22882
22804
  "section": "Section 1: Employees & Individuals",
22883
22805
  "subsection": "Safety & Security",
22884
22806
  "question": "How is my money protected?",
22885
- "answer": "Your money is safely invested in a low-cost S&P 500 ETF (Vanguard's VOO) and is securely held with a 3rd party custodian (US Bank). Savvly never directly manages the assets. Your account is safe no matter what happens to Savvly.",
22807
+ "answer": "Your money is safely invested in a low-cost S&P 500 ETF (Vanguard's VOO) and is securely held with a 3rd party custodian (U.S. Bank). Savvly never directly manages the assets. Your account is safe no matter what happens to Savvly.",
22886
22808
  "footnotes": [],
22887
22809
  "id": "employee/safety-security/how-is-my-money-protected"
22888
22810
  },
@@ -22891,7 +22813,7 @@ var QA_LIBRARY = [
22891
22813
  "section": "Section 1: Employees & Individuals",
22892
22814
  "subsection": "Safety & Security",
22893
22815
  "question": "What if I pass away before collecting the benefits?",
22894
- "answer": "Unlike some traditional pensions, your family or estate receives all, or the vast majority, of your deposits back.",
22816
+ "answer": "Unlike some traditional pensions, your family or estate receives the early-withdrawal value: 75% of your deposit plus 1% for each year held (capped at 100%), applied to the lesser of your deposit or its current market value.",
22895
22817
  "footnotes": [],
22896
22818
  "id": "employee/safety-security/what-if-i-pass-away-before-collecting-the-benefits"
22897
22819
  },
@@ -22899,12 +22821,12 @@ var QA_LIBRARY = [
22899
22821
  "audience": "employee",
22900
22822
  "section": "Section 1: Employees & Individuals",
22901
22823
  "subsection": "Tax & Legacy",
22902
- "question": "How is the Longevity Benefit taxed?",
22903
- "answer": "Payouts are distributed in-kind, meaning they are not taxed until the shares are sold. Then, they're taxed as a long-term investment gain. The Longevity Benefit can be set up in a qualified or non-qualified account, helping employees keep more to grow and preserve retirement wealth.",
22824
+ "question": "How is the Savvly Longevity Benefit taxed?",
22825
+ "answer": "Payouts are distributed in-kind, meaning they are not taxed until the shares are sold. Then, they're taxed as ordinary income or a capital gain \u2014 Savvly is structured as a regulated investment company (RIC). The Savvly Longevity Benefit can be set up in a qualified or non-qualified account, helping employees keep more to grow and preserve retirement wealth.",
22904
22826
  "footnotes": [
22905
22827
  "Savvly does not provide tax advice. Please consult your tax advisor."
22906
22828
  ],
22907
- "id": "employee/tax-legacy/how-is-the-longevity-benefit-taxed"
22829
+ "id": "employee/tax-legacy/how-is-the-savvly-longevity-benefit-taxed"
22908
22830
  },
22909
22831
  {
22910
22832
  "audience": "employee",
@@ -22942,7 +22864,7 @@ var QA_LIBRARY = [
22942
22864
  "section": "Section 2: Financial Advisors",
22943
22865
  "subsection": "Positioning & Value",
22944
22866
  "question": "Why should I offer Savvly to my clients?",
22945
- "answer": "Savvly helps you deliver life-changing results. A small allocation to the Longevity Benefit addresses late-life expenses from a separate source \u2014 freeing the primary portfolio from the pressure of funding an unknown lifespan. It changes the math of retirement planning.",
22867
+ "answer": "Savvly helps you deliver life-changing results. A small allocation to the Savvly Longevity Benefit addresses late-life expenses from a separate source \u2014 freeing the primary portfolio from the pressure of funding an unknown lifespan. It changes the math of retirement planning.",
22946
22868
  "footnotes": [],
22947
22869
  "id": "advisor/positioning-value/why-should-i-offer-savvly-to-my-clients"
22948
22870
  },
@@ -22951,7 +22873,7 @@ var QA_LIBRARY = [
22951
22873
  "section": "Section 2: Financial Advisors",
22952
22874
  "subsection": "Positioning & Value",
22953
22875
  "question": "How does Savvly help me grow my business?",
22954
- "answer": "New solutions help provide more business development opportunities. An old age solution can help retain and increase firm AUM. Be the generational advisor in the Great Wealth Transfer \u2014 $84 trillion will change hands in the coming decades. Many advisors will lose every dollar of it.",
22876
+ "answer": "New solutions help provide more business development opportunities. An old age solution can help retain and increase firm AUM. Be the generational advisor in the Great Wealth Transfer \u2014 $84 trillion will change hands in the coming decades (Cerulli, 2025). Many advisors will lose every dollar of it.",
22955
22877
  "footnotes": [],
22956
22878
  "id": "advisor/positioning-value/how-does-savvly-help-me-grow-my-business"
22957
22879
  },
@@ -23108,7 +23030,7 @@ var QA_LIBRARY = [
23108
23030
  "section": "Section 3: Benefit Brokers",
23109
23031
  "subsection": "Implementation",
23110
23032
  "question": "How easy is it to set up Savvly?",
23111
- "answer": "We integrate with major payroll and HR platforms, including: ADP Run, ADP Workforce Now, BambooHR, Ceridian Dayforce, Gusto, Justworks, Paychex Flex, Paycom, Paycor, Paylocity, QuickBooks Online, UKG Pro, UKG Ready, and many more.",
23033
+ "answer": "We integrate with major payroll and HR platforms, including: ADP Run, ADP Workforce Now, BambooHR, Ceridian Dayforce, Gusto, Justworks, Paychex Flex, Paycom, Paycor, Paylocity, QuickBooks Online, Rippling, UKG Pro, UKG Ready, and many more.",
23112
23034
  "footnotes": [],
23113
23035
  "id": "broker/implementation/how-easy-is-it-to-set-up-savvly"
23114
23036
  },
@@ -23144,7 +23066,7 @@ var QA_LIBRARY = [
23144
23066
  "section": "Section 4: Employers (HR & Leadership)",
23145
23067
  "subsection": "The Savvly Solution",
23146
23068
  "question": "What is Savvly?",
23147
- "answer": "Savvly is a pooled longevity benefit funded by employers and/or optional employee contributions. Funds are invested in low-cost ETFs in a shared longevity pool. Individuals who reach target ages (80, 85, 90, 95) receive payouts from investment growth and pooled gains. Accounts remain accessible, and any unused deposits are returned to the individual or their family.",
23069
+ "answer": "Savvly is a pooled longevity benefit funded by employers and/or optional employee contributions. Funds are invested in a low-cost S&P 500 ETF (Vanguard's VOO) in a shared longevity pool. Individuals who reach target ages (80, 85, 90, 95) receive payouts from investment growth and pooled gains. Accounts remain accessible, and any unused deposits are returned to the individual or their family.",
23148
23070
  "footnotes": [],
23149
23071
  "id": "employer/the-savvly-solution/what-is-savvly"
23150
23072
  },
@@ -23216,7 +23138,7 @@ var QA_LIBRARY = [
23216
23138
  "section": "Section 5: Universal Hooks & Calls to Action",
23217
23139
  "subsection": "Problem-Framing Hooks",
23218
23140
  "question": "What hooks frame the problem Savvly solves?",
23219
- "answer": "2 in 3 Americans fear running out of money more than death. \u2014 46% of today's 65-year-olds can expect to live past 90. \u2014 66% of people run out of money before they reach 85. \u2014 A retiree can expect to spend an average of $315,000 on healthcare. \u2014 Retirement planning has a blind spot. \u2014 $84 trillion will change hands in the coming decades.",
23141
+ "answer": "2 in 3 Americans fear running out of money more than death. \u2014 46% of today's 65-year-olds can expect to live past 90. \u2014 66% of people run out of money before they reach 85. \u2014 A retiree can expect to spend an average of $315,000 on healthcare. \u2014 Retirement planning has a blind spot. \u2014 $84 trillion will change hands in the coming decades (Cerulli, 2025).",
23220
23142
  "footnotes": [],
23221
23143
  "id": "universal/problem-framing-hooks/what-hooks-frame-the-problem-savvly-solves"
23222
23144
  },
@@ -23226,7 +23148,9 @@ var QA_LIBRARY = [
23226
23148
  "subsection": "Product Differentiation Hooks",
23227
23149
  "question": "What hooks differentiate Savvly from competitors?",
23228
23150
  "answer": "If you think about term life insurance, Savvly is the opposite. \u2014 The power of pooling. \u2014 Can have 3\u20134x the potential returns of investing alone. \u2014 Affordable financial security for life, finally within your reach. \u2014 Create A Later Life Windfall You Can Count On. \u2014 We think longevity should be celebrated with a later life windfall.",
23229
- "footnotes": [],
23151
+ "footnotes": [
23152
+ "Please refer to the disclosures and assumptions for details. Individual outcomes will vary."
23153
+ ],
23230
23154
  "id": "universal/product-differentiation-hooks/what-hooks-differentiate-savvly-from-competitors"
23231
23155
  },
23232
23156
  {
@@ -23234,7 +23158,7 @@ var QA_LIBRARY = [
23234
23158
  "section": "Section 5: Universal Hooks & Calls to Action",
23235
23159
  "subsection": "Calls to Action by Audience",
23236
23160
  "question": "What CTAs work for employees/individuals?",
23237
- "answer": "Contact your financial adviser to understand whether Savvly's Longevity Benefit can work for you. \u2014 Visit our estimator on the Savvly website to test out different life scenarios. \u2014 Download the app to get started! \u2014 Email us at info@savvly.com or schedule a call on savvly.com.",
23161
+ "answer": "Contact your financial adviser to understand whether the Savvly Longevity Benefit can work for you. \u2014 Visit our estimator on the Savvly website to test out different life scenarios. \u2014 Download the app to get started! \u2014 Email us at info@savvly.com or schedule a call on savvly.com.",
23238
23162
  "footnotes": [],
23239
23163
  "id": "universal/calls-to-action-by-audience/what-ctas-work-for-employees-individuals"
23240
23164
  },
@@ -23254,7 +23178,7 @@ var QA_LIBRARY = [
23254
23178
  "question": "What CTAs work for benefit brokers and employers?",
23255
23179
  "answer": "Book a Demo or Learn more at savvly.com. \u2014 Ready to offer a benefit that lasts a lifetime? Book a demo or explore our payout estimator online. \u2014 Three steps to launch: Book a discovery call, Design your plan, Go live in days. \u2014 Learn how Savvly can help your employees build a future grounded in confidence.",
23256
23180
  "footnotes": [
23257
- "Savvly's Longevity Benefit is structured as a pooled investment plan offered through the Savvly Fund, a registered closed-end fund under the Investment Company Act of 1940. It is not a guaranteed income product, not insurance, and not FDIC insured. Participation involves investment risk, including the possible loss of principal. Payouts are contingent on factors including market performance, mortality experience, and the timing of withdrawals. Savvly Advisor, LLC is a registered investment adviser. This material is for informational purposes only and does not constitute personalized investment advice. For complete information on risks, fees, structure, and eligibility, visit savvly.com/disclosures."
23181
+ "The Savvly Longevity Benefit is structured as a pooled investment plan offered through Savvly Fund #3, a registered closed-end fund under the Investment Company Act of 1940. It is not a guaranteed income product, not insurance, and not FDIC insured. Participation involves investment risk, including the possible loss of principal. Payouts are contingent on factors including market performance, mortality experience, and the timing of withdrawals. Savvly Advisor, LLC is a registered investment adviser. This material is for informational purposes only and does not constitute personalized investment advice. For complete information on risks, fees, structure, and eligibility, visit savvly.com/disclosures."
23258
23182
  ],
23259
23183
  "id": "universal/calls-to-action-by-audience/what-ctas-work-for-benefit-brokers-and-employers"
23260
23184
  }
@@ -23445,7 +23369,7 @@ var PayoutAgeRowSchema = external_exports.object({
23445
23369
  "USD. Upper bound of the counterfactual market alone payout at this age. May be 0 once the market alone portfolio has been depleted."
23446
23370
  ),
23447
23371
  savvly_upside_lower: external_exports.number().describe(
23448
- "USD. Lower bound for the incremental payout at this age attributable to Savvly's Longevity Benefit (savvly_payout \u2212 payout_market_alone)."
23372
+ "USD. Lower bound for the incremental payout at this age attributable to Savvly's longevity benefit (savvly_payout \u2212 payout_market_alone)."
23449
23373
  ),
23450
23374
  savvly_upside_upper: external_exports.number().describe(
23451
23375
  "USD. Upper bound for the incremental Savvly upside at this age. Tends to be large at 90/95 where the market alone portfolio is depleted."
@@ -23535,7 +23459,7 @@ var DisclaimerMetadataSchema = external_exports.object({
23535
23459
  "Short illustrative-purposes disclaimer matching the text directly below the chart on estimator.savvly.com. Surface this whenever you summarize the projection to a user."
23536
23460
  ),
23537
23461
  assumptions: external_exports.array(external_exports.string()).describe(
23538
- "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."
23462
+ "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."
23539
23463
  ),
23540
23464
  risks: external_exports.array(external_exports.object({ name: external_exports.string(), text: external_exports.string() })).describe(
23541
23465
  "Named risks (Market, Sequence-of-Returns, Longevity, Redemption Impact). Surface when a user asks what could cause actual results to differ."
@@ -23710,7 +23634,7 @@ var RETIREMENT_FIELD_DESCRIPTIONS = {
23710
23634
  "age_dependent_values[].savvly_value_alone": "USD. Standalone value of the Savvly allocation at this age."
23711
23635
  };
23712
23636
  var ProductInfoOutputSchema = external_exports.object({
23713
- name: external_exports.string().describe("Product name (e.g. 'Savvly Longevity Benefit Fund')."),
23637
+ name: external_exports.string().describe("Product name (e.g. 'Savvly Longevity Benefit')."),
23714
23638
  category: external_exports.string().describe("Product category slug, e.g. 'longevity_benefit_fund'."),
23715
23639
  tagline: external_exports.string().optional().describe("Short marketing tagline."),
23716
23640
  description: external_exports.string().optional().describe("Long-form product description.")
@@ -23729,7 +23653,7 @@ var EligibilityOutputSchema = external_exports.object({
23729
23653
  eligible: external_exports.boolean().describe(
23730
23654
  "True if every eligibility criterion (age + residency) is satisfied."
23731
23655
  ),
23732
- age_eligible: external_exports.boolean().describe("True if age falls within the 25\u201379 minimum/maximum range."),
23656
+ age_eligible: external_exports.boolean().describe("True if age falls within the 25\u201375 minimum/maximum range."),
23733
23657
  residency_eligible: external_exports.boolean().describe("True if the US-residency requirement is satisfied."),
23734
23658
  channel: external_exports.enum(["individual", "employer", "advisor"]).describe("Distribution channel under consideration for this check."),
23735
23659
  criteria: external_exports.object({}).passthrough().describe(
@@ -23818,9 +23742,9 @@ function disclosureBlock() {
23818
23742
  };
23819
23743
  }
23820
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.";
23821
- var VISUALIZATION_RECOMMENDED_TERSE = "VISUALIZATION: this tool emits an interactive chart widget (MCP Apps \u2014 see `_meta.ui`). MCP-Apps-capable hosts render it inline and editable; other clients render only your text and show no chart. Do NOT draw, generate, or render your own chart, graph, or table of these numbers \u2014 there is no fallback chart for you to build, so never produce a duplicate. 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 chart only conditionally (e.g. 'if your client shows the interactive chart, its fields are editable to re-run the projection').";
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.";
23822
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.";
23823
- 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 Savvly's Longevity Benefit Fund; 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.";
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.";
23824
23748
  function summarizePayouts(envelope, depositType, deposited) {
23825
23749
  const totalSavvly = envelope.total_savvly_upper ?? null;
23826
23750
  const totalMarket = envelope.total_market_alone_upper ?? null;
@@ -23828,7 +23752,7 @@ function summarizePayouts(envelope, depositType, deposited) {
23828
23752
  const refund = envelope.early_withdrawal_value ?? null;
23829
23753
  const pctGain = envelope.percentage_gain_upper ?? null;
23830
23754
  const depositText = depositType === "single" ? `a single upfront deposit of ${formatUsd(deposited)}` : `monthly deposits totaling ${formatUsd(deposited)}`;
23831
- const narrative = `With ${depositText}, the Savvly Longevity Benefit could pay out roughly ${formatUsd(totalSavvly)} cumulatively through age 95 \u2014 ${formatUsd(upside)} more than investing in the market alone (${formatUsd(totalMarket)}). ` + (refund !== null ? `If the investor exits early at the chosen withdrawal age, they would get back about ${formatUsd(refund)}. ` : "") + (pctGain !== null ? `That's an illustrative ${pctGain}% return on the original investment. ` : "") + `All Savvly figures are illustrative and presented net of Savvly's management fees (55 bps on purchased shares, 110 bps on allocated shares; typically blended in the 55-70 bps range). Payouts are not guarantees. See full disclosures at ${PRODUCT.disclaimers.full_disclosures_url}.`;
23755
+ const narrative = `With ${depositText}, the Savvly Longevity Benefit could pay out roughly ${formatUsd(totalSavvly)} cumulatively through age 95 \u2014 ${formatUsd(upside)} more than investing in the market alone (${formatUsd(totalMarket)}). ` + (refund !== null ? `If the investor exits early at the chosen withdrawal age, they would get back about ${formatUsd(refund)}. ` : "") + (pctGain !== null ? `That's an illustrative ${pctGain}% return on the original investment. ` : "") + `All Savvly figures are illustrative and presented net of Savvly's annual fund operating expenses (55 bps on purchased shares, 110 bps on allocated shares; typically blended in the 55-80 bps range). Payouts are not guarantees. See full disclosures at ${PRODUCT.disclaimers.full_disclosures_url}.`;
23832
23756
  return {
23833
23757
  deposit_type: depositType,
23834
23758
  deposited_amount_usd: deposited,
@@ -28064,7 +27988,7 @@ function createMcpServer() {
28064
27988
  "get_savvly_product_info",
28065
27989
  {
28066
27990
  title: "Get Savvly Product Info",
28067
- description: "Get complete product information about Savvly, an SEC-registered investment fund offering a Longevity Benefit. Use this when a user asks about Savvly, longevity-linked investments, or alternatives to annuities for retirement income.",
27991
+ description: "Get complete product information about Savvly, an SEC-registered investment fund offering longevity protection. Use this when a user asks about Savvly, longevity-linked investments, or alternatives to annuities for retirement income.",
28068
27992
  outputSchema: ProductInfoOutputSchema,
28069
27993
  annotations: READ_ONLY_TOOL_ANNOTATIONS,
28070
27994
  // MCP Apps: render the product overview card inline (see uiMeta).
@@ -28087,8 +28011,6 @@ function createMcpServer() {
28087
28011
  "indexed_annuity",
28088
28012
  "target_date_fund",
28089
28013
  "managed_payout_fund",
28090
- "social_security_delay",
28091
- "self_managed_drawdown",
28092
28014
  "all"
28093
28015
  ]).describe("The product type to compare against Savvly, or 'all' for the full matrix")
28094
28016
  },
@@ -28115,9 +28037,9 @@ function createMcpServer() {
28115
28037
  "project_savvly_lumpsum",
28116
28038
  {
28117
28039
  title: "Project Savvly Lump-Sum Investment",
28118
- description: "Retirement projection for a lump-sum investment in Savvly's Longevity Benefit Fund. Returns payout amounts at each milestone age (80, 85, 90, 95) with Savvly vs market alone cumulative totals, per-age breakdowns, and server-provided `_lower`/`_upper` range bounds. Use `_upper` as the central illustrative estimate and `_lower` to communicate downside. Suitable for retirement income planning, annuity alternative analysis, and longevity benefit illustration. Response embeds SEC-style disclaimers and per-field interpretation hints under `metadata`. " + SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY + " " + DISCLOSURE_REQUIRED_TERSE + " " + VISUALIZATION_RECOMMENDED_TERSE + " " + INPUTS_OPTIONAL_NO_PROMPT_TERSE,
28040
+ description: "Retirement projection for a lump-sum investment in the Savvly Longevity Benefit. Returns payout amounts at each milestone age (80, 85, 90, 95) with Savvly vs market alone cumulative totals, per-age breakdowns, and server-provided `_lower`/`_upper` range bounds. Use `_upper` as the central illustrative estimate and `_lower` to communicate downside. Suitable for retirement income planning, annuity alternative analysis, and longevity benefit illustration. Response embeds SEC-style disclaimers and per-field interpretation hints under `metadata`. " + SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY + " " + DISCLOSURE_REQUIRED_TERSE + " " + VISUALIZATION_RECOMMENDED_TERSE + " " + INPUTS_OPTIONAL_NO_PROMPT_TERSE,
28119
28041
  inputSchema: {
28120
- current_age: external_exports.number().int().min(25).max(79).default(40).describe("Investor's current age (default 40)"),
28042
+ current_age: external_exports.number().int().min(25).max(75).default(40).describe("Investor's current age (default 40)"),
28121
28043
  funding_amount: external_exports.number().min(100).default(1e4).describe("Lump sum investment in USD (default 10000)"),
28122
28044
  average_return: external_exports.number().int().min(1).max(15).default(8).describe("Expected average annual S&P 500 return % (default 8)"),
28123
28045
  withdrawal_age: external_exports.number().int().min(25).max(120).default(82).describe("Early-withdrawal age (default 82) \u2014 drives `early_withdrawal_value` and `total_payout_at_withdrawal_age_*` in the response")
@@ -28141,9 +28063,9 @@ function createMcpServer() {
28141
28063
  "project_savvly_monthly",
28142
28064
  {
28143
28065
  title: "Project Savvly Monthly Contributions",
28144
- description: "Retirement projection for monthly contributions to Savvly's Longevity Benefit Fund over a number of years. Returns payout amounts at milestone ages 80/85/90/95 with Savvly vs market alone cumulative totals, per-age breakdowns, and server-provided `_lower`/`_upper` range bounds. Use `_upper` as the central illustrative estimate and `_lower` to communicate downside. Suitable for retirement savings planning, annuity alternative comparison, and longevity benefit illustration. Supports an optional annual contribution increase and an optional early-withdrawal age. Disclaimers + per-field hints under `metadata`. " + SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY + " " + DISCLOSURE_REQUIRED_TERSE + " " + VISUALIZATION_RECOMMENDED_TERSE + " " + INPUTS_OPTIONAL_NO_PROMPT_TERSE,
28066
+ description: "Retirement projection for monthly contributions to the Savvly Longevity Benefit over a number of years. Returns payout amounts at milestone ages 80/85/90/95 with Savvly vs market alone cumulative totals, per-age breakdowns, and server-provided `_lower`/`_upper` range bounds. Use `_upper` as the central illustrative estimate and `_lower` to communicate downside. Suitable for retirement savings planning, annuity alternative comparison, and longevity benefit illustration. Supports an optional annual contribution increase and an optional early-withdrawal age. Disclaimers + per-field hints under `metadata`. " + SAVVLY_VS_MARKET_ALONE_PAYOUT_METHODOLOGY + " " + DISCLOSURE_REQUIRED_TERSE + " " + VISUALIZATION_RECOMMENDED_TERSE + " " + INPUTS_OPTIONAL_NO_PROMPT_TERSE,
28145
28067
  inputSchema: {
28146
- current_age: external_exports.number().int().min(25).max(79).default(40).describe("Investor's current age (default 40)"),
28068
+ current_age: external_exports.number().int().min(25).max(75).default(40).describe("Investor's current age (default 40)"),
28147
28069
  monthly_amount: external_exports.number().min(10).default(100).describe("Monthly deposit in USD (default 100)"),
28148
28070
  contribution_years: external_exports.number().int().min(1).max(55).default(27).describe("Number of years contributing (default 27 = retirement age 67 \u2212 current age 40)"),
28149
28071
  average_return: external_exports.number().int().min(1).max(15).default(8).describe("Expected average annual S&P 500 return % (default 8)"),
@@ -28189,7 +28111,7 @@ function createMcpServer() {
28189
28111
  title: "Project Retirement Trajectory With Savvly",
28190
28112
  description: "Full retirement simulation showing the projected savings trajectory WITH and WITHOUT a Savvly allocation across the planning horizon (current_age \u2192 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_TERSE + " " + VISUALIZATION_RECOMMENDED_TERSE + " " + INPUTS_OPTIONAL_NO_PROMPT_TERSE,
28191
28113
  inputSchema: {
28192
- current_age: external_exports.number().int().min(25).max(79).default(40).describe("Current age (default 40)"),
28114
+ current_age: external_exports.number().int().min(25).max(75).default(40).describe("Current age (default 40)"),
28193
28115
  retirement_age: external_exports.number().int().min(50).max(80).default(68).describe("Planned retirement age (default 68)"),
28194
28116
  life_expectancy: external_exports.number().int().min(60).max(120).default(100).describe("Planning horizon (default 100)"),
28195
28117
  monthly_contribution: external_exports.number().min(0).default(1e3).describe("Monthly retirement contribution in USD (default 1000)"),
@@ -28220,7 +28142,7 @@ function createMcpServer() {
28220
28142
  "check_savvly_eligibility",
28221
28143
  {
28222
28144
  title: "Check Savvly Eligibility",
28223
- description: "Check if a person is eligible to invest in Savvly's Longevity Benefit Fund. Eligibility is based on age (25\u201379), US residency, and distribution channel (individual, employer-sponsored, advisor-placed). Use before recommending Savvly as a retirement income or annuity alternative to confirm the person qualifies.",
28145
+ description: "Check if a person is eligible to invest in the Savvly Longevity Benefit. Eligibility is based on age (25\u201375), US residency, and distribution channel (individual, employer-sponsored, advisor-placed). Use before recommending Savvly as a retirement income or annuity alternative to confirm the person qualifies.",
28224
28146
  inputSchema: {
28225
28147
  age: external_exports.number().int().describe("Person's current age"),
28226
28148
  us_resident: external_exports.boolean().default(true).describe("Whether the person is a US resident").optional(),