Skip to main content
Glama
theluckystrike

DSCR Loan Calculator MCP

DSCR Loan Calculator MCP

Exact DSCR loan math for AI assistants: debt service coverage ratio, max loan, rent needed, scenario comparison and amortization for rental property loans.

Hosted MCP URL (no sign-in, no token): https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Money site with the full calculators and rate pages: dscrradar.com

Tools

Tool

What it does

calculate_dscr

DSCR = qualifying rent / PITIA. Exact P&I or interest-only payment, tax, insurance, HOA and other housing costs, and the lender band (1.25+, 1.00-1.24, 0.75-0.99, under 0.75).

max_loan_for_target_dscr

Largest whole-dollar loan that keeps DSCR at or above a target. Optional purchase price and LTV cap give the minimum down payment and which limit binds.

rent_needed_for_target_dscr

Smallest monthly rent that reaches a target DSCR, plus the rent for 0.75, 1.00 and 1.25.

compare_scenarios

Up to 5 rate, down payment, term and interest-only scenarios side by side, with DSCR, band, rent minus PITIA and total interest.

amortization_summary

Monthly payment, number of payments, final payment, total interest, total paid and balance after N years. Supports an interest-only period first.

Every result has structured JSON, a one-paragraph summary, an as_of date, a source URL and a more link to the matching dscrradar.com page.

Related MCP server: SSCMFI Bond Analytics MCP Server

What it knows that your model does not

  • Cent-exact payments. Language models often get the annuity formula wrong by a few dollars, or round in the wrong place. This server uses the standard annuity formula with monthly compounding and rounds each part half up to the cent, the way a lender schedule does.

  • The real definition of PITIA (Fannie Mae Selling Guide B3-6-03): principal, interest, taxes, insurance, association dues, ground rent, special assessments.

  • Exact tier edges. A DSCR of 1.2499 is not 1.25. Tiers are decided on the exact ratio with integer math, and the 2-decimal DSCR is truncated, not rounded up.

  • Solvers. Max loan and rent needed are solved exactly against the rounded payment, not estimated.

  • How lenders actually differ. Some lenders look for 1.25, some accept 1.00, some go down to 0.75, and some offer no-ratio programs. Sources are in each result.

Install

Claude.ai custom connector, ChatGPT developer mode

Paste this URL as a custom connector. No token or sign-in.

https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Claude Code

claude mcp add --transport http dscr-loan-calculator https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Or run it locally over stdio:

claude mcp add dscr-loan-calculator -- npx -y github:theluckystrike/dscr-loan-calculator-mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "dscr-loan-calculator": {
      "command": "npx",
      "args": ["-y", "github:theluckystrike/dscr-loan-calculator-mcp"]
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "dscr-loan-calculator": { "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp" }
  }
}

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "dscr-loan-calculator": { "type": "http", "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp" }
  }
}

Test with curl

curl -s -X POST https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp \
  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate_dscr","arguments":{"monthly_rent":2500,"loan_amount":300000,"annual_rate_pct":7,"annual_property_tax":3600,"annual_insurance":1200}}}'

Example prompts

  • "Rent is $2,500, the loan is $300,000 at 7% for 30 years, taxes $3,600 a year and insurance $1,200. What is my DSCR?"

  • "What is the biggest DSCR loan I can get on a $400,000 rental that rents for $3,000, at 7.5%, if the lender wants 1.25?"

  • "How much rent do I need for a 1.25 DSCR on a $300,000 loan at 7%?"

  • "Compare 20% down at 7%, 25% down at 7.5% and 30% down interest-only at 8% on a $400,000 property renting for $3,200."

  • "Show the balance after 10 and 20 years on a $500,000 loan at 7.5%, 10 years interest-only then 20 years amortizing."

Math and rounding

  • Monthly rate = annual rate / 12. P&I = L x r / (1 - (1 + r)^-n). At 0%, P&I = L / n.

  • Interest-only payment = L x r.

  • Monthly tax and insurance = annual amount / 12.

  • Each of these is rounded half up to the cent before they are added into PITIA.

  • Qualifying rent = gross rent x (1 - vacancy), rounded half up to the cent. Vacancy defaults to 0, because many DSCR lenders use gross rent.

  • DSCR = qualifying rent / PITIA. Shown truncated to 2 decimals and as an exact ratio to 6 decimals.

  • Amortization runs month by month. Interest is rounded half up to the cent each month and the final payment clears the balance.

23 test fixtures check these numbers. The expected values come from a separate Python Decimal script (scripts/expected.py) that uses brute-force search, not from the server code.

