Skip to main content
Glama

Senaro Personal Finance

Debt-to-Income Calculator

calculate_debt_to_income
Read-onlyIdempotent

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. 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..qualification_status is a tri-state verdict ('qualifies' | 'underwriting_dependent' | 'ineligible'): 'underwriting_dependent' means the manual-underwriting baseline is exceeded but further underwriting may 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..qualifies=false does NOT by itself mean the borrower is blocked. Read qualification_status, not the bare qualifies boolean, for the real answer; qualification..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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolArgumentsYesJSON object with these parameters: gross_monthly_income: decimal > 0 (REQUIRED; OR provide annual_income instead) annual_income: decimal > 0 (alternative to gross_monthly_income; divided by 12) additional_income: decimal >= 0 (optional, default 0; side income, rental income, bonuses. Monthly.) existing_debts: array of debt objects (optional, can be empty): - name: string (optional label, e.g. 'Car Loan') - type: 'auto' | 'student' | 'credit_card' | 'personal' | 'mortgage' | 'heloc' | 'child_support' | 'other' - monthly_payment: decimal > 0 (REQUIRED per debt) - balance: decimal (optional; for payoff cost analysis in what-if scenarios) - apr_pct: decimal 0-100 as PERCENTAGE (optional) - months_remaining: int (optional; used for 10-month rule exclusion) proposed_debt: object (optional; OR use proposed_home_price instead): - name: string (optional) - type: 'auto' | 'student' | 'credit_card' | 'personal' | 'mortgage' | 'heloc' | 'child_support' | 'other' (optional, default 'mortgage') - monthly_payment: decimal > 0 (REQUIRED) - includes_tax_insurance: bool (optional, default true; if false and type is mortgage, warns that lenders use PITI) proposed_home_price: decimal > 0 (optional; auto-calculates full PITI. Cannot combine with proposed_debt.) proposed_down_payment_pct: decimal 0-99.9 as PERCENTAGE (optional, default 20) proposed_rate_pct: decimal 0-20 as PERCENTAGE (optional, default 7.0 with warning) proposed_term_years: int 1-40 (optional, default 30) property_tax_annual: decimal >= 0 (optional. For the PITI estimate, uses 0.88% national average if omitted) home_insurance_annual: decimal >= 0 (optional. Uses 0.65% national average if omitted) pmi_monthly: decimal >= 0 (optional. Auto-estimated at 0.5% of loan when LTV > 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 / new_back_end_dti. VA carries no PMI, and FHA/USDA always compute their own upfront-plus-annual mortgage insurance instead, at every LTV, never this override) hoa_monthly: decimal >= 0 (optional, default 0) include_what_if: bool (optional, default true; generate scenarios to improve DTI) transaction_purpose: 'purchase' | 'refinance' | 'streamlined_assist' (optional, default 'purchase') 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. family_size: int 1-20 (optional; must be supplied together with property_state, or neither fires) property_state: two-letter USPS state code, or 'DC'/'PR'/'GU'/'VI'/'AS'/'MP' (optional; must be supplied together with family_size) 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. monthly_taxes_and_retirement_withholding: decimal >= 0 (optional; 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.) monthly_maintenance_and_utilities: decimal >= 0 (optional; 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 of these, together with proposed_home_price and a computable family_size/ property_state above, 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 below). 38 CFR 36.4340(c)(3)'s review-waiver condition is CONJUNCTIVE: it also requires the back-end debt-to-income ratio (qualification.va.your_back_end) 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. va_funding_fee_financed_monthly: decimal >= 0 (optional; 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 -- qualification.va.your_back_end and its verdict, any what_if VA ratio, what_if.max_affordable_home.va, or the residual-income comparison above -- 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 PMI, tax, and insurance reservation itself is an EXACT closed-form solve, 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 -- mutually exclusive with VA_FUNDING_FEE_NOT_MODELED by construction, since one requires the fee omitted and the other requires it supplied.)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Although annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the description adds substantial behavioral context: it states 'Calculation, not advice,' explains tri-state qualification_status semantics, clarifies that 'underwriting_dependent' and VA/FHA/USDA disclosure-only outcomes are not final denials, and documents regulatory caveats and warning conditions. This goes well beyond the annotations.

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

Conciseness3/5

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

The description is front-loaded with purpose and core return behavior, but it is extremely long and dense, with legal citations, nested caveats, and repeated edge-case explanations. Much of the detail is relevant because there is no output schema, yet the overall size and parsing burden exceed what is ideal for quick tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the absence of an output schema, and the 100% input schema coverage, the description is complete enough for an agent to understand return values, tri-state qualification logic, warning behavior, and regulatory limitations. It fully documents the output semantics that structured fields do not cover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already provides detailed semantics for every input, including nested debt and PITI fields. The description summarizes that it accepts existing debts and an optional proposed new debt or home price, but it does not add meaningful parameter-level detail beyond what the schema already provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair: 'Calculate your debt-to-income ratio and check qualification for conventional, FHA, VA, and USDA mortgage programs.' It also names the accepted inputs and the detailed return categories, so an agent can distinguish it from generic mortgage calculators like compare_mortgage_terms or refi_breakeven.

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

Usage Guidelines3/5

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

Usage is implied by the core purpose ('Calculate your debt-to-income ratio...'), and the description notes what it accepts and returns, but it never explicitly says when to choose this tool over siblings or when not to use it. No alternatives such as compare_mortgage_terms or rent_vs_buy are named, so routing guidance is only contextual.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources