Apartment building value and loan-supported price at the live 10-year Treasury rate.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The latest 5-, 7- and 10-year Treasury par yields and overnight SOFR the site has, each with its as-of date, the readings a week and a month earlier when the daily feed has them, and publisher link; plus the loan limits the worksheet uses (80% max LTV, 1.25x min DSCR from the Fannie Mae and Freddie Mac term sheets) and the spread note.
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http multifamily-forsale https://multifamily.forsale/mcp
The latest 5-, 7- and 10-year Treasury par yields and overnight SOFR the site has, each with its as-of date, the readings a week and a month earlier when the daily feed has them, and publisher link; plus the loan limits the worksheet uses (80% max LTV, 1.25x min DSCR from the Fannie Mae and Freddie Mac term sheets) and the spread note.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}For an apartment building's net operating income, the price a financed buyer can carry and the income-limited loan size at a ladder of 10-year Treasury levels around today's (default -100 to +100 bp), at 80% LTV and 1.25x DSCR by default. Answers "what is my building worth to a buyer if rates drop half a point?".
| Argument | Type | Description |
|---|---|---|
| dscr | number | Min debt service coverage, times. Default 1.25 (both agencies' term sheets). |
| ltv_pct | number | Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets). |
| shifts_bp | array | Moves in the 10-year to test, in basis points. Default [-100,-50,-25,0,25,50,100]. |
| tax_reset | boolean | True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price. |
| noi_annual* | number | Net operating income per year in US dollars, e.g. 300000. |
| spread_pct | number | Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote). |
| tax_rate_pct | number | Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true. |
| treasury_10yr_pct | number | 10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury). |
| amortization_years | integer | Amortization in years. Default 30. |
| property_taxes_annual | number | Current property taxes inside that NOI, US dollars. Needed only with tax_reset. |
{
"type": "object",
"required": [
"noi_annual"
],
"properties": {
"dscr": {
"type": "number",
"default": 1.25,
"maximum": 3,
"minimum": 1,
"description": "Min debt service coverage, times. Default 1.25 (both agencies' term sheets)."
},
"ltv_pct": {
"type": "number",
"default": 80,
"maximum": 100,
"minimum": 1,
"description": "Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets)."
},
"shifts_bp": {
"type": "array",
"items": {
"type": "integer",
"maximum": 300,
"minimum": -300
},
"maxItems": 13,
"minItems": 1,
"description": "Moves in the 10-year to test, in basis points. Default [-100,-50,-25,0,25,50,100]."
},
"tax_reset": {
"type": "boolean",
"default": false,
"description": "True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price."
},
"noi_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Net operating income per year in US dollars, e.g. 300000."
},
"spread_pct": {
"type": "number",
"default": 1.75,
"maximum": 10,
"minimum": 0,
"description": "Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote)."
},
"tax_rate_pct": {
"type": "number",
"default": 1.5,
"maximum": 10,
"minimum": 0,
"description": "Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true."
},
"treasury_10yr_pct": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury)."
},
"amortization_years": {
"type": "integer",
"default": 30,
"maximum": 40,
"minimum": 5,
"description": "Amortization in years. Default 30."
},
"property_taxes_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Current property taxes inside that NOI, US dollars. Needed only with tax_reset."
}
},
"additionalProperties": false
}Runs the Worth Sheet valuation worksheet for a 5+ unit apartment building: from a rent roll and a year of expenses (or a known NOI) it returns NOI, expense ratio, value across your cap rate range, the price a financed buyer can carry at the latest 10-year Treasury plus a lender spread (80% LTV, 1.25x DSCR by default), per-unit value, and the refinance loan the income supports against your balance. An estimate from your numbers, not an appraisal.
| Argument | Type | Description |
|---|---|---|
| dscr | number | Min debt service coverage, times. Default 1.25 (both agencies' term sheets). |
| units | integer | Number of units, for per-unit value when you give noi_annual. |
| ltv_pct | number | Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets). |
| unit_mix | array | Rent roll by unit type, e.g. [{"units":12,"monthly_rent":1250},{"units":16,"monthly_rent":1500}]. Give this or noi_annual. |
| tax_reset | boolean | True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price. |
| noi_annual | number | Net operating income per year in US dollars, if you already know it. Give this or unit_mix (not both). |
| spread_pct |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
| number |
| Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote). |
| vacancy_pct | number | Vacancy and bad debt, percent of gross. Default 5. |
| loan_balance | number | Your current loan balance, US dollars, to compare against the refinance loan. Optional. |
| tax_rate_pct | number | Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true. |
| management_pct | number | Management, percent of collected income; charge it even if self-managed. Default 5. |
| payroll_annual | number | Payroll per year, US dollars. Default 0. |
| cap_rate_low_pct* | number | Low end of the cap rate range brokers quote for similar buildings, percent, e.g. 5.5. No government source publishes cap rates. |
| insurance_annual | number | Insurance per year, US dollars. Default 0. |
| utilities_annual | number | Owner-paid utilities per year, US dollars. Default 0. |
| cap_rate_high_pct* | number | High end of the cap rate range, percent, e.g. 7. |
| reserves_per_unit | number | Replacement reserves per unit per year, US dollars. Default 300. |
| treasury_10yr_pct | number | 10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury). |
| admin_other_annual | number | Admin, legal and other expenses per year, US dollars. Put any lump-sum expense total (excluding property taxes) here. Default 0. |
| amortization_years | integer | Amortization in years. Default 30. |
| other_income_monthly | number | Other income per month (laundry, parking, fees), US dollars. Default 0. |
| property_taxes_annual | number | Property taxes per year, US dollars. Default 0. With noi_annual, needed only for tax_reset. |
| repairs_maintenance_annual | number | Repairs, maintenance and turnover per year, US dollars. Default 0. |
{
"type": "object",
"required": [
"cap_rate_low_pct",
"cap_rate_high_pct"
],
"properties": {
"dscr": {
"type": "number",
"default": 1.25,
"maximum": 3,
"minimum": 1,
"description": "Min debt service coverage, times. Default 1.25 (both agencies' term sheets)."
},
"units": {
"type": "integer",
"maximum": 5000,
"minimum": 1,
"description": "Number of units, for per-unit value when you give noi_annual."
},
"ltv_pct": {
"type": "number",
"default": 80,
"maximum": 100,
"minimum": 1,
"description": "Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets)."
},
"unit_mix": {
"type": "array",
"items": {
"type": "object",
"required": [
"units",
"monthly_rent"
],
"properties": {
"label": {
"type": "string",
"maxLength": 40,
"description": "Optional name, e.g. \"2 bedroom\"."
},
"units": {
"type": "integer",
"maximum": 5000,
"minimum": 0
},
"monthly_rent": {
"type": "number",
"maximum": 100000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Rent roll by unit type, e.g. [{\"units\":12,\"monthly_rent\":1250},{\"units\":16,\"monthly_rent\":1500}]. Give this or noi_annual."
},
"tax_reset": {
"type": "boolean",
"default": false,
"description": "True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price."
},
"noi_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Net operating income per year in US dollars, if you already know it. Give this or unit_mix (not both)."
},
"spread_pct": {
"type": "number",
"default": 1.75,
"maximum": 10,
"minimum": 0,
"description": "Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote)."
},
"vacancy_pct": {
"type": "number",
"default": 5,
"maximum": 95,
"minimum": 0,
"description": "Vacancy and bad debt, percent of gross. Default 5."
},
"loan_balance": {
"type": "number",
"maximum": 5000000000,
"minimum": 0,
"description": "Your current loan balance, US dollars, to compare against the refinance loan. Optional."
},
"tax_rate_pct": {
"type": "number",
"default": 1.5,
"maximum": 10,
"minimum": 0,
"description": "Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true."
},
"management_pct": {
"type": "number",
"default": 5,
"maximum": 30,
"minimum": 0,
"description": "Management, percent of collected income; charge it even if self-managed. Default 5."
},
"payroll_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Payroll per year, US dollars. Default 0."
},
"cap_rate_low_pct": {
"type": "number",
"maximum": 20,
"minimum": 1,
"description": "Low end of the cap rate range brokers quote for similar buildings, percent, e.g. 5.5. No government source publishes cap rates."
},
"insurance_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Insurance per year, US dollars. Default 0."
},
"utilities_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Owner-paid utilities per year, US dollars. Default 0."
},
"cap_rate_high_pct": {
"type": "number",
"maximum": 20,
"minimum": 1,
"description": "High end of the cap rate range, percent, e.g. 7."
},
"reserves_per_unit": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Replacement reserves per unit per year, US dollars. Default 300."
},
"treasury_10yr_pct": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury)."
},
"admin_other_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Admin, legal and other expenses per year, US dollars. Put any lump-sum expense total (excluding property taxes) here. Default 0."
},
"amortization_years": {
"type": "integer",
"default": 30,
"maximum": 40,
"minimum": 5,
"description": "Amortization in years. Default 30."
},
"other_income_monthly": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Other income per month (laundry, parking, fees), US dollars. Default 0."
},
"property_taxes_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Property taxes per year, US dollars. Default 0. With noi_annual, needed only for tax_reset."
},
"repairs_maintenance_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Repairs, maintenance and turnover per year, US dollars. Default 0."
}
},
"additionalProperties": false
}