Data sources

See DATA_SOURCES.md. In short, the PITIA definition is from the Fannie Mae Selling Guide, and the lender bands are from Griffin Funding, Defy Mortgage and LendingOne pages fetched on 2026-10-30.

Limitations

  • This is math, not a loan offer or approval. Lender minimums, rate pricing, reserve rules and LTV caps vary by lender and change often.

  • DSCR here is the residential DSCR-loan measure (rent / PITIA). Commercial lenders often use NOI / annual debt service instead. Some lenders subtract vacancy or expenses first; use vacancy_pct and monthly_other_housing to model that.

  • Some lenders qualify interest-only loans on the amortizing payment. calculate_dscr shows both when interest_only is true.

  • The server does not quote live rates. Current DSCR rate pages are on dscrradar.com.

Development

npm install
npm run build
npm test
npx wrangler deploy

src/core.ts holds the pure math. src/stdio.ts and src/worker.ts are thin entries over the same tool registry in src/tools.ts.

License

MIT

Part of the Zovo MCP collection: https://mcp.zovo.one

More data servers from the same author

Each one is free, needs no API key and has a hosted URL you can paste into Claude or ChatGPT.

server

tools

hosted URL

cups-to-grams-mcp

convert_ingredient, search_ingredients, scale_recipe, convert_oven_temperature

https://cups-to-grams-mcp.lipmichal.workers.dev/mcp

gold-price-per-gram-mcp

get_gold_price_per_gram, get_metal_prices, calculate_jewelry_value, convert_gold_units

https://gold-price-per-gram-mcp.lipmichal.workers.dev/mcp

lake-level-mcp

search_lakes, get_lake_level, get_lake_history, compare_lakes

https://lake-level-mcp.lipmichal.workers.dev/mcp

minimum-wage-mcp

get_minimum_wage, list_upcoming_increases, compare_states, annual_income_at_minimum_wage

https://minimum-wage-mcp.lipmichal.workers.dev/mcp

no-tax-on-overtime-mcp

calculate_overtime_deduction, calculate_tips_deduction, calculate_senior_deduction, estimate_tax_savings, explain_eligibility

https://no-tax-on-overtime-mcp.lipmichal.workers.dev/mcp

paycheck-calculator-mcp

calculate_take_home_pay, compare_states_take_home, salary_to_hourly, hourly_to_salary, get_federal_tax_brackets

https://paycheck-calculator-mcp.lipmichal.workers.dev/mcp

uk-income-tax-salary-mcp

calculate_uk_take_home, get_uk_tax_bands, compare_salaries, marginal_rate_at_income

https://uk-income-tax-salary-mcp.lipmichal.workers.dev/mcp

us-federal-holidays-business-days-mcp

list_federal_holidays, is_business_day, add_business_days, count_business_days, invoice_due_date

https://us-federal-holidays-business-days-mcp.lipmichal.workers.dev/mcp

The paid back-office collection (invoices, VAT, PDFs, spreadsheets) is at https://mcp.zovo.one

Available Tools

5 tools
amortization_summaryAmortization summary for a loanA
Read-onlyIdempotent
Inspect

Exact month-by-month amortization: monthly payment, number of payments, final payment, total interest, total paid and the remaining balance after chosen years. Supports an interest-only period followed by amortization over the remaining term, as many DSCR loans use. Interest is rounded half up to the cent each month, like a lender schedule.

NameRequiredDescriptionDefault
term_yearsNoAmortization term in years. Default 30.
loan_amountYesLoan amount in USD.
annual_rate_pctYesAnnual note rate in percent, e.g. 7.25. Up to 3 decimals.
balance_after_yearsNoYears after which to report the balance. Default [1, 5, 10].
interest_only_yearsNoInterest-only years at the start, e.g. 10. Default 0. Must be less than term_years.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, so the safety profile is covered. The description goes beyond them by disclosing the rounding convention ('half up to the cent each month, like a lender schedule'), the 'exact' precision stance, and the interest-only-then-amortize structure — real behavioral traits an agent cannot get from the annotations or schema.

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

Conciseness4/5

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

Three sentences, front-loaded with the primary output list, then the interest-only variant, then the rounding rule. No filler, though the first sentence is a fairly long enumeration that could be tightened slightly.

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?

For a read-only calculation tool with five fully documented parameters and no output schema, the description carries the return-value burden well by naming every figure produced. Combined with the rounding and interest-only disclosures, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so a 3 is the baseline. The description nevertheless adds meaning the schema lacks: it clarifies that balance_after_years yields the 'remaining balance after chosen years' and, more importantly, that an interest-only period is followed by amortization over the remaining term — resolving whether term_years includes the interest-only years.

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

