Koskamo

DSCR Loan Calculator MCP

An MCP server providing exact DSCR loan calculations for AI assistants, including rent, PITIA, debt service coverage ratio, lender bands, max loan, and rent needed. It supports tools for calculating DSCR, finding max loans for target DSCR, rent needed for target DSCR, comparing up to 5 scenarios, and generating amortization summaries.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

DSCR Loan Calculator MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp
Vendor documentation

What you can do with it

  • Calculate DSCR based on qualifying rent and PITIA
  • Determine the largest loan that keeps DSCR at or above a target
  • Find the smallest rent that reaches a target DSCR
  • Compare up to 5 rate, down payment, and term scenarios side by side

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
dscr-loan-calculator-mcp 1.0.0
MCP protocol
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

5 advertised

calculate_dscr — Calculate DSCR for a rental property loan
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

calculate_dscr input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "monthly_rent",
    "annual_rate_pct"
  ],
  "properties": {
    "term_years": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Amortization term in years. Default 30."
    },
    "loan_amount": {
      "type": "number",
      "description": "Loan amount in USD. Give this, or purchase_price plus down_payment_pct.",
      "exclusiveMinimum": 0
    },
    "monthly_hoa": {
      "type": "number",
      "minimum": 0,
      "description": "Monthly HOA or association dues in USD. Default 0."
    },
    "vacancy_pct": {
      "type": "number",
      "maximum": 50,
      "minimum": 0,
      "description": "Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy."
    },
    "monthly_rent": {
      "type": "number",
      "description": "Gross monthly market rent in USD (lease or appraiser rent schedule).",
      "exclusiveMinimum": 0
    },
    "interest_only": {
      "type": "boolean",
      "description": "Qualify on the interest-only payment (loan x rate / 12). Default false."
    },
    "purchase_price": {
      "type": "number",
      "description": "Purchase price in USD. Used with down_payment_pct when loan_amount is not given.",
      "exclusiveMinimum": 0
    },
    "annual_rate_pct": {
      "type": "number",
      "maximum": 30,
      "minimum": 0,
      "description": "Annual note rate in percent, e.g. 7.25. Up to 3 decimals."
    },
    "annual_insurance": {
      "type": "number",
      "minimum": 0,
      "description": "Annual hazard insurance premium in USD. Default 0, but lenders always include it."
    },
    "down_payment_pct": {
      "type": "number",
      "maximum": 99,
      "minimum": 0,
      "description": "Down payment in percent of price, e.g. 25."
    },
    "annual_property_tax": {
      "type": "number",
      "minimum": 0,
      "description": "Annual property tax in USD. Default 0, but lenders always include it."
    },
    "monthly_other_housing": {
      "type": "number",
      "minimum": 0,
      "description": "Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0."
    }
  }
}
calculate_dscr annotations
{
  "title": "Calculate DSCR",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
max_loan_for_target_dscr — Largest loan that meets a target DSCR
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

max_loan_for_target_dscr input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "monthly_rent",
    "annual_rate_pct"
  ],
  "properties": {
    "term_years": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Amortization term in years. Default 30."
    },
    "max_ltv_pct": {
      "type": "number",
      "maximum": 100,
      "minimum": 1,
      "description": "Optional lender LTV cap in percent, e.g. 80. Needs purchase_price."
    },
    "monthly_hoa": {
      "type": "number",
      "minimum": 0,
      "description": "Monthly HOA or association dues in USD. Default 0."
    },
    "target_dscr": {
      "type": "number",
      "maximum": 3,
      "minimum": 0.5,
      "description": "Target DSCR, e.g. 1.25 or 1.0. Default 1.25."
    },
    "vacancy_pct": {
      "type": "number",
      "maximum": 50,
      "minimum": 0,
      "description": "Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy."
    },
    "monthly_rent": {
      "type": "number",
      "description": "Gross monthly market rent in USD.",
      "exclusiveMinimum": 0
    },
    "interest_only": {
      "type": "boolean",
      "description": "Qualify on the interest-only payment (loan x rate / 12). Default false."
    },
    "purchase_price": {
      "type": "number",
      "description": "Optional purchase price in USD, to report LTV and minimum down payment.",
      "exclusiveMinimum": 0
    },
    "annual_rate_pct": {
      "type": "number",
      "maximum": 30,
      "minimum": 0,
      "description": "Annual note rate in percent, e.g. 7.25. Up to 3 decimals."
    },
    "annual_insurance": {
      "type": "number",
      "minimum": 0,
      "description": "Annual hazard insurance premium in USD. Default 0, but lenders always include it."
    },
    "annual_property_tax": {
      "type": "number",
      "minimum": 0,
      "description": "Annual property tax in USD. Default 0, but lenders always include it."
    },
    "monthly_other_housing": {
      "type": "number",
      "minimum": 0,
      "description": "Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0."
    }
  }
}
max_loan_for_target_dscr annotations
{
  "title": "Max loan for target DSCR",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
rent_needed_for_target_dscr — Rent needed to reach a target DSCR
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

rent_needed_for_target_dscr input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "annual_rate_pct"
  ],
  "properties": {
    "term_years": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Amortization term in years. Default 30."
    },
    "loan_amount": {
      "type": "number",
      "description": "Loan amount in USD. Give this, or purchase_price plus down_payment_pct.",
      "exclusiveMinimum": 0
    },
    "monthly_hoa": {
      "type": "number",
      "minimum": 0,
      "description": "Monthly HOA or association dues in USD. Default 0."
    },
    "target_dscr": {
      "type": "number",
      "maximum": 3,
      "minimum": 0.5,
      "description": "Target DSCR, e.g. 1.25 or 1.0. Default 1.25."
    },
    "vacancy_pct": {
      "type": "number",
      "maximum": 50,
      "minimum": 0,
      "description": "Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy."
    },
    "interest_only": {
      "type": "boolean",
      "description": "Qualify on the interest-only payment (loan x rate / 12). Default false."
    },
    "purchase_price": {
      "type": "number",
      "description": "Purchase price in USD. Used with down_payment_pct when loan_amount is not given.",
      "exclusiveMinimum": 0
    },
    "annual_rate_pct": {
      "type": "number",
      "maximum": 30,
      "minimum": 0,
      "description": "Annual note rate in percent, e.g. 7.25. Up to 3 decimals."
    },
    "annual_insurance": {
      "type": "number",
      "minimum": 0,
      "description": "Annual hazard insurance premium in USD. Default 0, but lenders always include it."
    },
    "down_payment_pct": {
      "type": "number",
      "maximum": 99,
      "minimum": 0,
      "description": "Down payment in percent of price, e.g. 25."
    },
    "annual_property_tax": {
      "type": "number",
      "minimum": 0,
      "description": "Annual property tax in USD. Default 0, but lenders always include it."
    },
    "monthly_other_housing": {
      "type": "number",
      "minimum": 0,
      "description": "Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0."
    }
  }
}
rent_needed_for_target_dscr annotations
{
  "title": "Rent needed for target DSCR",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_scenarios — Compare DSCR loan scenarios
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

compare_scenarios input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "purchase_price",
    "monthly_rent",
    "scenarios"
  ],
  "properties": {
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "annual_rate_pct",
          "down_payment_pct"
        ],
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 60,
            "description": "Short name, e.g. \"25% down 30-yr\"."
          },
          "term_years": {
            "type": "integer",
            "maximum": 40,
            "minimum": 1,
            "description": "Amortization term in years. Default 30."
          },
          "interest_only": {
            "type": "boolean",
            "description": "Qualify on the interest-only payment (loan x rate / 12). Default false."
          },
          "annual_rate_pct": {
            "type": "number",
            "maximum": 30,
            "minimum": 0,
            "description": "Annual note rate in percent, e.g. 7.25. Up to 3 decimals."
          },
          "down_payment_pct": {
            "type": "number",
            "maximum": 99,
            "minimum": 0,
            "description": "Down payment in percent of price."
          }
        }
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "1 to 5 scenarios."
    },
    "monthly_hoa": {
      "type": "number",
      "minimum": 0,
      "description": "Monthly HOA or association dues in USD. Default 0."
    },
    "vacancy_pct": {
      "type": "number",
      "maximum": 50,
      "minimum": 0,
      "description": "Vacancy allowance in percent of gross rent. Default 0. Many lenders use gross rent with no vacancy."
    },
    "monthly_rent": {
      "type": "number",
      "description": "Gross monthly market rent in USD.",
      "exclusiveMinimum": 0
    },
    "purchase_price": {
      "type": "number",
      "description": "Purchase price in USD.",
      "exclusiveMinimum": 0
    },
    "annual_insurance": {
      "type": "number",
      "minimum": 0,
      "description": "Annual hazard insurance premium in USD. Default 0, but lenders always include it."
    },
    "annual_property_tax": {
      "type": "number",
      "minimum": 0,
      "description": "Annual property tax in USD. Default 0, but lenders always include it."
    },
    "monthly_other_housing": {
      "type": "number",
      "minimum": 0,
      "description": "Other monthly housing costs in PITIA, such as flood insurance, ground rent or special assessments. Default 0."
    }
  }
}
compare_scenarios annotations
{
  "title": "Compare DSCR scenarios",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
amortization_summary — Amortization summary for a loan
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

amortization_summary input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "loan_amount",
    "annual_rate_pct"
  ],
  "properties": {
    "term_years": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Amortization term in years. Default 30."
    },
    "loan_amount": {
      "type": "number",
      "description": "Loan amount in USD.",
      "exclusiveMinimum": 0
    },
    "annual_rate_pct": {
      "type": "number",
      "maximum": 30,
      "minimum": 0,
      "description": "Annual note rate in percent, e.g. 7.25. Up to 3 decimals."
    },
    "balance_after_years": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 40,
        "minimum": 1
      },
      "maxItems": 10,
      "description": "Years after which to report the balance. Default [1, 5, 10]."
    },
    "interest_only_years": {
      "type": "integer",
      "maximum": 39,
      "minimum": 0,
      "description": "Interest-only years at the start, e.g. 10. Default 0. Must be less than term_years."
    }
  }
}
amortization_summary annotations
{
  "title": "Amortization summary",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
615 ms
95th percentile latency
615 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 615 ms · metadata changed · 5 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http dscr-loan-calculator-mcp https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add dscr-loan-calculator-mcp --url https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable dscr-loan-calculator-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "dscr-loan-calculator-mcp": {
      "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "dscr-loan-calculator-mcp": {
      "type": "streamableHttp",
      "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start dscr-loan-calculator-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "dscr-loan-calculator-mcp": {
      "type": "http",
      "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http dscr-loan-calculator-mcp https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "dscr-loan-calculator-mcp": {
      "url": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "dscr-loan-calculator-mcp": {
      "serverUrl": "https://dscr-loan-calculator-mcp.lipmichal.workers.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like DSCR Loan Calculator MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.