accueil / serveurs / Finance & Paiement / ai.senaro/personal-finance
ai.senaro/personal-finance
serveur MCP (Model Context Protocol) · senaro 1.33.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que ai.senaro/personal-finance est sûr ?
Au dernier audit MCP Hub, le serveur MCP « ai.senaro/personal-finance » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 18 outils
- analyze_cash_advance≈ 868 tokens
Calculation, not advice. Verify with a professional before acting. Deep analysis of a single card's cash advance showing payment allocation, CA interest cost, CA payoff months, and whether the CA is growing. Pick this over `calculate_cc_payoff` when one card's cash advance is the question: it shows how the CARD Act above-minimum allocation rule, 15 U.S.C. §1666c(b)(1), sends payment above the minimum to the highest-APR segment first, which is the cash advance whenever its rate is the higher one. Pick `calculate_cc_payoff` for a payoff timeline across several cards or a windfall schedule. The response includes `chart_hints` with rendering directives any client can use.
Paramètres, retour & exemple (9)
Paramètreschart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.minimum_payment· number|null · optionnel
Issuer-stated minimum payment. Decimal, at least 0, at most 2 decimal places. Optional; defaults to auto-calculate when omitted. When supplied, this DOES bind: the per-month mandatory payment is min(max(the representative formula's minimum recomputed from the balance, minimum_payment), the remaining balance, total_monthly_payment). This differs from calculate_cc_payoff's default dynamic path, where the identically-named minimum_payment is parsed and validated but never applied unless fixed_payments = true: the two tools do not share behavior for this parameter, only its name.purchase_apr_pct· number · requis
Purchase APR as a percentage, e.g. 24.99 not 0.2499. Decimal from 0 to 100. REQUIRED, no default.purchase_balance· number · requis
Current balance carrying the purchase APR. Decimal, at least 0. REQUIRED, no default.cash_advance_apr_pct· number · requis
Cash advance APR as a percentage. Decimal, greater than 0, at most 100. This tool has no promo input, so 0 is rejected: nothing would say when a 0% rate ends. For a promotional cash advance, use calculate_cc_payoff with a cash_advance segment carrying promo_expires_month and revert_apr_pct. REQUIRED, no default.cash_advance_balance· number · requis
Current balance carrying the cash advance APR. Decimal, greater than 0. REQUIRED, no default.cash_advance_fee_min· number|null · optionnel
Minimum dollar cash advance fee, e.g. 10 for $10. Decimal, at least 0. Optional; defaults to 0 when omitted.cash_advance_fee_pct· number|null · optionnel
Cash advance fee as a percentage of the advance, e.g. 5 for 5%. Decimal, at least 0 and at most 100. Optional; defaults to 0 when omitted.total_monthly_payment· number · requis
Total payment applied across both balances this month. Decimal, greater than 0, at most 2 decimal places. REQUIRED, no default.
Exemple d'appel{"name": "analyze_cash_advance", "arguments": {"purchase_apr_pct": 1, "purchase_balance": 1, "cash_advance_apr_pct": 1, "cash_advance_balance": 1, "total_monthly_payment": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - analyze_pmi_removal≈ 1148 tokens
Calculation, not advice. Verify with a professional before acting. Compute every standard PMI-removal pathway: - HPA automatic at 78% LTV - HPA borrower-requested at 80% LTV - optional re-appraisal at a simplified 75% of current market value; the actual Fannie Mae ceiling is seasoning- and property-type-dependent, 75% for a one-unit home seasoned two to five years, 80% for five-plus, and 70% for investment and two- to four-unit properties Also returns current monthly PMI cost, total PMI dollars between now and automatic removal, and the effective annual return of paying the gap-to-80% (of the original value) as a lump sum today. Supplying original_loan_term_months and loan_age_months also applies the 12 U.S.C. 4902(c) statutory final-termination midpoint, which bounds automatic removal at the earlier of the 78% schedule and that midpoint where HPA applies and the borrower is current. Pairs with `calculate_refi_breakeven` for a refinance's rate-and-term break-even, and with `compare_mortgage_terms` when choosing between purchase mortgages. Scope: conventional mortgages only; FHA loans use MIP (Mortgage Insurance Premium) with different rules. This tool does not model MIP.
Paramètres, retour & exemple (11)
Paramètreschart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.annual_rate_pct· number · requis
Mortgage APR as a percentage. Decimal from 0 to 20. REQUIRED, no default.current_balance· number · requis
Today's loan balance. Decimal, greater than 0. REQUIRED, no default.loan_age_months· integer|null · optionnel
Months elapsed since origination. Integer from 0 to 480. Optional. Cannot exceed original_loan_term_months when both are supplied. Supplying either one without the other is rejected; both are required together. See original_loan_term_months.monthly_payment· number · requis
Current P&I monthly payment, excluding tax, insurance, and PMI. Decimal, greater than 0. REQUIRED, no default.current_home_value· number|null · optionnel
Current market value of the home. Decimal, greater than 0. Optional. When supplied AND greater than the HPA original value (the lesser of purchase price and any closing appraisal), the response also computes the re-appraisal pathway (some lenders allow PMI removal based on current market value with a fresh appraisal).annual_pmi_rate_pct· number|null · optionnel
Annual PMI as a percentage of the current loan balance. Decimal from 0 to 5. Optional; omitting it uses the cited 0.5 default. Typical conventional-loan PMI ranges from 0.3% to 1.5%.extra_monthly_payment· number|null · optionnel
Extra principal paid each month beyond the regular payment. Decimal, at least 0. Optional; defaults to 0 when omitted.original_purchase_price· number · requis
What you paid for the home (the purchase-price side of the HPA basis; when a closing appraisal is lower, see original_appraised_value). Decimal, greater than 0. REQUIRED, no default.original_appraised_value· number|null · optionnel
The home's appraised value at closing. Decimal, greater than 0. Optional. HPA sets the PMI trigger basis to the LESSER of purchase price and this appraisal (12 U.S.C. 4901); supply it when your closing appraisal came in below the purchase price.original_loan_term_months· integer|null · optionnel
The loan's original term in months. Integer from 1 to 480. Optional. Supplied together with loan_age_months, this computes the 12 U.S.C. 4902(c) statutory final-termination midpoint (12 U.S.C. 4901(7)) and bounds automatic_removal at the earlier of it and the 78% schedule date, where HPA applies and the borrower is current. Supplying either one without the other is rejected; both are required together.
Exemple d'appel{"name": "analyze_pmi_removal", "arguments": {"annual_rate_pct": 1, "current_balance": 1, "monthly_payment": 1, "original_purchase_price": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_cc_payoff≈ 5465 tokens
Calculation, not advice. Verify with a professional before acting. Calculate credit card payoff timeline with month-by-month amortization. Pick this for a payoff timeline across credit cards under one strategy, including windfalls or fixed payments; pick `compare_payoff_strategies` to compare avalanche against snowball, `calculate_loan_payoff` for a single installment loan, and `analyze_cash_advance` when one card's cash advance is the question. Supports dual APR segments (purchase + cash advance), two strategies (avalanche, snowball), fixed/dynamic payment modes, and an optional schedule of one-time windfalls (tax refund, bonus, inheritance) applied at specific months. Returns: - debt-free date, total interest, per-card payoff order - first_month_interest_ratio_frac (the first month's interest/payment fraction) and lifetime_interest_ratio_frac (whole-projection total_interest/total_paid fraction) - domain warnings emitted as warnings[].type (DEATH_SPIRAL, CA_TRAP, MIN_PAYMENT_TRAP, DAY_ZERO_COST, DEBT_GROWING, PROMO_CLIFF, PREDATORY_RATE, SPEND_EXCEEDS_PAYDOWN, PLAN_TERM_ELAPSED_WITH_BALANCE, NO_PAYOFF_WITHIN_PROJECTION), and, separately, validation disclosures emitted as warnings[].code (e.g. MINIMUM_PAYMENT_NOT_BINDING on the default dynamic-budget path, MINIMUM_PAYMENT_NOT_BINDING_IN_BASELINE when fixed_payments = true; these two shapes coexist in the same warnings[] array but are distinguishable by which keys each entry carries) - when a plan exists (extra_monthly_payment > 0, windfalls present, or fixed_payments = true), a min_payments_only baseline block with interest_saved_vs_min_payments and months_saved_vs_min_payments quantifying the interest and time difference versus paying minimums only; when windfalls are also present the response additionally gains a baseline vs with_windfalls savings block The response echoes strategy (canonical lowercase 'avalanche' | 'snowball', the strategy the plan was actually simulated under) at the top level. The response includes `chart_hints` with rendering directives any client can use. Top-level `entered_starting_balance` echoes the caller's supplied balances by segment type (`total`, `purchase`, `cash_advance`, `balance_transfer`, `promotional`, `installment_plan`), before any fee, recurring spend, or interest posts; `total` is the sum of the other five. Top-level `total_purchase_segment_fees_paid` reports the portion of card fees (plan_fees_monthly plus annual_fee accruals) charged to the purchase segment across the projection, also present on every monthly_totals[] and analysis.buckets[] row. These month counts are each a {status, value, explanation} object rather than a bare month count: months_to_payoff, card_payoff_order[].payoff_month, min_payments_only.months, minimums_only_baseline.months, and, when windfalls are supplied, baseline.months and with_windfalls.months. status is "defined" with an integer value when that plan reaches a zero balance, and "none" with value null when it does not, in which case explanation says why.
Paramètres, retour & exemple (11)
Paramètrescards· array · requis
Credit cards to pay off, 1 to 20. Required: omitting the field answers contract_error MISSING_REQUIRED_FIELD, while an explicit JSON null answers parse_error ("cards is required and must be an array."); the two are not the same rejection. Every card may carry segments[]. Max 100 segments total across all cards in the request. Per-card, per-type caps: 1 purchase, 1 cash_advance, 5 balance_transfer, 1 promotional, 10 installment_plan.output· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. summary returns a compact response with a data_preview block; inline returns the full payload.strategy· string|null · optionnel · avalanche | snowball | None
Payoff order: 'avalanche' pays the highest APR first, 'snowball' the smallest balance first. Optional; defaults to 'avalanche' when omitted. Matched case-insensitively, and the response echoes the canonical lowercase form actually simulated.windfalls· array|null · optionnel
One-time principal payments, at most 12, e.g. a tax refund or a year-end bonus. Optional; a JSON null is treated as omitted. When non-empty the response gains baseline, with_windfalls, months_saved_vs_baseline, interest_saved_vs_baseline, windfalls_applied[] and windfalls_unused[]; an empty array returns the same shape as omitting it.chart_title· string|null · optionnel
Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters.per_segment· boolean|null · optionnel
Whether each schedule row carries its per-segment breakdown. Optional; defaults to true when omitted.full_schedule· boolean|null · optionnel
Whether to return the full per-card month-by-month schedule. Optional; defaults to false when omitted. The per-card monthly_schedule is capped at 1000 rows total across cards and months, so later months are omitted on a long multi-card payoff; the portfolio-level monthly_totals series is always complete and is the one to read for the whole timeline.apply_rate_cap· boolean|null · optionnel
Whether to cap each card's APR at the regulatory ceiling before simulating. Optional; defaults to false when omitted.fixed_payments· boolean|null · optionnel
Whether to hold each card's payment constant for the whole payoff. Optional; defaults to false when omitted. When true, each card's payment is locked at max(cards[].minimum_payment, that card's issuer minimum computed at month 1), and the total monthly budget (those locked amounts plus extra_monthly_payment) is held constant for the whole payoff, so once a card is paid off its freed-up payment rolls forward onto the remaining cards. This is the ONLY mode in which cards[].minimum_payment affects calculate_cc_payoff's result; compare_payoff_strategies has no fixed_payments parameter and binds minimum_payment on both of its strategy arms regardless.extra_monthly_payment· number|null · optionnel
Extra monthly payment in dollars, $0 to $1,000,000,000, applied on top of the required minimums. Optional; defaults to 0 when omitted.include_card_timeline· boolean|null · optionnel
Whether to add the card_timeline block, a per-card view of when each card clears. Optional; defaults to false when omitted.
Exemple d'appel{"name": "calculate_cc_payoff", "arguments": {"cards": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_compound_interest≈ 702 tokens
Calculation, not advice. Verify with a professional before acting. Standard compound interest calculator. Returns future value, total contributions, interest earned, effective annual rate, and milestones. Pick this for a balance that grows with contributions. Pick `calculate_opportunity_cost` when the money is recurring spending being priced against investing, and `calculate_loan_payoff` when the balance amortizes down under a fixed payment. The response includes `chart_hints` with rendering directives any client can use.
Paramètres, retour & exemple (9)
Paramètresyears· integer · requis
Time horizon in years. Integer, at least 1. REQUIRED, no default.principal· number · requis
Starting balance. Decimal, at least 0. REQUIRED, no default.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.annual_rate_pct· number · requis
Annual interest rate as a percentage, e.g. 7 not 0.07. Decimal from 0 to 100. REQUIRED, no default.rate_convention· string|null · optionnel · nominal | real | None
'nominal' or 'real'. 'real' unconditionally suppresses the inflation overlay; use when annual_rate_pct is already inflation-adjusted. Optional; defaults to 'nominal' when omitted.compounds_per_year· integer|null · optionnel
Compounding periods per year. Integer, greater than 0. Optional; defaults to 12 when omitted.inflation_rate_pct· number|null · optionnel
Inflation rate as a percentage. Decimal: -1 (deprecated suppress, same as 0), 0 (no real-value overlay), or greater than 0 and less than 100 (explicit percentage, e.g. 3.5). Optional; defaults to 0 when omitted.monthly_contribution· number|null · optionnel
Additional contribution added each month. Decimal, at least 0. Optional; defaults to 0 when omitted.apply_default_inflation· boolean|null · optionnel
When true and inflation_rate_pct is 0, auto-selects inflation via MacroeconomicDefaults.ForHorizon. Ignored when inflation_rate_pct is greater than 0 or rate_convention is 'real'. Optional; defaults to false when omitted.
Exemple d'appel{"name": "calculate_compound_interest", "arguments": {"years": 1, "principal": 1, "annual_rate_pct": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_debt_to_income≈ 3693 tokens
Calculation, not advice. Verify with a professional before acting. Calculate your debt-to-income ratio and check qualification for conventional, FHA, VA, and USDA mortgage programs. Accepts existing debts and an optional proposed new debt or home price. Pick this to measure DTI ratios and mortgage-program qualification against existing debts; pick `compare_debt_consolidation` when the question is whether a consolidation loan costs less than keeping the current credit cards, and pick `compare_rent_vs_buy` when the question is whether to buy a home at all rather than what DTI a given price implies. Returns current DTI, front-end and back-end ratios with proposed housing, maximum affordable home price, and what-if scenarios showing the resulting DTI and which programs would then qualify if a given debt were paid off, plus income-increase and home-price-reduction variants. Includes the 10-month rule (Fannie Mae) for debts near payoff. `qualification.<program>.qualification_status` is a tri-state verdict ('qualifies' | 'underwriting_dependent' | 'ineligible'): - 'underwriting_dependent' means the manual-underwriting baseline is exceeded but further underwriting can still approve it, an automated-underwriting system for conventional and FHA, either automated or manual underwriting for USDA, or a supervisory underwriter's written justification under 38 CFR 36.4340(c)(2) for VA (never an automated decision), so `qualification.<program>.qualifies=false` does NOT by itself mean the borrower is blocked - Read qualification_status, not the bare qualifies boolean, for the real answer; `qualification.<program>.note` explains the specific underwriting or hard-cap context, naming which mechanism applies - VA's back-end overage alone never returns 'ineligible' either (38 CFR 36.4340(c)(2)/(c)(3) both contemplate approval above 41%), and conventional is now the only program that ever returns 'ineligible', since FHA, VA and USDA are each disclosure-only above their baselines - `what_if.scenarios[].qualifies_va` and `changes_qualification_va` are decided on the scenario's unrounded VA ratio rounded to a whole percent under 38 CFR 36.4340(d), not on `new_back_end_dti_va` (two decimals), so a scenario showing 41.44 can qualify; `qualification.va.your_back_end_compared` states the rounded figure VA's row compares with `max_back_end`
Paramètres, retour & exemple (20)
Paramètresfamily_size· integer|null · optionnel
Household size for the VA residual income guideline. Supply family_size and property_state together, or neither. Optional; must be between 1 and 20.hoa_monthly· number|null · optionnel
Monthly homeowners association dues in dollars. Optional; defaults to 0 when omitted. Must be zero or more.pmi_monthly· number|null · optionnel
Monthly PMI (private mortgage insurance) in dollars. Optional; if omitted, auto-estimated at 0.5% of the loan annually when loan-to-value exceeds 80%. Feeds the conventional-basis PITI, so it moves with_proposed.front_end_dti, with_proposed.back_end_dti, with_proposed.front_end_breakdown, the conventional qualification row, and what_if.scenarios[].new_front_end_dti and new_back_end_dti. VA carries no PMI, and FHA and USDA always compute their own upfront-plus-annual mortgage insurance instead, at every loan-to-value, never this override. Must be zero or more.annual_income· number|null · optionnel
Annual gross income in dollars, divided by 12 to get monthly income. Exactly one of gross_monthly_income or annual_income is required. Must be at least $0.01, one cent, the smallest amount of money.proposed_debt· object|null · optionnel
A proposed new debt, as an alternative to proposed_home_price. Provide at most one of proposed_debt or proposed_home_price; providing neither computes the current DTI only. Optional; a JSON null is treated as omitted, the same as leaving the field out.existing_debts· array|null · optionnel
Existing debts to include in the DTI calculation. Optional; omit it or send an empty array for no existing debts. A JSON null is rejected; omit the field instead. At most 50 debts are allowed.property_state· string|null · optionnel
Two-letter USPS state code, or 'DC'/'PR'/'GU'/'VI'/'AS'/'MP'. Supply family_size and property_state together, or neither. Together these compute the VA residual income guideline (38 CFR 36.4340(e)) in va_residual_income_guideline: the dollar amount VA's tables require for this family size, region, and loan amount (derived from proposed_home_price; not computable without it), plus the 38 CFR 36.4340(c)(3) review-waiver figure. Computed only for family_size 1-7 and a property_state among the 50 states, DC, or PR (not GU, VI, AS, or MP; 38 CFR 36.4340(e) assigns no region to those four); outside those bounds, or without proposed_home_price, va_residual_income_guideline.status reads 'not_computable' with the reason instead. This block alone is a LOOKUP, not a verdict: it never compares against your actual residual income by itself. Optional.include_what_if· boolean|null · optionnel
Whether to generate what-if scenarios showing how paying off a debt, increasing income, or reducing the home price would improve DTI. Optional; defaults to true when omitted.additional_income· number|null · optionnel
Additional monthly income: side income, rental income, or bonuses. Optional; defaults to 0 when omitted. Must be zero or more.proposed_rate_pct· number|null · optionnel
Proposed mortgage interest rate as a percent, e.g. 7.0 for 7.0%. Optional; the 7.0% default applies whenever this field is omitted, whether the proposal is proposed_debt or proposed_home_price. The default-rate warning fires only when proposed_home_price is used. Must be between 0 and 20.property_tax_annual· number|null · optionnel
Annual property tax in dollars. Optional; if omitted, estimated at 0.88% of the proposed home price. Must be zero or more.proposed_home_price· number|null · optionnel
Proposed home purchase price in dollars. Provide at most one of proposed_debt or proposed_home_price; providing neither computes the current DTI only. Auto-calculates full PITI (principal, interest, taxes, insurance). Optional; must be at least $0.01, one cent, the smallest amount of money.proposed_term_years· integer|null · optionnel
Proposed mortgage term in years. Optional; defaults to 30 when omitted. Must be between 1 and 40.transaction_purpose· string|null · optionnel · purchase | refinance | streamlined_assist | None
Mortgage transaction purpose: 'purchase', 'refinance', or 'streamlined_assist'. Optional, defaults to 'purchase' when omitted. Affects USDA only, and only what is disclosed. USDA's 32% PITI and 44% Total Debt figures are purchase-transaction waiver conditions (HB-1-3555 11.3.A.2), disclosed rather than applied as ceilings: Senaro cannot observe how the file is underwritten, so a USDA ratio overage is never 'ineligible' on any transaction purpose. For a refinance, 11.3.B states debt ratios 'are not limited to the maximum purchase debt ratio thresholds', so where the note fires it names both figures and states that neither applies. Streamlined-assist refinances require no debt ratio calculation at all. Conventional, FHA and VA are unaffected.gross_monthly_income· number|null · optionnel
Gross monthly income in dollars. Exactly one of gross_monthly_income or annual_income is required. Must be at least $0.01, one cent, the smallest amount of money.home_insurance_annual· number|null · optionnel
Annual home insurance in dollars. Optional; if omitted, estimated at 0.65% of the proposed home price. Must be zero or more.proposed_down_payment_pct· number|null · optionnel
Down payment as a percent of the proposed home price, e.g. 20 for 20%. Optional; defaults to 20 when omitted. Must be between 0 and 99.9 (100% cash purchases are not supported).va_funding_fee_financed_monthly· number|null · optionnel
The additional monthly payment from financing a VA funding fee into the loan balance, if any. 38 CFR 36.4313(e)'s applicable percentage depends on down payment, prior VA-loan use, and service category, none of which Senaro collects, so there is no default. If omitted while any VA figure that depends on it is produced, meaning qualification.va.your_back_end and its verdict, any what_if VA ratio, what_if.max_affordable_home.va, or qualification.va.residual_income_comparison, a VA_FUNDING_FEE_NOT_MODELED warning discloses that no fee is assumed. The home-price-reduction what_if scenario's hypothetical price is fixed before the fee is considered, so a supplied fee is scaled to that EXACT hypothetical loan size, since 38 CFR 36.4313(e)'s fee is a percentage of loan principal. what_if.max_affordable_home.va is a two-pass approximation instead, so its supplied fee is scaled to an ESTIMATE of the hypothetical loan size, not the exact figure reported; the published price itself passes an exact forward VA check under 38 CFR 36.4340(d) with that reserved fee, and one dollar more fails it, so only this fee-scaling step is approximate. Without proposed_home_price there is no reference loan size to scale from either way, so the raw fee is reserved unscaled instead, and a VA_FUNDING_FEE_NOT_SCALED warning discloses it. This is mutually exclusive with VA_FUNDING_FEE_NOT_MODELED by construction, since one requires the fee omitted and the other requires it supplied. Optional; must be zero or more.monthly_maintenance_and_utilities· number|null · optionnel
Estimated monthly maintenance and utilities for the proposed property. 38 CFR 36.4340 calls for a realistic estimate of this figure for the property and local utility rates and sets no numeric multiplier itself, but VA underwriting guidance (the Lender's Handbook, Pamphlet 26-7) publishes a per-square-foot multiplier for this same estimate. Applying it needs the property's square footage, which this tool does not currently collect, so Senaro has no default to offer here and you supply the aggregate monthly amount instead. Supplying BOTH this field and monthly_taxes_and_retirement_withholding, together with proposed_home_price and a computable family_size/property_state, computes qualification.va.residual_income_comparison: your ACTUAL monthly residual income, its ratio to the va_residual_income_guideline figure, and whether residual_income_meets_review_waiver_margin (residual income at or above 120% of the guideline) is met. The shelter expense used here excludes any PMI (VA loans carry no monthly PMI; 38 CFR 36.4313(e) sets a funding fee instead, commonly financed into the loan; see va_funding_fee_financed_monthly for the financed-fee field). 38 CFR 36.4340(c)(3)'s review-waiver condition is CONJUNCTIVE: it also requires the back-end debt-to-income ratio, rounded to a whole percent under 38 CFR 36.4340(d) (qualification.va.your_back_end_compared), to exceed 41%, which this field does not by itself confirm. Check both fields together. Even when both hold, (c)(3) only WAIVES a second-level review requirement; it is not itself an approval. Whether this file is actually approved is an underwriting determination Senaro does not make and no input combination here determines. Missing any one of the needed inputs reads qualification.va.residual_income_comparison.status 'not_computable' with every reason named. Optional; must be zero or more.monthly_taxes_and_retirement_withholding· number|null · optionnel
Your federal, state, and FICA tax withholding, plus any amount paid or withheld for retirement, monthly. 38 CFR 36.4340(f)(13) treats these as one class of deduction from gross income. Optional; must be zero or more.
Exemple d'appel{"name": "calculate_debt_to_income", "arguments": {"family_size": 1, "hoa_monthly": 1, "pmi_monthly": 1, "annual_income": 1, "proposed_debt": {}, "existing_debts": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_emergency_fund≈ 772 tokens
Calculation, not advice. Verify with a professional before acting. Size an emergency fund target based on the borrower's monthly essential expenses, job stability, dependents, and income redundancy. Returns a tier breakdown (minimum, target, conservative; the target row is omitted when it equals the 3-month minimum, and the conservative row is omitted when it equals the 12-month ceiling), the gap between current savings and the target, and time-to-target at the supplied monthly savings cadence. Pick this to size an emergency-fund target; pick `calculate_runway` when savings are already fixed and the question is how many months they will last, not what the target is. Pairs with debt-payoff content for the recurring 'save vs pay debt' question. Target months are clamped to [3, 12]: never below the 3-month personal-finance minimum, never above 12.
Paramètres, retour & exemple (7)
Paramètresdependents· integer|null · optionnel
Number of dependents. Integer from 0 to 20. +1 target month per dependent, capped at +3. Optional; defaults to 0 when omitted.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.job_stability· string|null · optionnel · stable_w2 | variable_income | self_employed | between_jobs | None
'stable_w2' | 'variable_income' | 'self_employed' | 'between_jobs'. Drives the target-months multiplier: stable_w2 salaried W-2 with consistent paycheck (+0 months); variable_income W-2 with commission/bonus/shift-based pay (+1 month); self_employed 1099 contractor/freelancer/sole proprietor (+3 months); between_jobs actively job hunting, no current paycheck (+5 months). Optional; defaults to 'stable_w2' when omitted.current_savings· number|null · optionnel
What you have in liquid emergency-accessible savings today. Decimal from 0 to $1,000,000,000. Optional; defaults to 0 when omitted.has_dual_income· boolean|null · optionnel
When true, partner income reduces the buffer by 1 month. Optional; defaults to false when omitted.monthly_savings_capacity· number|null · optionnel
What you can contribute toward the gap each month. Drives months_to_target. Decimal, either 0 or from $0.01 to $1,000,000,000. Optional; defaults to 0 when omitted.monthly_essential_expenses· number · requis
Rent/mortgage + utilities + food + insurance + minimum debt payments. NOT discretionary spending. Decimal from $0.01 to $1,000,000,000. REQUIRED, no default.
Exemple d'appel{"name": "calculate_emergency_fund", "arguments": {"monthly_essential_expenses": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_loan_payoff≈ 808 tokens
Calculation, not advice. Verify with a professional before acting. Standard amortizing loan calculator. Pick this for a single fixed-rate installment loan (mortgage, auto, student, personal) with one amortization schedule; pick `calculate_cc_payoff` for a credit card, which carries revolving balances, multiple APR segments, and a snowball or avalanche strategy this tool does not model. Returns: - monthly payment, total interest, and a payoff date (null when the loan does not clear within its term) - a bucketed Analysis suitable for chart rendering. The Analysis includes KPIs, annotations (e.g. crossover month), and summary strings When extra_monthly_payment is supplied, every computed figure in the response outside with_extra describes this loan without the extra payment, including monthly_payment, payoff_months, total_paid, total_interest, remaining_balance_at_term, payoff_date, months_to_halfway_principal, months_to_interest_flip, and every value under analysis; a warnings[] entry names this. The response includes `chart_hints` with rendering directives any client can use. This tool does not support output: 'inline' on any transport.
Paramètres, retour & exemple (8)
Paramètresoutput· string|null · optionnel · summary | None
Valid values: 'summary' (default). 'summary' returns the full payload including analysis.buckets[] inline.loan_type· string|null · optionnel · personal | auto | student | mortgage | None
'personal', 'auto', 'student', or 'mortgage'. Optional; defaults to 'personal' when omitted.principal· number · requis
Loan principal to amortize. Decimal, greater than 0. REQUIRED, no default.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.term_months· integer · requis
Loan term. Integer, greater than 0. REQUIRED, no default.chart_bucket· string|null · optionnel · auto | monthly | quarterly | yearly | biennial | None
Time-axis granularity of analysis.buckets[]: 'auto', 'monthly', 'quarterly', 'yearly', or 'biennial'. Optional; defaults to 'auto', which selects by term length (<=24 months: monthly; <=60: quarterly; <=360: yearly; else biennial).annual_rate_pct· number · requis
Loan annual interest rate (the note rate in the loan contract, not the disclosed APR, which can differ when fees are financed), e.g. 6.5 not 0.065. Decimal from 0 to 100. REQUIRED, no default.extra_monthly_payment· number|null · optionnel
Extra principal paid each month beyond the regular payment. Decimal, at least 0. Optional; defaults to 0 when omitted.
Exemple d'appel{"name": "calculate_loan_payoff", "arguments": {"principal": 1, "term_months": 1, "annual_rate_pct": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_opportunity_cost≈ 763 tokens
Calculation, not advice. Verify with a professional before acting. Calculate the true cost of recurring spending by showing what that money would be worth if invested. Pick this when the input is recurring spending. Pick `calculate_compound_interest` when the input is a balance and its contributions with no spending to price, and `compare_payoff_vs_invest` when the alternative to investing is paying down debt. The response includes `chart_hints` with rendering directives any client can use.
Paramètres, retour & exemple (9)
Paramètreslabel· string|null · optionnel
What the spending is, e.g. 'coffee' or 'streaming subscriptions'. Optional. Max 120 characters.years· integer · requis
Time horizon in years. Integer, greater than 0. REQUIRED, no default.tax_year· integer|null · optionnel
Tax year, 2025 or 2026. Year 1 of the horizon, so the assumed sale of the investments falls in tax year tax_year + years - 1. Optional; defaults to 2026 when omitted.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.filing_status· string|null · optionnel · single | married | head_of_household | None
Tax filing status: 'single', 'married', or 'head_of_household'. Optional; matched case-insensitively. Required, with annual_gross_income, for the after-tax opportunity cost.tax_bracket_pct· number|null · optionnel
Not used. Kept so older calls still work; an after-tax figure needs filing_status and annual_gross_income. Decimal from 0 to 100. Optional.monthly_spending· number · requis
Monthly spending to price against investing. Decimal, at least $0.01. The opportunity cost of spending $0 is degenerate and is rejected. REQUIRED, no default.annual_return_pct· number · requis
Effective annual investment return, e.g. 8 not 0.08; the monthly compounding step is (1+pct/100)^(1/12)-1. Decimal from 0 to 100. REQUIRED, no default.annual_gross_income· number|null · optionnel
Annual gross income in dollars, used as adjusted gross income for the tax on investment gains at the horizon. Optional; with filing_status it enables the after-tax opportunity cost. Held at this amount in the year of the assumed investment sale. Must be zero or more and no more than $1,000,000,000.
Exemple d'appel{"name": "calculate_opportunity_cost", "arguments": {"years": 1, "monthly_spending": 1, "annual_return_pct": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_refi_breakeven≈ 1515 tokens
Calculation, not advice. Verify with a professional before acting. Deterministic mortgage refinance break-even analysis. Given your current loan (balance, rate, remaining term) and a refinance offer (new rate, new term, closing costs, optional points), computes: - monthly P&I savings; - the cash-flow break-even month (Senaro's formula: total refinance cost divided by monthly savings, rounded up to a whole month, built on the payback test the CFPB toolkit describes); - the interest delta over your remaining-term horizon, and each loan's interest over its whole schedule (the current loan's remaining term, the new loan's full term); - a term-matched scenario that isolates the rate cut from a term reset; - a term-reset-trap flag (a longer term and a lower payment, but more interest over the new loan's full term than over the current loan's remaining term); and - the economic break-even (net-worth crossover) month under an equal-outflow model: both sides spend the same each month; the side that keeps the current loan starts with the upfront refinance cost invested at month 0 (nothing when costs are rolled in); money not spent on a payment is invested at investment_return_pct. The search runs to the end of the longer loan term, and stops earlier where a loan's term ends with money still owed. Rate-and-term refis only (cash-out and tax effects are out of scope). Pick this when refinancing your existing mortgage into a new rate and term is the question; pick `compare_mortgage_terms` when comparing two mortgage structures on a purchase you have not yet taken out. All defaults cite primary sources (LodeStar/ALTA closing-cost data, the CFPB toolkit's payback test). Scalar output, no chart series. payoff_months and payoff_month_shift use {status, value, explanation}; the two break-evens use {code, month, explanation}.
Paramètres, retour & exemple (12)
Paramètrespoints· number|null · optionnel
Discount points paid at closing, where 1.0 means 1% of the loan amount: the current balance when costs are paid upfront, or, when roll_costs_into_loan is true, the new loan amount, which includes the financed closing costs and points. Decimal from 0 to 4. Optional; defaults to 0 when omitted.chart_title· string|null · optionnel
Reserved for the chart pipeline; validated but not yet used. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.closing_costs· number|null · optionnel
Explicit closing costs in dollars, excluding points; total upfront cost is closing_costs plus the points cost. Decimal from 0 to 1,000,000,000. Optional; omitting it uses the cited default of 0.67% of the current balance (LodeStar 2026). An IMMEDIATE break-even requires total upfront cost to be zero AND monthly_savings to be non-negative AND roll_costs_into_loan false, i.e. closing_costs AND points both 0, not closing_costs alone; a zero-total-cost refi into a worse deal (negative monthly_savings) reports NEAR_ZERO_OR_NEGATIVE_SAVINGS instead.current_balance· number · requis
Outstanding principal you would refinance. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default.new_term_months· integer · requis
The new loan term in months. Integer from 1 to 480. REQUIRED, no default.new_annual_rate_pct· number · requis
The offered refinance rate as a percentage. Decimal from 0 to 20. REQUIRED, no default.roll_costs_into_loan· boolean|null · optionnel
Whether closing costs and points are added to the new principal instead of paid upfront. When true, points are a percentage of the new loan amount; cash-flow break-even reports COSTS_ROLLED_INTO_LOAN; and the economic break-even, when requested, compares the two loans with the financed costs in the new principal and no upfront cash. Optional; defaults to false when omitted.investment_return_pct· number|null · optionnel
Annual return used for the economic (net-worth crossover) break-even, an EFFECTIVE ANNUAL rate: it compounds money not spent on a payment and, when costs are paid upfront, the upfront refinance cost that keeping the current loan leaves invested. The monthly compounding step is (1+pct/100)^(1/12)-1. Decimal from 0 to 30. Optional; omitting it uses the cited long-run S&P 500 nominal total-return default, about 10%; call list_defaults for the exact current value.remaining_term_months· integer · requis
Months left on the current loan. Integer from 1 to 480. REQUIRED, no default.current_annual_rate_pct· number · requis
Current loan's annual rate as a percentage, e.g. 6.5 not 0.065. Decimal from 0 to 20. REQUIRED, no default.current_monthly_payment· number|null · optionnel
Your actual statement P&I payment. Decimal, greater than 0 and at most 1,000,000,000. Optional; when supplied it overrides the formula-derived payment, so match your statement. Rounded to the cent, it must be greater than the first month's interest: current_balance rounded to the cent, times current_annual_rate_pct / 100 / 12, rounded to the cent.compute_economic_break_even· boolean|null · optionnel
Whether to compute the economic (net-worth crossover) break-even. When false, economic_break_even reports NOT_REQUESTED; every other field is still returned. Optional; defaults to true when omitted.
Exemple d'appel{"name": "calculate_refi_breakeven", "arguments": {"current_balance": 1, "new_term_months": 1, "new_annual_rate_pct": 1, "remaining_term_months": 1, "current_annual_rate_pct": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - calculate_runway≈ 869 tokens
Calculation, not advice. Verify with a professional before acting. Deterministic cash-runway calculator. Given your liquid savings, monthly essential expenses, optional ongoing inflows (partner income, side income, severance paid as a monthly stream, unemployment benefits), and an optional expense-inflation rate, computes how many months the fund lasts before it hits zero, plus a month-by-month drawdown schedule. Single scenario per call: to compare 'status quo' vs 'cutbacks' vs 'cutbacks + unemployment', call once per scenario with the matching expenses and inflows. When inflows meet or exceed expenses (and expenses are not inflating), the fund does not draw down and a self-describing does-not-deplete outcome is returned instead of a month. Yield on the fund is treated as 0% in v1 (conservative). All assumptions cite their source. Pick this to project how many months current savings will last against expenses and inflows; pick `calculate_emergency_fund` when the question is the fund's target size, not how long it lasts. HEAVY tool: use output='summary' (default) for the headline or output='inline' for the full schedule.
Paramètres, retour & exemple (7)
Paramètresoutput· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. 'summary' returns headline scalars (depletion month or does-not-deplete) and citations with the schedule stripped. 'inline' returns the full payload including the month-by-month schedule[] for chart rendering.chart_title· string|null · optionnel
Reserved for the chart pipeline; validated but not yet used. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.current_savings· number · requis
Liquid fund available to draw down. Decimal from 0 to 1,000,000,000; 0 is valid (an already-empty fund). REQUIRED, no default.monthly_inflows· number|null · optionnel
Ongoing monthly income that continues during the drawdown (partner income, side income, unemployment benefit, severance paid monthly), modeled as a flat monthly stream; a one-time severance lump and time-limited benefits are not modeled in v1. Decimal from 0 to 1,000,000,000. Optional; defaults to 0 when omitted.use_essential_expenses· boolean|null · optionnel
Expense basis: true means essential-only spending (survival runway), false means total spending (current-pace runway). Labels the reported expense_basis. Optional; defaults to true when omitted.annual_inflation_rate_pct· number|null · optionnel
Annual expense-inflation rate as a percentage. When greater than 0, expenses grow each month by the monthly equivalent of this annual rate; when 0, expenses are constant. Decimal, at least 0 and less than 100. Optional; defaults to 0 when omitted.monthly_essential_expenses· number · requis
Monthly outflow at the chosen expense basis. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default.
Exemple d'appel{"name": "calculate_runway", "arguments": {"current_savings": 1, "monthly_essential_expenses": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_debt_consolidation≈ 3455 tokens
Calculation, not advice. Verify with a professional before acting. Compares keeping cards vs. consolidation loan vs. optional balance transfer offers (single offer or head-to-head multi-offer comparison via bt_offers[]). Supports partial balance transfers via bt_transfer_limit: transfers only up to that dollar amount (choosing cards by highest APR, highest balance, or manually), then runs a combined simulation of the BT card + remaining original-card balances together, so freed minimum payments are correctly redistributed. Shows total cost, interest saved, monthly payment change, origination fee breakeven, hidden risks (reracking), promo-trap detection per offer, and what-if scenarios. Works with multiple cards including cash advance balances. Pick this to weigh a consolidation loan (required input), plus any balance-transfer offers, against keeping current cards; pick `calculate_cc_payoff` for a single payoff timeline with no consolidation option, and pick `compare_payoff_strategies` to compare avalanche against snowball ordering on the cards as they stand. The response includes `chart_hints` with rendering directives any client can use. HEAVY tool: use output='summary' (default) for the headline comparison or output='inline' for the full payload.
Paramètres, retour & exemple (17)
Paramètrescards· array · requis
Credit cards to include, 1 to 20. Required: omitting the field answers contract_error MISSING_REQUIRED_FIELD, while an explicit JSON null answers parse_error ("cards must be a JSON array."); the two are not the same rejection. segments and stop_spend_month are not supported by this tool and are rejected; a non-zero monthly_spend, annual_fee, or plan_fees_monthly is rejected too, but zero (including an explicit 0) is accepted and dropped for all three: this tool always reads the flat purchase_balance / cash_advance_balance fields on each card below, never segments[] balances, and card-level fees and ongoing spend are not modeled here. Those five fields are supported by calculate_cc_payoff and compare_payoff_strategies instead.output· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. summary: compact response with a data_preview block; no heavy array exists on this response today, so summary and inline are currently identical in content. inline: full payload (currently identical to summary; will diverge once a heavy array is added for chart rendering).bt_offers· array|null · optionnel
Balance-transfer offers to compare head-to-head, 1 to 10, preferred over the four scalar bt_* fields above when comparing two or more offers: when supplied, bt_offers overrides bt_apr_pct, bt_promo_months, bt_regular_apr_pct, and bt_fee_pct, and their range checks are skipped. The response includes a balance_transfer_offers block with per-offer simulation results, selected_offer_index, selected_offer_label, selected_offer_reason, and all_offers_trap. Optional; a JSON null is rejected, unlike bt_manual_transfers and windfalls below, where a JSON null is treated as omitted.windfalls· array|null · optionnel
One-time principal payments, at most 12, same shape as calculate_cc_payoff. Optional; a JSON null is treated as omitted, the same as leaving the field out. When non-empty, the response adds windfalls_applied[] and windfalls_unused[] on keep_cards, on each balance_transfer scenario (and on each offer in balance_transfer_offers.offers[]), on consolidation_loan (single-row per windfall since the loan is a single-balance instrument), and on optimized_consolidation.loan and optimized_consolidation.keep_subset (each windfall dollar is listed once across the two). All scenarios use with-windfalls totals so cross-option ranking stays apples-to-apples, except what_if.same_budget_accelerated, a windfall-free hypothetical about extra-payment behavior, not your actual lump-sum schedule.bt_apr_pct· number|null · optionnel
Balance-transfer APR as a percentage, 0-100, e.g. 0 for a 0% promo. Required when include_balance_transfer is true and bt_offers is omitted. bt_offers, when supplied, overrides this and the other three bt_* scalars below. The 0-100 range applies only when include_balance_transfer is true and bt_offers is omitted; a non-number is rejected in every case.bt_fee_pct· number|null · optionnel
Balance-transfer fee as a percentage of the transferred balance, 0-10. Optional; defaults to 3.0 when omitted. bt_offers, when supplied, overrides this. The 0-10 range applies only when include_balance_transfer is true and bt_offers is omitted; a non-number is rejected in every case.chart_title· string|null · optionnel
Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters.full_schedule· boolean|null · optionnel
Whether to return the full month-by-month amortization schedule instead of the compact default. Optional; defaults to false when omitted.bt_promo_months· integer|null · optionnel
Balance-transfer promo period in months, 1-60. Optional; defaults to 18 when omitted. bt_offers, when supplied, overrides this. The 1-60 range applies only when include_balance_transfer is true and bt_offers is omitted; a non-number is rejected in every case.current_strategy· string|null · optionnel · avalanche | snowball | None
Your current payoff strategy, compared against the consolidation loan / balance-transfer alternative: 'avalanche' or 'snowball'. In partial consolidation it ranks the loan against the kept cards, and the part it ranks first, the loan or the kept cards, receives the extra payment and any windfalls. Optional; defaults to 'avalanche' when omitted. Case-sensitive.bt_transfer_limit· number|null · optionnel
Cap on the total dollar amount transferred to the balance-transfer card, at least $0.01. When set, only this amount moves to the BT card; remaining balances stay on original cards, and a combined simulation runs both halves together, correctly redistributing freed minimum payments. Optional; when omitted, the entire balance is transferred (legacy behavior). Needs include_balance_transfer or bt_offers.bt_regular_apr_pct· number|null · optionnel
APR that applies after the promo period ends, as a percentage, 0-100. Optional; defaults to 25.20 when omitted. bt_offers, when supplied, overrides this. The 0-100 range applies only when include_balance_transfer is true and bt_offers is omitted; a non-number is rejected in every case.consolidation_loan· object · requis
Loan terms for the consolidation option. Required: omitting the field answers contract_error MISSING_REQUIRED_FIELD, while an explicit JSON null answers parse_error ("consolidation_loan must be an object."); the two are not the same rejection.bt_manual_transfers· array|null · optionnel
Exact per-card transfer amounts. Required when bt_transfer_strategy is 'manual'; each entry's card_name must match a name in cards[]. Optional otherwise; a JSON null is treated as omitted, the same as leaving the field out.bt_transfer_strategy· string|null · optionnel
How to choose which balances move when bt_transfer_limit is less than your total debt: 'highest_apr_first' (transfer from highest-APR segments first, maximizes interest savings), 'highest_balance_first' (transfer largest balances first), or 'manual' (use bt_manual_transfers to specify exact amounts per card). Optional; defaults to 'highest_apr_first' when omitted. Needs bt_transfer_limit.extra_monthly_payment· number|null · optionnel
Extra monthly payment in dollars, $0 to $1,000,000,000, applied on top of the required minimums for keep-cards and any balance transfer, and on top of the loan's own required payment for consolidation. In partial consolidation, the extra payment and any windfalls go to the part current_strategy ranks first, the loan or the kept cards. Optional; defaults to 0 when omitted. fixed_payments is not a parameter of this tool, unlike calculate_cc_payoff: the keep-cards baseline is always simulated under the canonical constant rolled-forward payment (see comparison_basis in the response); supplying fixed_payments returns an unknown_parameter error.include_balance_transfer· boolean|null · optionnel
Whether to run a single-offer balance-transfer scenario using the four scalar bt_* fields below. Optional; defaults to false when omitted. Ignored once bt_offers is supplied; use bt_offers when comparing two or more offers.
Exemple d'appel{"name": "compare_debt_consolidation", "arguments": {"cards": [], "consolidation_loan": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_mortgage_terms≈ 2593 tokens
Calculation, not advice. Verify with a professional before acting. Compare two fixed-rate mortgage options side-by-side: - 15 vs 30 year, - different rates, - points vs no points, or - any two terms. Shows total interest, monthly payment breakdown (with tax, insurance, PMI, HOA), equity buildup, and, critically, what happens if you take the cheaper mortgage and invest the monthly savings. Finds the break-even investment return rate. Includes tax deduction analysis (itemizing vs standard deduction), PMI auto-removal tracking per the Homeowners Protection Act, and, when invest_the_difference is on (the default) and filing_status and annual_gross_income are given, an after-tax net worth comparison. Pick this to compare two mortgage structures on a purchase, such as 15 versus 30 year or points versus no points; pick `calculate_refi_breakeven` when the comparison is against your existing loan and a refinance offer, and pick `compare_payoff_strategies` when the question is payoff strategy on revolving debt, not a mortgage term. Note: ARM (adjustable-rate) mortgages are not yet supported.
Paramètres, retour & exemple (21)
Paramètresoption_a· object · requis
The first fixed-rate mortgage option to compare. Required.option_b· object · requis
The second fixed-rate mortgage option to compare, same shape as option_a. Required. Must differ from option_a on at least one of term_years, annual_rate_pct, or points.tax_year· integer|null · optionnel
Tax year, 2025 or 2026, selecting the IRS standard-deduction table for the itemize-vs-standard analysis. The after-tax view counts it as year 1 of the horizon, so the assumed sale of the investments falls in tax year tax_year + time_horizon_years - 1. Optional; defaults to 2026 when omitted.home_price· number · requis
Home purchase price in dollars. Required. Must be positive and no more than $1,000,000,000.hoa_monthly· number|null · optionnel
Monthly homeowners association dues in dollars. Optional; defaults to 0 when omitted. Must be zero or more and no more than $1,000,000,000.pmi_monthly· number|null · optionnel
Monthly PMI (private mortgage insurance) in dollars, charged when down payment is below 20%. Optional; defaults to 0 when omitted. Must be zero or more and no more than $1,000,000,000.filing_status· string|null · optionnel · single | married | head_of_household | None
Tax filing status: 'single', 'married', or 'head_of_household'. Optional; matched case-insensitively. Required, with annual_gross_income, for the after-tax comparison.full_schedule· boolean|null · optionnel
Whether to return the full month-by-month amortization schedule instead of the compact default. Optional; defaults to false when omitted.tax_bracket_pct· number|null · optionnel
Marginal tax bracket as a percentage, 0-50. Optional; values the mortgage-interest deduction (interest_deduction_value) and the yearly deduction savings credited to each option's investments in the after-tax comparison. It is never applied to investment gains.closing_cost_pct· number|null · optionnel
Closing costs as a percentage of the loan amount, 0-20, points excluded. Optional; defaults to the Urban Institute loan-size regressive schedule (about 4.6% at a $97K loan down to about 1.4% at a $679K loan) when omitted. Pass 0 to model zero closing costs.down_payment_pct· number|null · optionnel
Down payment as a percent of home_price, e.g. 20 for 20%. Optional; defaults to 20 when omitted. Range 0-100 applies only when down_payment_amount is absent; when down_payment_amount is supplied, down_payment_pct is ignored entirely, including in provenance.standard_deduction· number|null · optionnel
Standard deduction in dollars, compared against itemized mortgage-interest deductions. Optional; defaults to the IRS basic standard deduction for tax_year and filing_status when omitted (TY2026: 16100 single, 32200 married, 24150 head_of_household; TY2025: 15750 single, 31500 married, 23625 head_of_household; source Rev. Proc. 2025-32). Must be zero or more.time_horizon_years· integer|null · optionnel
Number of years to project the invest-the-difference comparison, 1-40. Optional; defaults to the maximum of both options' term_years when omitted.annual_gross_income· number|null · optionnel
Annual gross income in dollars, used as adjusted gross income for the tax on investment gains at the horizon. Optional; with filing_status it enables the after-tax comparison. Held at this amount in the year of the assumed investment sale. Must be zero or more and no more than $1,000,000,000.down_payment_amount· number|null · optionnel
Down payment in dollars. Optional; overrides down_payment_pct entirely, including its provenance row, when supplied. Must be at least $0 and strictly below home_price.pmi_removal_ltv_pct· number|null · optionnel
Loan-to-value percentage at which to model borrower-requested PMI removal, 50-100. Optional; when omitted, PMI is modeled as removed at the 78% HPA automatic-termination threshold instead. The rejection guard applies only when pmi_monthly is above 0 and the loan's own initial LTV is above 80 percent, the range where PMI applies: there, a value at or above that initial LTV is rejected, because the requested removal point would already be met at the first payment, so no PMI would be modeled for any month of the loan. When pmi_monthly is omitted or 0, no such check runs, whatever the LTV, and the supplied value is accepted but changes nothing in the response, because no PMI is modeled in that case. Either way PMI also stops at the statutory amortization midpoint of each option's own term (12 U.S.C. §4901(7), §4902(c)), which this value cannot postpone.property_tax_annual· number|null · optionnel
Annual property tax in dollars, for true monthly cost. Optional; defaults to 0 when omitted. Must be zero or more.extra_monthly_payment· number|null · optionnel
Extra principal payment in dollars, applied equally to BOTH options every month. Optional; defaults to 0 when omitted. Must be zero or more and no more than $1,000,000,000.home_insurance_annual· number|null · optionnel
Annual home insurance in dollars. Optional; defaults to 0 when omitted. Must be zero or more.invest_the_difference· boolean|null · optionnel
Whether both options deploy the same total budget every month: the higher option's P&I plus any extra_monthly_payment plus the month-1 PMI both carry. The cheaper-mortgage holder invests the payment gap each month; an option that stops paying PMI earlier invests the freed cash; the option with the lower upfront points cost invests the difference at month 0; after payoff the full budget goes to investments. See comparison_basis in the response. Optional; defaults to true when omitted.investment_return_pct· number|null · optionnel
Assumed investment return on the invested payment gap, as a percentage, an EFFECTIVE ANNUAL rate; the monthly compounding step is (1+pct/100)^(1/12)-1. Optional; defaults to the cited Senaro long-run S&P 500 nominal return, about 10%, when omitted. Range 0-30.
Exemple d'appel{"name": "compare_mortgage_terms", "arguments": {"option_a": {}, "option_b": {}, "home_price": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_payoff_strategies≈ 4736 tokens
Calculation, not advice. Verify with a professional before acting. Compare avalanche and snowball payoff strategies side-by-side. Pick this to compare avalanche against snowball ordering on the same set of cards; pick `calculate_cc_payoff` once a strategy is chosen and the need is a single payoff timeline with windfalls or fixed payments. Returns months, total interest, payoff order, savings, total_balance, weighted_average_apr_pct, monthly_interest_now, and cost_breakdown array. When an arm is not projected to reach a zero balance, the savings.* fields for that arm carry status: "none" with value: null and an explanation, not a number. savings.strategies_convergence separately discloses the avalanche/snowball arms' own convergence: - "both_converge" (ordinary case), - "worst_never_amortizes" (the losing strategy arm does not reach a zero balance in this projection but the winning arm does, so savings.best_vs_worst_months/interest carry status: "none"), or - "neither_converges" (the WINNING strategy arm does not reach a zero balance either, so no dollar or month figure derived from either strategy arm is reportable). lower_total_interest_strategy names whichever of avalanche or snowball has the lower total interest, or "tie" when the two arms' total interest and months are exactly equal. A "tie" can co-occur with savings.strategies_convergence="neither_converges". It reports only that comparison, never that either arm pays off. chart_hints.title and chart_hints.annotations[0].label report a dollar figure only when the comparison they describe is Defined, and otherwise state plainly that no figure is reportable, matching the "none" status on the corresponding savings.* field. Unlike chart_hints, summary and savings.savings_summary hedge rather than decline a figure, and the two always carry the same sentence as each other: when the compared arm does not converge (savings.baseline_never_amortizes=true, or savings.strategies_convergence=worst_never_amortizes) but the winning side still does, both report a figure hedged as a floor, "saves at least $X and N months ..., so the true saving could be higher than reported". Only when strategies_convergence=neither_converges do summary and savings.savings_summary also state that no figure is reportable. No savings.* sentinel object carries a hedged floor in its value key; the only place a floor ever appears is the savings.savings_summary sentence. This tool carries no domain-shaped warnings[].type entries (unlike calculate_cc_payoff); warnings[] here is exclusively validation disclosures emitted as warnings[].code, e.g. MINIMUM_PAYMENT_NOT_BINDING_IN_BASELINE plus the general portfolio findings (MANY_CARDS, HIGH_CARD_BALANCE, etc.) shared with every card-based tool. The response includes `chart_hints` with rendering directives any client can use. This tool takes no strategy, fixed_payments, full_schedule or per_segment parameter: it always compares avalanche against snowball over the full schedule, so all four are rejected as unknown_parameter.
Paramètres, retour & exemple (5)
Paramètrescards· array · requis
Credit cards to compare, 1 to 20, the same shape calculate_cc_payoff takes. Required: omitting the field answers contract_error MISSING_REQUIRED_FIELD, while an explicit JSON null answers parse_error ("cards is required and must be an array."); the two are not the same rejection. Every card may carry segments[]. Max 100 segments total across all cards in the request. Per-card, per-type caps: 1 purchase, 1 cash_advance, 5 balance_transfer, 1 promotional, 10 installment_plan.output· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. summary returns the headline comparison with a data_preview block; inline returns the full payload.chart_title· string|null · optionnel
Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters.apply_rate_cap· boolean|null · optionnel
Whether to cap each card's APR at the regulatory ceiling before simulating. Optional; defaults to false when omitted.extra_monthly_payment· number|null · optionnel
Extra monthly payment in dollars, $0 to $1,000,000,000, applied on top of the required minimums. Optional; defaults to 0 when omitted.
Exemple d'appel{"name": "compare_payoff_strategies", "arguments": {"cards": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_payoff_vs_invest≈ 1419 tokens
Calculation, not advice. Verify with a professional before acting. Compares the guaranteed return of debt payoff against expected investment returns over a time horizon. Accounts for post-payoff investing, optionally taxes the investment gain once at the horizon (this needs filing_status and annual_gross_income), and finds the break-even investment return rate. Works for credit cards, auto loans, student loans, personal loans, and mortgages. Pick this when the alternative to investing is paying down an existing debt balance; pick `calculate_opportunity_cost` when there is no debt in the picture and the alternative is simply forgoing recurring spending to invest it instead. The response echoes debt_type (canonical lowercase enum the projection was computed for) and debt_type_label (display-ready string, e.g. 'student loan') at the top level. HEAVY tool: use output='summary' (default) for the headline comparison or output='inline' for the full month-by-month schedule. When no projection can be computed (very long horizon, very high rate, or very large amounts), the response is { meta, not_representable: { code, explanation } } instead.
Paramètres, retour & exemple (17)
Paramètresoutput· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. 'summary' returns headline comparison scalars, milestones, and citations with monthly_schedule stripped. 'inline' returns the full payload including the month-by-month monthly_schedule[].tax_year· integer|null · optionnel
Tax year, 2025 or 2026. Year 1 of the time horizon, so the assumed sale of the investments falls in tax year tax_year plus the horizon in years, rounded up, minus 1. Optional; defaults to 2026 when omitted.debt_type· string · requis · credit_card | auto | student | personal | mortgage
Debt type: 'credit_card', 'auto', 'student', 'personal', or 'mortgage'. REQUIRED, no default.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.debt_apr_pct· number · requis
Debt annual percentage rate, e.g. 6.5 not 0.065. Decimal from 0 to 100. REQUIRED, no default.debt_balance· number · requis
Current debt balance. Decimal, greater than 0. REQUIRED, no default.extra_monthly· number · requis
Extra monthly amount available for debt payoff or investing, the amount in question. Decimal, greater than 0. REQUIRED, no default.filing_status· string|null · optionnel · single | married | head_of_household | None
Tax filing status: 'single', 'married', or 'head_of_household'. Optional; matched case-insensitively. Required, with annual_gross_income, for the after-tax comparison.full_schedule· boolean|null · optionnel
Whether to return the full month-by-month schedule. Optional; defaults to false (compact schedule) when omitted.minimum_payment· number|null · optionnel
Minimum monthly payment. Decimal, at least 0. Optional; auto-calculated for amortizing loans when omitted or 0.tax_bracket_pct· number|null · optionnel
Marginal tax bracket, e.g. 22 not 0.22. Decimal from 0 to 100. Optional; used only for the mortgage or student loan interest deduction warning. It is never applied to investment gains.time_horizon_years· integer|null · optionnel
Projection horizon. Integer, greater than 0. Optional; defaults to the greater of the payoff horizon or 10 years when omitted.annual_gross_income· number|null · optionnel
Annual gross income in dollars, used as adjusted gross income for the tax on investment gains at the horizon. Optional; with filing_status it enables the after-tax comparison. Held at this amount in the year of the assumed investment sale. Must be zero or more and no more than $1,000,000,000.investment_return_pct· number|null · optionnel
Expected investment return, an EFFECTIVE ANNUAL rate; the monthly compounding step is (1+pct/100)^(1/12)-1. Decimal from 0 to 30. Optional; defaults to the cited long-run S&P 500 nominal return, about 10%, when omitted.term_months_remaining· integer|null · optionnel
Months remaining on the debt. Integer, greater than 0. Required for non-credit-card debt types; optional for credit_card.investment_tax_advantaged· boolean|null · optionnel
Whether the investments sit in a tax-advantaged account, e.g. 401k or IRA. Optional; defaults to false. When true, no after-tax comparison is computed: withdrawal tax depends on the account type, which this tool does not model.investment_volatility_pct· number|null · optionnel
Investment volatility. Decimal. Optional; adds a volatility risk note when supplied.
Exemple d'appel{"name": "compare_payoff_vs_invest", "arguments": {"debt_type": "credit_card", "debt_apr_pct": 1, "debt_balance": 1, "extra_monthly": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_rent_vs_buy≈ 3174 tokens
Calculation, not advice. Verify with a professional before acting. Deterministic rent-vs-buy decision model. Given a home price, monthly rent, and mortgage rate, computes the breakeven month (when BUY net worth first equals or exceeds RENT net worth), per-horizon net-worth comparison (years 5, 10, 30 + user horizon), and the full year-by-year cost/wealth series for both paths. Includes carrying costs (property tax, insurance, maintenance, PMI, HOA) on the BUY path and opportunity-cost investing on the RENT path. Optional federal tax benefit model (Tier-3: apply_tax_benefit=true) with the statute's year-by-year SALT cap schedule (advancing with the horizon, not frozen at tax_year), mortgage interest deduction, PMI deductibility, and marginal-excess formula. All assumptions cite primary sources (FHFA, BLS, Harvard JCHS, IRS Pub 936, OBBBA Pub. L. 119-21) and can be overridden. Pick this for the buy-vs-rent tenure decision; pick `compare_mortgage_terms` when you are already buying and comparing two mortgage structures, `compare_payoff_strategies` to order credit-card payoff, and `compare_payoff_vs_invest` to weigh extra debt payments against investing. HEAVY tool: use output='summary' (default) for scalar headline or output='inline' for chart series.
Paramètres, retour & exemple (33)
Paramètresoutput· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. 'summary' returns headline scalars and per-horizon snapshots with the heavy series stripped. 'inline' returns the full payload including yearly_series[] and monthly_series[] for chart rendering.pmi_pct· number|null · optionnel
Annual PMI rate as a percentage of the loan. Decimal from 0 to 5. Optional; defaults to 0.5% when omitted. The removal threshold is set by pmi_removal_ltv_pct. Models borrower-paid PMI on a conventional loan; FHA, VA and USDA mortgage insurance is not modeled.tax_year· integer|null · optionnel
Tax year for year 1 of the horizon: 2025 or 2026. Integer. Required when apply_tax_benefit is true; otherwise not used. Horizon year y uses tax year (tax_year + y - 1) on both the tax benefit and the sale-side capital-gains tax; the SALT cap follows the statute's own schedule for that year, and every other indexed amount holds at its last-loaded table value beyond it.charitable· number|null · optionnel
Charitable contributions. Decimal from 0 to 1,000,000,000; TY2026 and later apply a 0.5%-of-AGI floor per OBBBA §70425. Only used when apply_tax_benefit is true. Optional; defaults to 0 when omitted.home_price· number · requis
Home purchase price. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default.pmi_annual· number|null · optionnel
Annual PMI premium in dollars while PMI is active. Decimal from 0 to 1,000,000,000. Only used when apply_tax_benefit is true. Optional; when omitted it is derived from pmi_pct and the original loan amount.real_terms· boolean|null · optionnel
Whether to deflate the output series to a real-terms view. Optional; defaults to false when omitted.blind_count· integer|null · optionnel
Number of blind filers, each adding the additional standard deduction. Integer from 0 to 2. Only used when apply_tax_benefit is true. Optional; defaults to 0 when omitted.chart_title· string|null · optionnel
Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.hoa_monthly· number|null · optionnel
Monthly HOA dues on the BUY path. Decimal from 0 to 1,000,000,000. Optional; defaults to 0 when omitted.monthly_rent· number · requis
Monthly rent on the RENT path. Decimal from 0 to 1,000,000,000; 0 is valid (a free-housing baseline). REQUIRED, no default.filing_status· string|null · optionnel
Tax filing status: 'Single', 'MFJ', 'MFS' or 'HoH'. Required when apply_tax_benefit is true; otherwise not used.horizon_years· integer|null · optionnel
Projection horizon in years. Integer from 1 to 40. Optional; when omitted, the response returns snapshots at years 5, 10 and 30.inflation_pct· number|null · optionnel
Inflation as a percentage, for the real_terms toggle. Decimal, at least 0 and less than 100. Optional; when omitted, a nominal run uses 2.5%, and a real_terms run uses the horizon-based default: 2.0% for a horizon of 7 years or less, 2.6% for 8 to 19 years, 2.5% for 20 years or more.sell_side_pct· number|null · optionnel
Sell-side transaction cost as a percentage of the sale price. Decimal from 0 to 25. Optional; defaults to the cited 7.5% (Redfin post-NAR) when omitted; override for your market.maintenance_pct· number|null · optionnel
Annual maintenance as a percentage of home value. Decimal from 0 to 20. Optional; defaults to the cited 1.5% (Harvard JCHS) when omitted; override for your market.rent_growth_pct· number|null · optionnel
Annual rent escalation as a percentage. Decimal from -50 to 50. Optional; defaults to the cited 3.4% (BLS CPI ROPR) when omitted; override for your market.state_local_tax· number|null · optionnel
State and local tax paid (state income or sales tax), for the SALT cap. Decimal from 0 to 1,000,000,000. Only used when apply_tax_benefit is true. Optional; defaults to 0 when omitted.down_payment_pct· number|null · optionnel
Down payment as a percentage of the home price. Decimal from 0 to 100; 0 is valid (zero-down programs). Optional; defaults to 20% when omitted.loan_term_months· integer|null · optionnel
Mortgage term in months. Integer from 1 to 480. Optional; defaults to 360 (a 30-year fixed) when omitted.other_itemizable· number|null · optionnel
Other itemizable deductions, such as medical expenses above 7.5% of AGI or casualty losses. Decimal from 0 to 1,000,000,000. Only used when apply_tax_benefit is true. Optional; defaults to 0 when omitted.property_tax_pct· number|null · optionnel
Annual property tax as a percentage of home value. Decimal from 0 to 10. Optional; defaults to 0.88% when omitted; override for your market.age_65_plus_count· integer|null · optionnel
Number of filers aged 65 or older, each adding the additional standard deduction. Integer from 0 to 2. Only used when apply_tax_benefit is true. Optional; defaults to 0 when omitted.apply_tax_benefit· boolean|null · optionnel
Whether to apply the federal tax benefit model (SALT cap following the statute's year-by-year schedule, mortgage interest deduction, PMI deductibility). When true, filing_status, tax_year and annual_gross_income are required. Optional; defaults to false when omitted. The §121 home-sale gain exclusion applies only at sale points 24 months or more after purchase (IRC §121(a) 2-of-5-year test); year 1 of yearly_series, months 1-23 in monthly_series, and any horizon under 24 months use no exclusion. Separately, IRC §1222(3) makes a holding period of 12 months or less short-term, taxed at ordinary rates instead of the long-term rates otherwise applied, on the home-sale gain and the renter's portfolio gain alike (24 months vs. 12 months are two different thresholds); this tool applies that split exactly to the home-sale gain, and to the renter's portfolio at annual grain: prior years' contributions are compounded together as one long-term lot rather than aged individually, so months inside a year understate short-term gain.mortgage_rate_pct· number · requis
Mortgage annual rate as a percentage, e.g. 6.75 for 6.75%. Decimal, greater than 0 and at most 100. Never cached; provide the current rate. REQUIRED, no default.home_insurance_pct· number|null · optionnel
Annual home insurance as a percentage of home value. Decimal from 0 to 15. Optional; defaults to 0.65% when omitted; override for your market.annual_gross_income· number|null · optionnel
Annual gross income, the MAGI proxy for the bracket and the SALT cap. Decimal from 0 to 1,000,000,000. Required when apply_tax_benefit is true; otherwise not used.pmi_removal_ltv_pct· number|null · optionnel
Loan-balance trigger for PMI removal, as a percentage loan-to-value. Decimal from 50 to 100. Optional; omitted, it is the 78% HPA automatic-termination threshold; provided (e.g. 80), it is whichever of 78% or your value is reached first. The rejection guard applies only when down_payment_pct is below 20 and the resolved pmi_pct is above 0, the range where PMI applies: there, a value at or above the loan's own initial LTV is rejected, because the requested removal point would already be met at the first payment, so no PMI would be modeled for any month of the loan. A value just below the initial LTV can also be reached by the first payment; then no month charges PMI either. When the resolved pmi_pct is 0, or down_payment_pct is 20 or more, no such check runs, whatever the LTV. Either way PMI also stops at the statutory amortization midpoint of the original term (12 U.S.C. §4901(7), §4902(c)), which this value cannot postpone. Models borrower-paid PMI on a conventional loan; FHA, VA and USDA mortgage insurance is not modeled.purchase_year_points· number|null · optionnel
Discount points paid at origination, as a percentage of the loan. Decimal from 0 to 4. Counted as cash paid at closing on every call. When apply_tax_benefit is true they are also deducted in year 1, assuming the IRS Pub 936 tests for a first-year deduction are met (main home bought with the loan, points customary and not above the local norm, cash method, not paid in place of separately listed fees, paid with your own money at or before closing, figured as a percentage of the loan and shown as points on the settlement statement), and only for the share the mortgage interest gets: the acquisition-debt limit divided by the year-1 average loan balance, when that is below 1. mortgage_rate_pct must already be the rate these points buy. Optional; defaults to 0 when omitted.home_appreciation_pct· number|null · optionnel
Annual home price appreciation as a percentage. Decimal from -50 to 50. Optional; defaults to the cited 4.25% (FHFA HPI) when omitted; override for your market.investment_return_pct· number|null · optionnel
RENT path annual return as a percentage, an EFFECTIVE ANNUAL rate; the monthly compounding step is (1+pct/100)^(1/12)-1. Decimal from -50 to 30. Optional; defaults to 10.0% when omitted.loan_origination_date· string|null · optionnel
Mortgage origination date, YYYY-MM-DD. Selects the mortgage interest deduction cap: on or before 2017-12-15 the $1M cap, after it the $750k cap (Single and MFJ; MFS caps are half). Only used when apply_tax_benefit is true. Optional; omitting it uses the post-2017 cap.basis_capitalizable_pct_override· number|null · optionnel
Percentage of the buy-side closing cost that is capitalizable into the §121 adjusted basis (IRS Pub 523 split: abstract fees, title search, recording fees, survey fees, transfer taxes, owner's title insurance). Decimal from 0 to 100; 0 means a HomePrice-only basis, 100 means the full closing cost is in basis. Optional; defaults to 50% (Senaro deterministic midpoint) when omitted. Supply your actual HUD-1 split when available.
Exemple d'appel{"name": "compare_rent_vs_buy", "arguments": {"home_price": 1, "monthly_rent": 1, "mortgage_rate_pct": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_defaults≈ 616 tokens
Calculation, not advice. Verify with a professional before acting. Returns named default values used by Senaro Finance tools with source citations. Use before calling other tools to understand what assumptions apply automatically. This tool does not accept an 'output' parameter; it always returns inline JSON. JSON parameters (all optional): - category: string. Filter entries by category: the canonical MCP tool name that consumes the default, or "shared" for a default consumed by two or more tools (or not yet wired to a specific tool). Case-insensitive. The 14 valid values: calculate_cc_payoff, calculate_compound_interest, calculate_debt_to_income, calculate_emergency_fund, calculate_opportunity_cost, calculate_refi_breakeven, calculate_runway, compare_debt_consolidation, compare_mortgage_terms, compare_payoff_strategies, compare_payoff_vs_invest, compare_rent_vs_buy, optimize_401k_match, shared. An unrecognized value returns validation_error listing the accepted set. - name: string. Return one full entry. Requires category. Returns validation_error if not found. - verbose: boolean. Return all 10 citation fields per entry instead of just category+name. Ignored when name is also present (single entry always includes all fields). Omit category to get the full verbose catalog. Default (no args): index mode. Every entry with just category and name fields (~20 KB).
Paramètres, retour & exemple (3)
Paramètresname· string|null · optionnel
Optional: return one full entry. Requires category. Returns validation_error if not found.verbose· boolean · optionnel
Optional: return all 10 citation fields per entry instead of just category+name.category· string|null · optionnel
Optional: filter entries by category, the canonical MCP tool name (e.g. "compare_rent_vs_buy") or "shared". Case-insensitive.
Exemple d'appel{"name": "list_defaults", "arguments": {"name": "texte", "verbose": true, "category": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - optimize_401k_match≈ 1138 tokens
Calculation, not advice. Verify with a professional before acting. Deterministic 401(k) employer-match optimizer. Given your annual salary, pay frequency, current contribution percent, and your employer's match formula (as a named preset or a custom tier list), computes: - the annual match you receive today; - the maximum match available (full match entitlement); - the match forfeited at your current rate; - the minimum contribution percent to receive the full match; - whether front-loading contributions would forfeit match at a no-true-up plan; and - a per-period schedule showing level vs. front-load paths side by side. Pick this to size 401(k) contributions against the employer match formula; pick `compare_payoff_vs_invest` when the question is putting an extra monthly amount toward a debt versus investing it (that tool takes no employer-match input), not how much of the match to receive. IRS limits (402(g) elective deferral, 401(a)(17) compensation cap, 415(c) annual additions) are applied and cited in provenance. Catch-up contribution ceilings for ages 50+ and 60-63 (SECURE 2.0) are computed when participant_age is provided; when a catch-up allowance applies, applied_caps[].cap_name reads '402(g) elective deferral plus 414(v) catch-up' and limit_value carries the combined ceiling, not the bare 402(g) amount. HEAVY tool: use output='summary' (default) for the headline scalars or output='inline' for the full per-period schedule.
Paramètres, retour & exemple (9)
Paramètresoutput· string|null · optionnel · summary | inline | None
Valid values: 'summary' (default), 'inline'. Response envelope. 'summary': headline scalars, period_schedule stripped. 'inline': full payload including period_schedule[].chart_title· string|null · optionnel
Override for the chart title. Reserved for the chart pipeline. Must not contain em-dashes or en-dashes. Max 120 characters. Optional.has_true_up· boolean|null · optionnel
Whether the plan provides an annual true-up. false is the conservative assumption: surfaces front-loading forfeiture risk. Optional; defaults to false when omitted.match_tiers· array|null · optionnel
Custom match-formula tier list. Example: [{"match_frac": 1.0, "up_to_deferral_pct": 3}, {"match_frac": 0.5, "up_to_deferral_pct": 2}] = safe_harbor_basic. Exactly one of match_preset or match_tiers is required. Optional; omit when supplying match_preset.match_preset· string|null · optionnel · safe_harbor_basic | safe_harbor_enhanced_simple | qaca | fifty_pct_of_first_six_pct | None
Named match-formula preset: 'safe_harbor_basic' (100% of first 3% + 50% of next 2%), 'safe_harbor_enhanced_simple' (100% of first 4%), 'qaca' (100% of first 1% + 50% of next 5%), 'fifty_pct_of_first_six_pct' (50% of first 6%). Exactly one of match_preset or match_tiers is required. Optional; omit when supplying match_tiers.annual_salary· number · requis
Annual gross salary. Decimal > 0. REQUIRED, no default.participant_age· integer|null · optionnel
Determines which catch-up limit applies (age 50+, or age 60-63 SECURE 2.0 super catch-up). Integer >= 0. Optional; omit when age is unknown or participant is under 50.contribution_pct· number · requis
Current employee contribution as a percent of gross pay. Decimal in [0, 100]. REQUIRED, no default.pay_periods_per_year· integer · requis
Pay periods per year (12=monthly, 24=semi-monthly, 26=biweekly, 52=weekly). Integer in [1, 365]. REQUIRED, no default.
Exemple d'appel{"name": "optimize_401k_match", "arguments": {"annual_salary": 1, "contribution_pct": 1, "pay_periods_per_year": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - server_info≈ 190 tokens
Calculation, not advice. Verify with a professional before acting. Returns metadata about the running Senaro MCP server: version, contract version, build commit, build timestamp, and the full list of supported tools. Call this once per session before drafting any content to verify the running process is not stale after a deploy. Idempotent, no side effects, < 50 ms. If server_version is below the minimum required by your skill, STOP and ask the user to restart Claude Desktop.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "server_info", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».