Purpose4/5

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

The description states a concrete resource (a month-by-month loan amortization schedule) and enumerates the produced quantities: monthly payment, payment count, final payment, total interest, total paid and balance. It is clear what the tool does, but it never contrasts itself with the DSCR siblings (calculate_dscr, max_loan_for_target_dscr, rent_needed_for_target_dscr, compare_scenarios), so differentiation is left to inference from the name.

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?

There is no explicit when-to-use / when-not clause and no named alternative; usage is only implied. The phrase 'as many DSCR loans use' hints at the intended financing context, which ties it loosely to the sibling DSCR tools, but the agent must infer that this is the schedule calculator while the siblings compute ratios and thresholds.

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

calculate_dscrCalculate DSCR for a rental property loanA
Read-onlyIdempotent
Inspect

Debt service coverage ratio for a DSCR (investor) mortgage: qualifying rent / PITIA. Computes exact principal and interest with the annuity formula (monthly compounding, half-up cents) or the interest-only payment, adds tax, insurance, HOA and other housing costs per the Fannie Mae PITIA definition, and places the result in the common lender bands (1.25+, 1.00-1.24, 0.75-0.99, under 0.75) with sourced notes that minimums vary by lender. Returns JSON plus a plain summary and a dscrradar.com link.

NameRequiredDescriptionDefault
term_yearsNoAmortization term in years. Default 30.
loan_amountNoLoan amount in USD. Give this, or purchase_price plus down_payment_pct.
monthly_hoaNoMonthly HOA or association dues in USD. Default 0.
vacancy_pctNoVacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy.
monthly_rentYesGross monthly market rent in USD (lease or appraiser rent schedule).
interest_onlyNoQualify on the interest-only payment (loan x rate / 12). Default false.
purchase_priceNoPurchase price in USD. Used with down_payment_pct when loan_amount is not given.
annual_rate_pctYesAnnual note rate in percent, e.g. 7.25. Up to 3 decimals.
annual_insuranceNoAnnual hazard insurance premium in USD. Default 0, but lenders always include it.
down_payment_pctNoDown payment in percent of price, e.g. 25.
annual_property_taxNoAnnual property tax in USD. Default 0, but lenders always include it.
monthly_other_housingNoOther monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnly/idempotent/closed-world, so the safety bar is low. The description adds genuinely useful behavior beyond that: the rounding convention (half-up cents), the interest-only alternative payment path, the Fannie Mae PITIA composition, the four lender bands, and the dual JSON + plain-summary + link return. It does not describe defaults or missing-cost behavior, which matters because several cost inputs default to 0 but lenders 'always include' them.

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

Conciseness4/5

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

Front-loaded with the formula, then computation detail, then output shape — a logical order with no filler. The middle sentence is long and heavily compounded (formula, compounding, rounding, PITIA components, bands, sourcing note all in one), which costs some scannability.

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

Completeness4/5

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

With 12 parameters, no output schema, and the return format explained (JSON + summary + link), the description covers enough to call the tool correctly. The main gap is that it never says how defaults behave — e.g. whether omitted tax/insurance are silently treated as zero and how that shifts the ratio.

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 coverage is 100% and every parameter carries a description, so the schema does the heavy lifting. The description contributes only indirect semantics (what PITIA aggregates, that rent is 'qualifying' rent) without explaining params themselves, so baseline 3 applies.

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?

Names a specific verb and resource and immediately supplies the formula it implements (qualifying rent / PITIA), plus the exact computation path (annuity formula, monthly compounding) and the output shape. An agent can tell this is the core ratio calculator rather than the sibling solvers (max_loan_for_target_dscr, rent_needed_for_target_dscr) that invert the same formula.

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 input model (rent + PITIA costs in, ratio out), and the note that lender minimums vary gives context for interpreting results. However, the description never states when to call this versus the inverse siblings or compare_scenarios, and gives no exclusions or prerequisites.

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

compare_scenariosCompare DSCR loan scenariosA
Read-onlyIdempotent
Inspect

Compares 1 to 5 financing scenarios (rate, down payment, term, interest-only) on one property: loan amount, P&I, PITIA, DSCR, lender band, rent minus PITIA and total interest over the term. Names the scenario with the highest DSCR.

