DSCR Loan Calculator MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DSCR Loan Calculator MCPRent is $2,500, loan $300,000 at 7%, taxes $3,600, insurance $1,200. What's my DSCR?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| 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). |
| 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. |
| Smallest monthly rent that reaches a target DSCR, plus the rent for 0.75, 1.00 and 1.25. |
| Up to 5 rate, down payment, term and interest-only scenarios side by side, with DSCR, band, rent minus PITIA and total interest. |
| 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/mcpClaude Code
claude mcp add --transport http dscr-loan-calculator https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcpOr run it locally over stdio:
claude mcp add dscr-loan-calculator -- npx -y github:theluckystrike/dscr-loan-calculator-mcpClaude 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_pctandmonthly_other_housingto model that.Some lenders qualify interest-only loans on the amortizing payment.
calculate_dscrshows both wheninterest_onlyis 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 deploysrc/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 |
convert_ingredient, search_ingredients, scale_recipe, convert_oven_temperature |
| |
get_gold_price_per_gram, get_metal_prices, calculate_jewelry_value, convert_gold_units |
| |
search_lakes, get_lake_level, get_lake_history, compare_lakes |
| |
get_minimum_wage, list_upcoming_increases, compare_states, annual_income_at_minimum_wage |
| |
calculate_overtime_deduction, calculate_tips_deduction, calculate_senior_deduction, estimate_tax_savings, explain_eligibility |
| |
calculate_take_home_pay, compare_states_take_home, salary_to_hourly, hourly_to_salary, get_federal_tax_brackets |
| |
calculate_uk_take_home, get_uk_tax_bands, compare_salaries, marginal_rate_at_income |
| |
list_federal_holidays, is_business_day, add_business_days, count_business_days, invoice_due_date |
|
The paid back-office collection (invoices, VAT, PDFs, spreadsheets) is at https://mcp.zovo.one
Available Tools
5 toolsamortization_summaryAmortization summary for a loanARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| term_years | No | Amortization term in years. Default 30. | |
| loan_amount | Yes | Loan amount in USD. | |
| annual_rate_pct | Yes | Annual note rate in percent, e.g. 7.25. Up to 3 decimals. | |
| balance_after_years | No | Years after which to report the balance. Default [1, 5, 10]. | |
| interest_only_years | No | Interest-only years at the start, e.g. 10. Default 0. Must be less than term_years. |
TDQS
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.
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.
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.
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.
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.
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 loanARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| term_years | No | Amortization term in years. Default 30. | |
| loan_amount | No | Loan amount in USD. Give this, or purchase_price plus down_payment_pct. | |
| monthly_hoa | No | Monthly HOA or association dues in USD. Default 0. | |
| vacancy_pct | No | Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy. | |
| monthly_rent | Yes | Gross monthly market rent in USD (lease or appraiser rent schedule). | |
| interest_only | No | Qualify on the interest-only payment (loan x rate / 12). Default false. | |
| purchase_price | No | Purchase price in USD. Used with down_payment_pct when loan_amount is not given. | |
| annual_rate_pct | Yes | Annual note rate in percent, e.g. 7.25. Up to 3 decimals. | |
| annual_insurance | No | Annual hazard insurance premium in USD. Default 0, but lenders always include it. | |
| down_payment_pct | No | Down payment in percent of price, e.g. 25. | |
| annual_property_tax | No | Annual property tax in USD. Default 0, but lenders always include it. | |
| monthly_other_housing | No | Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0. |
TDQS
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.
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.
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.
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.
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.
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 scenariosARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| scenarios | Yes | 1 to 5 scenarios. | |
| monthly_hoa | No | Monthly HOA or association dues in USD. Default 0. | |
| vacancy_pct | No | Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy. | |
| monthly_rent | Yes | Gross monthly market rent in USD. | |
| purchase_price | Yes | Purchase price in USD. | |
| annual_insurance | No | Annual hazard insurance premium in USD. Default 0, but lenders always include it. | |
| annual_property_tax | No | Annual property tax in USD. Default 0, but lenders always include it. | |
| monthly_other_housing | No | Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0. |
TDQS
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.
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.
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.
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.
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.
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 DSCRARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| term_years | No | Amortization term in years. Default 30. | |
| max_ltv_pct | No | Optional lender LTV cap in percent, e.g. 80. Needs purchase_price. | |
| monthly_hoa | No | Monthly HOA or association dues in USD. Default 0. | |
| target_dscr | No | Target DSCR, e.g. 1.25 or 1.0. Default 1.25. | |
| vacancy_pct | No | Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy. | |
| monthly_rent | Yes | Gross monthly market rent in USD. | |
| interest_only | No | Qualify on the interest-only payment (loan x rate / 12). Default false. | |
| purchase_price | No | Optional purchase price in USD, to report LTV and minimum down payment. | |
| annual_rate_pct | Yes | Annual note rate in percent, e.g. 7.25. Up to 3 decimals. | |
| annual_insurance | No | Annual hazard insurance premium in USD. Default 0, but lenders always include it. | |
| annual_property_tax | No | Annual property tax in USD. Default 0, but lenders always include it. | |
| monthly_other_housing | No | Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0. |
TDQS
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.
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.
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.
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.
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.
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 DSCRARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| term_years | No | Amortization term in years. Default 30. | |
| loan_amount | No | Loan amount in USD. Give this, or purchase_price plus down_payment_pct. | |
| monthly_hoa | No | Monthly HOA or association dues in USD. Default 0. | |
| target_dscr | No | Target DSCR, e.g. 1.25 or 1.0. Default 1.25. | |
| vacancy_pct | No | Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy. | |
| interest_only | No | Qualify on the interest-only payment (loan x rate / 12). Default false. | |
| purchase_price | No | Purchase price in USD. Used with down_payment_pct when loan_amount is not given. | |
| annual_rate_pct | Yes | Annual note rate in percent, e.g. 7.25. Up to 3 decimals. | |
| annual_insurance | No | Annual hazard insurance premium in USD. Default 0, but lenders always include it. | |
| down_payment_pct | No | Down payment in percent of price, e.g. 25. | |
| annual_property_tax | No | Annual property tax in USD. Default 0, but lenders always include it. | |
| monthly_other_housing | No | Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0. |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- First observed
amortization_summary - First observed
calculate_dscr - First observed
compare_scenarios - First observed
max_loan_for_target_dscr - First observed
rent_needed_for_target_dscr
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Loan & mortgage calculator, compound interest, ROI, crypto prices, FX conversion for AI agents.
Free CRE loan sizing, DSCR stress tests, payments, closing costs and cited lending knowledge.
Current US rental market data for AI agents: 1,500+ submarkets, monthly rent + vacancy + trends.
Related MCP Servers
- AlicenseDqualityCmaintenanceProvides 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.7MIT

SSCMFI Bond Analytics MCPofficial
FlicenseNot gradedqualityDmaintenanceEnables 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.-- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseAqualityBmaintenanceEnables 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.84 npmMIT