Senaro Personal Finance
REMOTE · MCP.SENARO.AI · SCANNED SEP 28
Credit card payoff, mortgages, refinancing, 401(k), rent vs buy. Every rule and default is cited.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security74
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability57
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 17938 tokens (~996/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability check failed: schema churn in the 17 days we've observed: 5 tool removals, 11 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Senaro Personal Finance MCP server?
Senaro Personal Finance is a hosted endpoint at https://mcp.senaro.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.senaro.ai
claude mcp add --transport http ai-senaro-personal-finance 'https://mcp.senaro.ai/mcp'
{
"mcpServers": {
"ai-senaro-personal-finance": {
"url": "https://mcp.senaro.ai/mcp"
}
}
} {
"servers": {
"ai-senaro-personal-finance": {
"type": "http",
"url": "https://mcp.senaro.ai/mcp"
}
}
} [mcp_servers.ai-senaro-personal-finance] url = "https://mcp.senaro.ai/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ai-senaro-personal-finance": {
"type": "remote",
"url": "https://mcp.senaro.ai/mcp",
"enabled": true
}
}
} openclaw mcp add ai-senaro-personal-finance --url 'https://mcp.senaro.ai/mcp' --transport streamable-http
mcp_servers:
ai-senaro-personal-finance:
url: "https://mcp.senaro.ai/mcp" {
"McpServers": {
"ai-senaro-personal-finance": {
"Transport": "http",
"Url": "https://mcp.senaro.ai/mcp"
}
}
} assistant mcp add ai-senaro-personal-finance -t streamable-http -u 'https://mcp.senaro.ai/mcp'
{
"mcpServers": {
"ai-senaro-personal-finance": {
"type": "http",
"url": "https://mcp.senaro.ai/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 +11
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 −11
- Judged manipulation: pass → unverified ▼ security
- Tool “calculate_debt_to_income” rewrote its description, which is the text the model reads security
- Tool “compare_rent_vs_buy” rewrote its description, which is the text the model reads security
- Schema quality: excellent → unverified ▼ functional
- Server version: 1.25.2 → 1.26.0 functional
- “calculate_debt_to_income” reworded the description of “monthly_maintenance_and_utilities” cosmetic
- “calculate_debt_to_income” reworded the description of “va_funding_fee_financed_monthly” cosmetic
- “compare_rent_vs_buy” reworded the description of “apply_tax_benefit” cosmetic
- “compare_rent_vs_buy” reworded the description of “tax_year” cosmetic
- 25 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “analyze_cash_advance” rewrote its description, which is the text the model reads security
- Tool “calculate_cc_payoff” rewrote its description, which is the text the model reads security
- Tool “calculate_compound_interest” rewrote its description, which is the text the model reads security
- Tool “calculate_loan_payoff” rewrote its description, which is the text the model reads security
- Tool “calculate_opportunity_cost” rewrote its description, which is the text the model reads security
- Tool “compare_debt_consolidation” rewrote its description, which is the text the model reads security
- Tool “compare_payoff_strategies” rewrote its description, which is the text the model reads security
- The server now declares the “prompts” capability functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- Server version: 1.25.1 → 1.25.2 functional
- Server version: 1.25.0 → 1.25.1 functional
- 24 Sept 26 0
- Tool “compare_strategies” was removed ▼ security
- Tool “compound_interest” was removed ▼ security
- Tool “payoff_vs_invest” was removed ▼ security
- Tool “refi_breakeven” was removed ▼ security
- Tool “rent_vs_buy” was removed ▼ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “analyze_pmi_removal” rewrote its description, which is the text the model reads security
- Tool “calculate_cc_payoff” rewrote its description, which is the text the model reads security
- Tool “calculate_debt_to_income” rewrote its description, which is the text the model reads security
- Tool “calculate_opportunity_cost” rewrote its description, which is the text the model reads security
- Tool “calculate_runway” rewrote its description, which is the text the model reads security
- Tool “compare_debt_consolidation” rewrote its description, which is the text the model reads security
- Tool “compare_mortgage_terms” rewrote its description, which is the text the model reads security
- Tool “list_defaults” rewrote its description, which is the text the model reads security
- Tool “optimize_401k_match” rewrote its description, which is the text the model reads security
- “calculate_cc_payoff” changed the type of “output”: string → string|null ▼ functional
- “calculate_loan_payoff” changed the type of “output”: string → string|null ▼ functional
- “calculate_runway” changed the type of “output”: string → string|null ▼ functional
- “compare_debt_consolidation” changed the type of “output”: string → string|null ▼ functional
- “optimize_401k_match” changed the type of “output”: string → string|null ▼ functional
- Server version: 1.24.1 → 1.25.0 functional
- New tool “calculate_compound_interest” functional
- New tool “calculate_refi_breakeven” functional
- New tool “compare_payoff_strategies” functional
- New tool “compare_payoff_vs_invest” functional
- New tool “compare_rent_vs_buy” functional
- “calculate_cc_payoff” reworded the description of “fixed_payments” cosmetic
- “calculate_opportunity_cost” reworded the description of “label” cosmetic
- “compare_debt_consolidation” reworded the description of “cards” cosmetic
- “list_defaults” reworded the description of “category” cosmetic
- 22 Sept 26 0
- Tool “analyze_pmi_removal” rewrote its description, which is the text the model reads security
- Tool “calculate_cc_payoff” rewrote its description, which is the text the model reads security
- Tool “calculate_debt_to_income” rewrote its description, which is the text the model reads security
- Tool “calculate_emergency_fund” rewrote its description, which is the text the model reads security
- Tool “calculate_loan_payoff” rewrote its description, which is the text the model reads security
- Tool “calculate_runway” rewrote its description, which is the text the model reads security
- Tool “compare_debt_consolidation” rewrote its description, which is the text the model reads security
- Tool “compare_mortgage_terms” rewrote its description, which is the text the model reads security
- Tool “compare_strategies” rewrote its description, which is the text the model reads security
- Tool “optimize_401k_match” rewrote its description, which is the text the model reads security
- Tool “payoff_vs_invest” rewrote its description, which is the text the model reads security
- Tool “refi_breakeven” rewrote its description, which is the text the model reads security
- Tool “rent_vs_buy” rewrote its description, which is the text the model reads security
- “calculate_cc_payoff” changed the type of “output”: string|null → string ▼ functional
- “calculate_loan_payoff” changed the type of “output”: string|null → string ▼ functional
- “calculate_runway” changed the type of “output”: string|null → string ▼ functional
- “compare_debt_consolidation” changed the type of “output”: string|null → string ▼ functional
- “compare_strategies” changed the type of “output”: string|null → string ▼ functional
- “optimize_401k_match” changed the type of “output”: string|null → string ▼ functional
- “payoff_vs_invest” changed the type of “output”: string|null → string ▼ functional
- “rent_vs_buy” changed the type of “output”: string|null → string ▼ functional
- Server version: 1.24.0 → 1.24.1 functional
- “calculate_cc_payoff” reworded the description of “output” cosmetic
- “calculate_loan_payoff” reworded the description of “output” cosmetic
- “calculate_runway” reworded the description of “output” cosmetic
- “compare_debt_consolidation” reworded the description of “extra_monthly_payment” cosmetic
- “compare_debt_consolidation” reworded the description of “output” cosmetic
- “compare_debt_consolidation” reworded the description of “windfalls” cosmetic
- “compare_mortgage_terms” reworded the description of “pmi_removal_ltv_pct” cosmetic
- “compare_strategies” reworded the description of “output” cosmetic
- “optimize_401k_match” reworded the description of “output” cosmetic
- “payoff_vs_invest” reworded the description of “output” cosmetic
- “rent_vs_buy” reworded the description of “output” cosmetic
- “rent_vs_buy” reworded the description of “pmi_removal_ltv_pct” cosmetic
- 19 Sept 26 −3
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- Stability: 0.23 → fail ▼ security
- Tool “analyze_cash_advance” rewrote its description, which is the text the model reads security
- Tool “compound_interest” rewrote its description, which is the text the model reads security
- Tool “analyze_pmi_removal” rewrote its description, which is the text the model reads security
- Tool “calculate_emergency_fund” rewrote its description, which is the text the model reads security
- Tool “calculate_opportunity_cost” rewrote its description, which is the text the model reads security
- Tool “calculate_cc_payoff” rewrote its description, which is the text the model reads security
- Tool “compare_strategies” rewrote its description, which is the text the model reads security
- “analyze_pmi_removal” added a required parameter “current_balance”, so existing callers break ▼ functional
- “rent_vs_buy” added a required parameter “home_price”, so existing callers break ▼ functional
- “compare_debt_consolidation” added a required parameter “cards”, so existing callers break ▼ functional
- “refi_breakeven” added a required parameter “new_annual_rate_pct”, so existing callers break ▼ functional
- “calculate_opportunity_cost” added a required parameter “monthly_spending”, so existing callers break ▼ functional
- “compare_mortgage_terms” added a required parameter “option_a”, so existing callers break ▼ functional
- “analyze_cash_advance” added a required parameter “cash_advance_balance”, so existing callers break ▼ functional
- “calculate_opportunity_cost” added a required parameter “years”, so existing callers break ▼ functional
- “analyze_cash_advance” added a required parameter “purchase_balance”, so existing callers break ▼ functional
- “compare_strategies” added a required parameter “cards”, so existing callers break ▼ functional
- “calculate_runway” added a required parameter “monthly_essential_expenses”, so existing callers break ▼ functional
- “analyze_cash_advance” added a required parameter “total_monthly_payment”, so existing callers break ▼ functional
- “refi_breakeven” added a required parameter “current_balance”, so existing callers break ▼ functional
- “analyze_cash_advance” added a required parameter “purchase_apr_pct”, so existing callers break ▼ functional
- “calculate_opportunity_cost” added a required parameter “annual_return_pct”, so existing callers break ▼ functional
- “compare_debt_consolidation” added a required parameter “consolidation_loan”, so existing callers break ▼ functional
- “analyze_pmi_removal” added a required parameter “annual_rate_pct”, so existing callers break ▼ functional
- “analyze_pmi_removal” added a required parameter “monthly_payment”, so existing callers break ▼ functional
- “compound_interest” added a required parameter “years”, so existing callers break ▼ functional
- “calculate_loan_payoff” added a required parameter “term_months”, so existing callers break ▼ functional
- “rent_vs_buy” added a required parameter “monthly_rent”, so existing callers break ▼ functional
- “payoff_vs_invest” added a required parameter “debt_balance”, so existing callers break ▼ functional
- “calculate_runway” added a required parameter “current_savings”, so existing callers break ▼ functional
- “optimize_401k_match” added a required parameter “annual_salary”, so existing callers break ▼ functional
- “calculate_cc_payoff” added a required parameter “cards”, so existing callers break ▼ functional
- “analyze_cash_advance” added a required parameter “cash_advance_apr_pct”, so existing callers break ▼ functional
- “payoff_vs_invest” added a required parameter “debt_type”, so existing callers break ▼ functional
- “calculate_loan_payoff” added a required parameter “annual_rate_pct”, so existing callers break ▼ functional
- “analyze_pmi_removal” added a required parameter “original_purchase_price”, so existing callers break ▼ functional
- “compound_interest” added a required parameter “annual_rate_pct”, so existing callers break ▼ functional
- “refi_breakeven” added a required parameter “current_annual_rate_pct”, so existing callers break ▼ functional
- “payoff_vs_invest” added a required parameter “extra_monthly”, so existing callers break ▼ functional
- “compound_interest” added a required parameter “principal”, so existing callers break ▼ functional
- “compare_mortgage_terms” added a required parameter “home_price”, so existing callers break ▼ functional
- “rent_vs_buy” added a required parameter “mortgage_rate_pct”, so existing callers break ▼ functional
- “calculate_emergency_fund” added a required parameter “monthly_essential_expenses”, so existing callers break ▼ functional
- “optimize_401k_match” added a required parameter “contribution_pct”, so existing callers break ▼ functional
- “optimize_401k_match” added a required parameter “pay_periods_per_year”, so existing callers break ▼ functional
- “calculate_loan_payoff” added a required parameter “principal”, so existing callers break ▼ functional
- “payoff_vs_invest” added a required parameter “debt_apr_pct”, so existing callers break ▼ functional
- “refi_breakeven” added a required parameter “remaining_term_months”, so existing callers break ▼ functional
- “compare_mortgage_terms” added a required parameter “option_b”, so existing callers break ▼ functional
- “refi_breakeven” added a required parameter “new_term_months”, so existing callers break ▼ functional
- “calculate_emergency_fund” dropped the required parameter “toolArguments” ▼ functional
- “refi_breakeven” dropped the required parameter “toolArguments” ▼ functional
- “analyze_pmi_removal” dropped the required parameter “toolArguments” ▼ functional
- “calculate_debt_to_income” dropped the required parameter “toolArguments” ▼ functional
- “optimize_401k_match” dropped the required parameter “toolArguments” ▼ functional
- “calculate_opportunity_cost” dropped the required parameter “toolArguments” ▼ functional
- “payoff_vs_invest” dropped the required parameter “toolArguments” ▼ functional
- “analyze_cash_advance” dropped the required parameter “toolArguments” ▼ functional
- “calculate_runway” dropped the required parameter “toolArguments” ▼ functional
- “compound_interest” dropped the required parameter “toolArguments” ▼ functional
- “compare_strategies” dropped the required parameter “toolArguments” ▼ functional
- “calculate_cc_payoff” dropped the required parameter “toolArguments” ▼ functional
- “compare_debt_consolidation” dropped the required parameter “toolArguments” ▼ functional
- “calculate_loan_payoff” dropped the required parameter “toolArguments” ▼ functional
- “rent_vs_buy” dropped the required parameter “toolArguments” ▼ functional
- “compare_mortgage_terms” dropped the required parameter “toolArguments” ▼ functional
- Server version: 1.23.1 → 1.24.0 functional
- “calculate_emergency_fund” added an optional parameter “current_savings” cosmetic
- “rent_vs_buy” added an optional parameter “inflation_pct” cosmetic
- “compound_interest” added an optional parameter “monthly_contribution” cosmetic
- “refi_breakeven” added an optional parameter “roll_costs_into_loan” cosmetic
- “rent_vs_buy” added an optional parameter “output” cosmetic
- “calculate_cc_payoff” added an optional parameter “per_segment” cosmetic
- “compare_mortgage_terms” added an optional parameter “hoa_monthly” cosmetic
- “rent_vs_buy” added an optional parameter “charitable” cosmetic
- “payoff_vs_invest” added an optional parameter “full_schedule” cosmetic
- “compare_debt_consolidation” added an optional parameter “output” cosmetic
- “calculate_opportunity_cost” added an optional parameter “chart_title” cosmetic
- “refi_breakeven” added an optional parameter “compute_economic_break_even” cosmetic
- “compare_debt_consolidation” added an optional parameter “full_schedule” cosmetic
- “calculate_cc_payoff” added an optional parameter “extra_monthly_payment” cosmetic
- “calculate_debt_to_income” added an optional parameter “property_tax_annual” cosmetic
- “calculate_cc_payoff” added an optional parameter “full_schedule” cosmetic
- “optimize_401k_match” added an optional parameter “match_tiers” cosmetic
- “refi_breakeven” added an optional parameter “chart_title” cosmetic
- “rent_vs_buy” added an optional parameter “home_appreciation_pct” cosmetic
- “compare_mortgage_terms” added an optional parameter “standard_deduction” cosmetic
- “calculate_cc_payoff” added an optional parameter “include_card_timeline” cosmetic
- “compare_mortgage_terms” added an optional parameter “full_schedule” cosmetic
- “calculate_debt_to_income” added an optional parameter “property_state” cosmetic
- “rent_vs_buy” added an optional parameter “age_65_plus_count” cosmetic
- “calculate_debt_to_income” added an optional parameter “annual_income” cosmetic
- “compare_mortgage_terms” added an optional parameter “invest_the_difference” cosmetic
- “refi_breakeven” added an optional parameter “closing_costs” cosmetic
- “compare_mortgage_terms” added an optional parameter “tax_year” cosmetic
- “compound_interest” added an optional parameter “compounds_per_year” cosmetic
- “optimize_401k_match” added an optional parameter “participant_age” cosmetic
- “rent_vs_buy” added an optional parameter “basis_capitalizable_pct_override” cosmetic
- “payoff_vs_invest” added an optional parameter “investment_return_pct” cosmetic
- “compare_debt_consolidation” added an optional parameter “bt_manual_transfers” cosmetic
- “calculate_cc_payoff” added an optional parameter “fixed_payments” cosmetic
- “calculate_runway” added an optional parameter “use_essential_expenses” cosmetic
- “optimize_401k_match” added an optional parameter “chart_title” cosmetic
- “payoff_vs_invest” added an optional parameter “time_horizon_years” cosmetic
- “rent_vs_buy” added an optional parameter “home_insurance_pct” cosmetic
- “compare_debt_consolidation” added an optional parameter “bt_offers” cosmetic
- “calculate_loan_payoff” added an optional parameter “chart_bucket” cosmetic
- “calculate_debt_to_income” added an optional parameter “existing_debts” cosmetic
- “compare_mortgage_terms” added an optional parameter “filing_status” cosmetic
- “compound_interest” added an optional parameter “chart_title” cosmetic
- “compare_debt_consolidation” added an optional parameter “bt_promo_months” cosmetic
- 16 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
- 14 Sept 26 +1
We did not load change detail this far back for this component, so this day may have recorded more than is shown.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://mcp.senaro.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.senaro.ai | CN=GeoTrust TLS RSA CA G1,OU=www.digicert.com,O=DigiCert Inc,C=US | 5 Aug 2026 | 5 Feb 2027 | RSA 2048 | SHA256-RSA | 4dc419cb2feb6f92f1015da67b1d274 |
| SANs: mcp.senaro.ai | ||||||
| CN=GeoTrust TLS RSA CA G1,OU=www.digicert.com,O=DigiCert Inc,C=US (CA) | CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US | 2 Nov 2017 | 2 Nov 2027 | RSA 2048 | SHA256-RSA | d07782a133fc6f9a57296e131ffd179 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.senaro.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 3799 | 8 | Verified |
| senaro.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.senaro.ai/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.senaro.ai/mcp | HTTPS enforced | 301 | https://mcp.senaro.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_cash_advance Cash Advance Analyzer ~593
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cash_advance_apr_pct | number | yes | Cash advance APR as a percentage. Decimal, greater than 0, at most 100. A cash advance always accrues interest immediately, so 0 is not a valid rate. REQUIRED, no default. |
| cash_advance_balance | number | yes | Current balance carrying the cash advance APR. Decimal, greater than 0. REQUIRED, no default. |
| cash_advance_fee_min | number|null | – | 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 | – | 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. |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| minimum_payment | number|null | – | 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(… |
| purchase_apr_pct | number | yes | Purchase APR as a percentage, e.g. 24.99 not 0.2499. Decimal from 0 to 100. REQUIRED, no default. |
| purchase_balance | number | yes | Current balance carrying the purchase APR. Decimal, at least 0. REQUIRED, no default. |
| total_monthly_payment | number | yes | Total payment applied across both balances this month. Decimal, greater than 0, at most 2 decimal places. REQUIRED, no default. |
No output schema declared.
No examples provided.
analyze_pmi_removal PMI Removal Analysis ~860
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_pmi_rate_pct | number|null | – | 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%. |
| annual_rate_pct | number | yes | Mortgage APR as a percentage. Decimal from 0 to 20. REQUIRED, no default. |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| current_balance | number | yes | Today's loan balance. Decimal, greater than 0. REQUIRED, no default. |
| current_home_value | number|null | – | 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… |
| extra_monthly_payment | number|null | – | Extra principal paid each month beyond the regular payment. Decimal, at least 0. Optional; defaults to 0 when omitted. |
| loan_age_months | integer|null | – | 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 require… |
| monthly_payment | number | yes | Current P&I monthly payment, excluding tax, insurance, and PMI. Decimal, greater than 0. REQUIRED, no default. |
| original_appraised_value | number|null | – | 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 closi… |
| original_loan_term_months | integer|null | – | 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… |
| original_purchase_price | number | yes | 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. |
No output schema declared.
No examples provided.
calculate_cc_payoff Credit Card Payoff Calculator ~1,374
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), and, separately, validation disclosures emitted as warnings[].code (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 rend…
| Name | Type | Req | Description |
|---|---|---|---|
| apply_rate_cap | boolean|null | – | Whether to cap each card's APR at the regulatory ceiling before simulating. Optional; defaults to false when omitted. |
| cards | array | yes | 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.… |
| chart_title | string|null | – | Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters. |
| extra_monthly_payment | number|null | – | Extra monthly payment in dollars, $0 to $1,000,000,000, applied on top of the required minimums. Optional; defaults to 0 when omitted. |
| fixed_payments | boolean|null | – | 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 issue… |
| full_schedule | boolean|null | – | 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 mon… |
| include_card_timeline | boolean|null | – | Whether to add the card_timeline block, a per-card view of when each card clears. Optional; defaults to false when omitted. |
| output | string|null | – | Valid values: 'summary' (default), 'inline'. summary returns a compact response with a data_preview block; inline returns the full payload. |
| per_segment | boolean|null | – | Whether each schedule row carries its per-segment breakdown. Optional; defaults to true when omitted. |
| strategy | string|null | – | 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 ca… |
| windfalls | array|null | – | 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_v… |
No output schema declared.
No examples provided.
calculate_compound_interest Compound Interest Calculator ~462
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_rate_pct | number | yes | Annual interest rate as a percentage, e.g. 7 not 0.07. Decimal from 0 to 100. REQUIRED, no default. |
| apply_default_inflation | boolean|null | – | 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… |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| compounds_per_year | integer|null | – | Compounding periods per year. Integer, greater than 0. Optional; defaults to 12 when omitted. |
| inflation_rate_pct | number|null | – | 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 w… |
| monthly_contribution | number|null | – | Additional contribution added each month. Decimal, at least 0. Optional; defaults to 0 when omitted. |
| principal | number | yes | Starting balance. Decimal, at least 0. REQUIRED, no default. |
| rate_convention | string|null | – | 'nominal' or 'real'. 'real' unconditionally suppresses the inflation overlay; use when annual_rate_pct is already inflation-adjusted. Optional; defaults to 'nominal' when omitted. |
| years | integer | yes | Time horizon in years. Integer, at least 1. REQUIRED, no default. |
No output schema declared.
No examples provided.
calculate_debt_to_income Debt-to-Income Calculator ~2,592
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 - `wh…
| Name | Type | Req | Description |
|---|---|---|---|
| additional_income | number|null | – | Additional monthly income: side income, rental income, or bonuses. Optional; defaults to 0 when omitted. Must be zero or more. |
| annual_income | number|null | – | 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. |
| existing_debts | array|null | – | 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. |
| family_size | integer|null | – | Household size for the VA residual income guideline. Supply family_size and property_state together, or neither. Optional; must be between 1 and 20. |
| gross_monthly_income | number|null | – | 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. |
| hoa_monthly | number|null | – | Monthly homeowners association dues in dollars. Optional; defaults to 0 when omitted. Must be zero or more. |
| home_insurance_annual | number|null | – | Annual home insurance in dollars. Optional; if omitted, estimated at 0.65% of the proposed home price. Must be zero or more. |
| include_what_if | boolean|null | – | 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. |
| monthly_maintenance_and_utilities | number|null | – | 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 multip… |
| monthly_taxes_and_retirement_withholding | number|null | – | 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… |
| pmi_monthly | number|null | – | 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 w… |
| property_state | string|null | – | 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)) i… |
| property_tax_annual | number|null | – | Annual property tax in dollars. Optional; if omitted, estimated at 0.88% of the proposed home price. Must be zero or more. |
| proposed_debt | object|null | – | 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 t… |
| proposed_down_payment_pct | number|null | – | 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). |
| proposed_home_price | number|null | – | 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,… |
| proposed_rate_pct | number|null | – | 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 d… |
| proposed_term_years | integer|null | – | Proposed mortgage term in years. Optional; defaults to 30 when omitted. Must be between 1 and 40. |
| transaction_purpose | string|null | – | 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% T… |
| va_funding_fee_financed_monthly | number|null | – | 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 categor… |
No output schema declared.
No examples provided.
calculate_emergency_fund Emergency Fund Calculator ~556
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.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| current_savings | number|null | – | What you have in liquid emergency-accessible savings today. Decimal from 0 to $1,000,000,000. Optional; defaults to 0 when omitted. |
| dependents | integer|null | – | Number of dependents. Integer from 0 to 20. +1 target month per dependent, capped at +3. Optional; defaults to 0 when omitted. |
| has_dual_income | boolean|null | – | When true, partner income reduces the buffer by 1 month. Optional; defaults to false when omitted. |
| job_stability | string|null | – | '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 commissi… |
| monthly_essential_expenses | number | yes | Rent/mortgage + utilities + food + insurance + minimum debt payments. NOT discretionary spending. Decimal from $0.01 to $1,000,000,000. REQUIRED, no default. |
| monthly_savings_capacity | number|null | – | 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. |
No output schema declared.
No examples provided.
calculate_loan_payoff Loan Payoff Calculator ~531
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_rate_pct | number | yes | Loan annual percentage rate, e.g. 6.5 not 0.065. Decimal from 0 to 100. REQUIRED, no default. |
| chart_bucket | string|null | – | 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… |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| extra_monthly_payment | number|null | – | Extra principal paid each month beyond the regular payment. Decimal, at least 0. Optional; defaults to 0 when omitted. |
| loan_type | string|null | – | 'personal', 'auto', 'student', or 'mortgage'. Optional; defaults to 'personal' when omitted. |
| output | string|null | – | Valid values: 'summary' (default). 'summary' returns the full payload including analysis.buckets[] inline. |
| principal | number | yes | Loan principal to amortize. Decimal, greater than 0. REQUIRED, no default. |
| term_months | integer | yes | Loan term. Integer, greater than 0. REQUIRED, no default. |
No output schema declared.
No examples provided.
calculate_opportunity_cost Opportunity Cost Calculator ~328
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_return_pct | number | yes | 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. |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| label | string|null | – | What the spending is, e.g. 'coffee' or 'streaming subscriptions'. Optional. Max 120 characters. |
| monthly_spending | number | yes | 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. |
| tax_bracket_pct | number|null | – | Tax bracket as a percentage, applied as a flat haircut to the investment gain. Decimal from 0 to 100. Optional. |
| years | integer | yes | Time horizon in years. Integer, greater than 0. REQUIRED, no default. |
No output schema declared.
No examples provided.
calculate_refi_breakeven Refinance Break-Even Analysis ~891
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 (total refinance cost divided by monthly savings, CFPB convention); - the lifetime interest delta over your remaining-term horizon; - a term-matched scenario that isolates the rate cut from a term reset; - a term-reset-trap flag (lower payment but higher lifetime interest from extending the term); and - the economic break-even (net-worth crossover) month using an equal-outflow invest-the-savings model. 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, CFPB break-even convention). Scalar output, no chart series.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_title | string|null | – | 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 | – | 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% o… |
| compute_economic_break_even | boolean|null | – | Whether to compute the economic (net-worth crossover) break-even. When false, only the cash-flow break-even and interest delta are returned, and economic_break_even reports NOT_REQUESTED. Optional; d… |
| current_annual_rate_pct | number | yes | Current loan's annual rate as a percentage, e.g. 6.5 not 0.065. Decimal from 0 to 20. REQUIRED, no default. |
| current_balance | number | yes | Outstanding principal you would refinance. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default. |
| current_monthly_payment | number|null | – | 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. |
| investment_return_pct | number|null | – | Annual return used for the economic (invest-the-savings) break-even, an EFFECTIVE ANNUAL rate; the monthly compounding step is (1+pct/100)^(1/12)-1. Decimal from 0 to 30. Optional; omitting it uses t… |
| new_annual_rate_pct | number | yes | The offered refinance rate as a percentage. Decimal from 0 to 20. REQUIRED, no default. |
| new_term_months | integer | yes | The new loan term in months. Integer from 1 to 480. REQUIRED, no default. |
| points | number|null | – | Discount points paid at closing, where 1.0 means 1% of the loan. Decimal from 0 to 4. Optional; defaults to 0 when omitted. |
| remaining_term_months | integer | yes | Months left on the current loan. Integer from 1 to 480. REQUIRED, no default. |
| roll_costs_into_loan | boolean|null | – | Whether closing costs and points are added to the new principal instead of paid upfront; cash-flow break-even then reports COSTS_ROLLED_INTO_LOAN. Optional; defaults to false when omitted. |
No output schema declared.
No examples provided.
calculate_runway Cash Runway Calculator ~638
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_inflation_rate_pct | number|null | – | 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… |
| chart_title | string|null | – | 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 | yes | 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_essential_expenses | number | yes | Monthly outflow at the chosen expense basis. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default. |
| monthly_inflows | number|null | – | 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… |
| output | string|null | – | 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 inclu… |
| use_essential_expenses | boolean|null | – | 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. |
No output schema declared.
No examples provided.
compare_debt_consolidation Debt Consolidation Comparison ~1,691
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bt_apr_pct | number|null | – | 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 thr… |
| bt_fee_pct | number|null | – | 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_balan… |
| bt_manual_transfers | array|null | – | 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 a… |
| bt_offers | array|null | – | 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_m… |
| bt_promo_months | integer|null | – | 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 b… |
| bt_regular_apr_pct | number|null | – | 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_bal… |
| bt_transfer_limit | number|null | – | 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 sim… |
| bt_transfer_strategy | string|null | – | 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_fir… |
| cards | array | yes | 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… |
| chart_title | string|null | – | Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters. |
| consolidation_loan | object | yes | 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 ob… |
| current_strategy | string|null | – | Your current payoff strategy, compared against the consolidation loan / balance-transfer alternative: 'avalanche' or 'snowball'. Optional; defaults to 'avalanche' when omitted. Case-sensitive. |
| extra_monthly_payment | number|null | – | 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 consolidatio… |
| full_schedule | boolean|null | – | Whether to return the full month-by-month amortization schedule instead of the compact default. Optional; defaults to false when omitted. |
| include_balance_transfer | boolean|null | – | 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 compa… |
| output | string|null | – | 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 conten… |
| windfalls | array|null | – | 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… |
No output schema declared.
No examples provided.
compare_mortgage_terms Mortgage Terms Comparison ~1,438
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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| closing_cost_pct | number|null | – | 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 $67… |
| down_payment_amount | number|null | – | 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. |
| down_payment_pct | number|null | – | 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, dow… |
| extra_monthly_payment | number|null | – | 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. |
| filing_status | string|null | – | Tax filing status: 'single', 'married', or 'head_of_household'. Optional; matched case-insensitively. |
| full_schedule | boolean|null | – | Whether to return the full month-by-month amortization schedule instead of the compact default. Optional; defaults to false when omitted. |
| hoa_monthly | number|null | – | 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. |
| home_insurance_annual | number|null | – | Annual home insurance in dollars. Optional; defaults to 0 when omitted. Must be zero or more. |
| home_price | number | yes | Home purchase price in dollars. Required. Must be positive and no more than $1,000,000,000. |
| invest_the_difference | boolean|null | – | 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… |
| investment_return_pct | number|null | – | 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… |
| option_a | object | yes | The first fixed-rate mortgage option to compare. Required. |
| option_b | object | yes | 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. |
| pmi_monthly | number|null | – | 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. |
| pmi_removal_ltv_pct | number|null | – | 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 reject… |
| property_tax_annual | number|null | – | Annual property tax in dollars, for true monthly cost. Optional; defaults to 0 when omitted. Must be zero or more. |
| standard_deduction | number|null | – | 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: 1610… |
| tax_bracket_pct | number|null | – | Marginal tax bracket as a percentage, 0-50. Optional; enables after-tax investment return and mortgage interest deduction analysis when supplied. The after-tax comparison credits each option's annual… |
| tax_year | integer|null | – | Tax year, 2025 or 2026, selecting the IRS standard-deduction table for the itemize-vs-standard analysis. Optional; defaults to 2026 when omitted. |
| time_horizon_years | integer|null | – | Number of years to project the invest-the-difference comparison, 1-40. Optional; defaults to the maximum of both options' term_years when omitted. |
No output schema declared.
No examples provided.
compare_payoff_strategies Payoff Strategy Comparison ~923
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…
| Name | Type | Req | Description |
|---|---|---|---|
| apply_rate_cap | boolean|null | – | Whether to cap each card's APR at the regulatory ceiling before simulating. Optional; defaults to false when omitted. |
| cards | array | yes | 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… |
| chart_title | string|null | – | Override for the chart title. Optional; must not contain an em dash or en dash. Max 120 characters. |
| extra_monthly_payment | number|null | – | Extra monthly payment in dollars, $0 to $1,000,000,000, applied on top of the required minimums. Optional; defaults to 0 when omitted. |
| output | string|null | – | Valid values: 'summary' (default), 'inline'. summary returns the headline comparison with a data_preview block; inline returns the full payload. |
No output schema declared.
No examples provided.
compare_payoff_vs_invest Debt Payoff vs. Invest ~754
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, tax implications, 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.
| Name | Type | Req | Description |
|---|---|---|---|
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| debt_apr_pct | number | yes | Debt annual percentage rate, e.g. 6.5 not 0.065. Decimal from 0 to 100. REQUIRED, no default. |
| debt_balance | number | yes | Current debt balance. Decimal, greater than 0. REQUIRED, no default. |
| debt_type | string | yes | Debt type: 'credit_card', 'auto', 'student', 'personal', or 'mortgage'. REQUIRED, no default. |
| extra_monthly | number | yes | Extra monthly amount available for debt payoff or investing, the amount in question. Decimal, greater than 0. REQUIRED, no default. |
| full_schedule | boolean|null | – | Whether to return the full month-by-month schedule. Optional; defaults to false (compact schedule) when omitted. |
| investment_return_pct | number|null | – | 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, abou… |
| investment_tax_advantaged | boolean|null | – | Whether the investment is tax-advantaged, e.g. 401k or IRA. Optional; defaults to false when omitted. |
| investment_volatility_pct | number|null | – | Investment volatility. Decimal. Optional; adds a volatility risk note when supplied. |
| minimum_payment | number|null | – | Minimum monthly payment. Decimal, at least 0. Optional; auto-calculated for amortizing loans when omitted or 0. |
| output | string|null | – | Valid values: 'summary' (default), 'inline'. 'summary' returns headline comparison scalars, milestones, and citations with monthly_schedule stripped. 'inline' returns the full payload including the m… |
| tax_bracket_pct | number|null | – | Tax bracket, e.g. 22 not 0.22. Decimal from 0 to 100. Optional; enables an after-tax comparison when supplied. |
| term_months_remaining | integer|null | – | Months remaining on the debt. Integer, greater than 0. Required for non-credit-card debt types; optional for credit_card. |
| time_horizon_years | integer|null | – | Projection horizon. Integer, greater than 0. Optional; defaults to the greater of the payoff horizon or 10 years when omitted. |
No output schema declared.
No examples provided.
compare_rent_vs_buy Rent vs. Buy Calculator ~2,511
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.
| Name | Type | Req | Description |
|---|---|---|---|
| age_65_plus_count | integer|null | – | 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. |
| annual_gross_income | number|null | – | 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. |
| apply_tax_benefit | boolean|null | – | 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_… |
| basis_capitalizable_pct_override | number|null | – | 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… |
| blind_count | integer|null | – | 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. |
| charitable | number|null | – | 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. |
| chart_title | string|null | – | Override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| down_payment_pct | number|null | – | 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. |
| filing_status | string|null | – | Tax filing status: 'Single', 'MFJ', 'MFS' or 'HoH'. Required when apply_tax_benefit is true; otherwise not used. |
| hoa_monthly | number|null | – | Monthly HOA dues on the BUY path. Decimal from 0 to 1,000,000,000. Optional; defaults to 0 when omitted. |
| home_appreciation_pct | number|null | – | 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. |
| home_insurance_pct | number|null | – | 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. |
| home_price | number | yes | Home purchase price. Decimal, greater than 0 and at most 1,000,000,000. REQUIRED, no default. |
| horizon_years | integer|null | – | 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 | – | 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%… |
| investment_return_pct | number|null | – | 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 | – | 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 app… |
| loan_term_months | integer|null | – | Mortgage term in months. Integer from 1 to 480. Optional; defaults to 360 (a 30-year fixed) when omitted. |
| maintenance_pct | number|null | – | 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. |
| monthly_rent | number | yes | Monthly rent on the RENT path. Decimal from 0 to 1,000,000,000; 0 is valid (a free-housing baseline). REQUIRED, no default. |
| mortgage_rate_pct | number | yes | 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. |
| other_itemizable | number|null | – | 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 omi… |
| output | string|null | – | 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[] a… |
| pmi_annual | number|null | – | 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 a… |
| pmi_pct | number|null | – | 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. |
| pmi_removal_ltv_pct | number|null | – | 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… |
| property_tax_pct | number|null | – | 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. |
| purchase_year_points | number|null | – | 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.… |
| real_terms | boolean|null | – | Whether to deflate the output series to a real-terms view. Optional; defaults to false when omitted. |
| rent_growth_pct | number|null | – | 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. |
| sell_side_pct | number|null | – | 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. |
| state_local_tax | number|null | – | 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. |
| tax_year | integer|null | – | 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… |
No output schema declared.
No examples provided.
list_defaults Default Assumptions Catalog ~403
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).
| Name | Type | Req | Description |
|---|---|---|---|
| category | string|null | – | Optional: filter entries by category, the canonical MCP tool name (e.g. "compare_rent_vs_buy") or "shared". Case-insensitive. |
| name | string|null | – | Optional: return one full entry. Requires category. Returns validation_error if not found. |
| verbose | boolean | – | Optional: return all 10 citation fields per entry instead of just category+name. |
No output schema declared.
No examples provided.
optimize_401k_match 401(k) Match Optimizer ~812
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.
| Name | Type | Req | Description |
|---|---|---|---|
| annual_salary | number | yes | Annual gross salary. Decimal > 0. REQUIRED, no default. |
| chart_title | string|null | – | Override for the chart title. Reserved for the chart pipeline. Must not contain em-dashes or en-dashes. Max 120 characters. Optional. |
| contribution_pct | number | yes | Current employee contribution as a percent of gross pay. Decimal in [0, 100]. REQUIRED, no default. |
| has_true_up | boolean|null | – | 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_preset | string|null | – | 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_… |
| match_tiers | array|null | – | 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 i… |
| output | string|null | – | Valid values: 'summary' (default), 'inline'. Response envelope. 'summary': headline scalars, period_schedule stripped. 'inline': full payload including period_schedule[]. |
| participant_age | integer|null | – | 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. |
| pay_periods_per_year | integer | yes | Pay periods per year (12=monthly, 24=semi-monthly, 26=biweekly, 52=weekly). Integer in [1, 365]. REQUIRED, no default. |
No output schema declared.
No examples provided.
server_info Senaro Server Info ~107
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the Senaro Personal Finance MCP server?
Senaro Personal Finance is an MCP server listed in the public MCP registry as ai.senaro/personal-finance. Credit card payoff, mortgages, refinancing, 401(k), rent vs buy. Every rule and default is cited. This page covers its hosted endpoint (https://mcp.senaro.ai/mcp).
Is the Senaro Personal Finance MCP server safe to use?
Senaro Personal Finance scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Senaro Personal Finance MCP server expose?
Senaro Personal Finance exposes 18 tools: analyze_cash_advance, analyze_pmi_removal, calculate_cc_payoff, calculate_compound_interest, calculate_debt_to_income, and 13 more. Their descriptions and schemas cost roughly 17,464 tokens of context every time the server is loaded.
Does the Senaro Personal Finance MCP server require authentication?
No. We connected to Senaro Personal Finance without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Senaro Personal Finance MCP server still maintained?
Senaro Personal Finance is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.