NameRequiredDescriptionDefault
scenariosYes1 to 5 scenarios.
monthly_hoaNoMonthly HOA or association dues in USD. Default 0.
vacancy_pctNoVacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy.
monthly_rentYesGross monthly market rent in USD.
purchase_priceYesPurchase price in USD.
annual_insuranceNoAnnual hazard insurance premium in USD. Default 0, but lenders always include it.
annual_property_taxNoAnnual property tax in USD. Default 0, but lenders always include it.
monthly_other_housingNoOther monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value by disclosing the exact computed outputs (P&I, PITIA, DSCR, lender band, rent minus PITIA, total interest) and that it ranks the best scenario — important since there is no output schema.

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

Conciseness5/5

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

Two sentences, zero filler, with the scope and inputs front-loaded and the return payload plus the 'highest DSCR' behavior in the second sentence.

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

Completeness4/5

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

With no output schema, the description appropriately spells out what comes back, and the 8-parameter input is fully documented in the schema. Minor gaps: it doesn't say how a single-scenario call behaves or whether results are returned in input order alongside the winner.

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%, including per-field defaults and examples, so the schema carries the parameter burden. The description only restates the varying dimensions (rate, down payment, term, interest-only) and adds no formatting or interpretation guidance beyond it.

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?

States a specific verb (compares) and resource (1 to 5 financing scenarios on one property) and enumerates the per-scenario levers and the computed outputs. The '1 to 5 scenarios' scope cleanly separates it from the single-scenario calculate_dscr sibling.

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 only implied: an agent can infer this is the tool for multi-scenario comparison, but the description never says when to prefer it over calculate_dscr or max_loan_for_target_dscr, nor any prerequisites such as required rent/price inputs. No exclusions or alternatives are named.

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

max_loan_for_target_dscrLargest loan that meets a target DSCRA
Read-onlyIdempotent
Inspect

Solves for the largest whole-dollar loan whose PITIA keeps the DSCR at or above a target (default 1.25), given rent, rate, term, interest-only choice, tax, insurance and HOA. Optional purchase_price and max_ltv_pct give the minimum down payment and which limit binds. Exact cents arithmetic, checked against the rounded payment.

NameRequiredDescriptionDefault
term_yearsNoAmortization term in years. Default 30.
max_ltv_pctNoOptional lender LTV cap in percent, e.g. 80. Needs purchase_price.
monthly_hoaNoMonthly HOA or association dues in USD. Default 0.
target_dscrNoTarget DSCR, e.g. 1.25 or 1.0. Default 1.25.
vacancy_pctNoVacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy.
monthly_rentYesGross monthly market rent in USD.
interest_onlyNoQualify on the interest-only payment (loan x rate / 12). Default false.
purchase_priceNoOptional purchase price in USD, to report LTV and minimum down payment.
annual_rate_pctYesAnnual note rate in percent, e.g. 7.25. Up to 3 decimals.
annual_insuranceNoAnnual hazard insurance premium in USD. Default 0, but lenders always include it.
annual_property_taxNoAnnual property tax in USD. Default 0, but lenders always include it.
monthly_other_housingNoOther monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, closed-world calculation. The description adds real behavioral context beyond that: whole-dollar loan sizing, exact cents arithmetic cross-checked against the rounded payment, and the downstream effect of purchase_price/max_ltv_pct on the binding limit. It does not mention return fields, but no destructive or auth behavior needs disclosing.

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

Conciseness4/5

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

Two sentences, front-loaded with the core purpose, no filler. The second sentence efficiently covers optional inputs and the arithmetic guarantee. Slightly dense but well-structured.

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

Completeness4/5

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

For a 12-parameter calculation with no output schema, the description conveys the key outcome (largest whole-dollar loan, minimum down payment, which limit binds) and the rounding/arithmetic behavior. It does not enumerate the full return payload (e.g., resulting DSCR, payment split), but the annotations and schema carry most remaining weight.

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 coverage is 100%, so the schema already documents all 12 parameters including defaults and bounds. The description restates the input set and highlights the default target DSCR but adds little syntax or meaning not already in the schema, and omits vacancy_pct and monthly_other_housing entirely. Baseline 3 is 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?

States a precise verb (solves for) and a specific resource (largest whole-dollar loan at or above a target DSCR), with the exact constraints (PITIA, target default 1.25). This is clearly the inverse of calculate_dscr and rent_needed_for_target_dscr without ambiguity.

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?

The description implies when to use it (finding the maximum loan size that holds DSCR) and explains the optional purchase_price/max_ltv_pct branch, but it never explicitly contrasts with calculate_dscr or the other siblings, nor states when not to use it. Usage is inferable rather than directed.

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

rent_needed_for_target_dscrRent needed to reach a target DSCRA
Read-onlyIdempotent
Inspect

Solves for the smallest monthly rent (to the cent, and rounded up to whole dollars) that reaches a target DSCR (default 1.25) for a given loan, rate, term, tax, insurance, HOA and vacancy. Also returns the rent for 0.75, 1.00 and 1.25. Rounds up, never down, so the rent always meets the target.

NameRequiredDescriptionDefault
term_yearsNoAmortization term in years. Default 30.
loan_amountNoLoan amount in USD. Give this, or purchase_price plus down_payment_pct.
monthly_hoaNoMonthly HOA or association dues in USD. Default 0.
target_dscrNoTarget DSCR, e.g. 1.25 or 1.0. Default 1.25.
vacancy_pctNoVacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy.
interest_onlyNoQualify on the interest-only payment (loan x rate / 12). Default false.
purchase_priceNoPurchase price in USD. Used with down_payment_pct when loan_amount is not given.
annual_rate_pctYesAnnual note rate in percent, e.g. 7.25. Up to 3 decimals.
annual_insuranceNoAnnual hazard insurance premium in USD. Default 0, but lenders always include it.
down_payment_pctNoDown payment in percent of price, e.g. 25.
annual_property_taxNoAnnual property tax in USD. Default 0, but lenders always include it.
monthly_other_housingNoOther monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful behavioral detail beyond that: it rounds up to whole dollars and never down so the target is always met, and it returns rents for 0.75, 1.00 and 1.25 in addition to the target rent.

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

Conciseness4/5

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

The description is front-loaded and appropriately short, stating the main result first and then the additional DSCR outputs. It has minor redundancy in saying both 'rounded up to whole dollars' and 'Rounds up, never down', but the repetition reinforces an important behavior.

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

Completeness4/5

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

For a 12-parameter calculation tool with no output schema, the description adequately explains what is computed, the default target, rounding behavior, and alternate DSCR outputs. The exact output structure is not spelled out, but the essential return semantics are clear enough for an agent to call it correctly.

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 all 12 parameters are already well documented in the schema. The description mentions the major input categories and the default target DSCR, but adds no syntax, format, or interpretation details beyond what the schema provides.

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 uses a specific verb and resource: it 'solves for the smallest monthly rent' that reaches a target DSCR, with scope defined by loan, rate, term, tax, insurance, HOA and vacancy. This clearly distinguishes it from siblings such as calculate_dscr and max_loan_for_target_dscr without needing to name them.

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?

The description implies when to use the tool by stating it solves for required rent against a target DSCR and defaults target_dscr to 1.25. However, it does not explicitly say when to choose this versus calculate_dscr or max_loan_for_target_dscr, leaving alternatives to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedamortization_summary
    • First observedcalculate_dscr
    • First observedcompare_scenarios
    • First observedmax_loan_for_target_dscr
    • First observedrent_needed_for_target_dscr

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: calculating DSCR, summarizing amortization, solving for max loan, solving for required rent, and comparing scenarios. The inverse-solving tools are differentiated by their names and descriptions, so an agent can select the right one without confusion.

Naming Consistency4/5

All names use consistent snake_case and are descriptive, but the pattern is mixed: some are verb_noun (calculate_dscr, compare_scenarios) while others are noun phrases (amortization_summary, max_loan_for_target_dscr, rent_needed_for_target_dscr). This is a minor deviation from a purely predictable convention.

Tool Count5/5

Five tools is well-scoped for a DSCR loan calculator, covering the core calculation, amortization, both target-solving directions, and scenario comparison. Each tool earns its place without redundancy.

Completeness5/5

The surface covers the key investor-mortgage workflows: DSCR computation, amortization with interest-only periods, solving for maximum loan, solving for required rent, and comparing scenarios. No obvious gaps exist for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    D
    quality
    C
    maintenance
    Provides access to RateSpot.io mortgage rate APIs, enabling AI assistants to fetch real-time mortgage rates, compare loan products, calculate payments, and access comprehensive lending information.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to perform high-precision Price and Yield calculations for fixed income securities, including institutional risk metrics, using the industry-standard SSCMFI Bond Math Engine.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to analyze rental property deals using DoorVault IDEAL Scoring v2.0, including Section 8 FMR lookup, tax deduction checklists, and rental metrics calculations.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to answer mortgage-related queries by providing tools for lender search, loan limit lookup, down-payment assistance programs, and more, with data sourced from real wholesale lenders and broker-curated intel.
    8
    4 npm
    MIT