Stackup: Fannie, Freddie and HUD multifamily loan sizing
Server Details
Size an apartment loan under Fannie Mae, Freddie Mac and HUD published limits, side by side.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
The three tools have clearly distinct roles: compare_programs performs building-specific sizing and eligibility ranking, get_program_terms returns static published program parameters, and get_treasury_yields retrieves current rate inputs. Although compare_programs and get_program_terms both involve program limits, one is a calculation and the other is a reference lookup, so an agent can select between them reliably.
All tool names follow a consistent verb_noun snake_case pattern: compare_programs, get_program_terms, and get_treasury_yields. The convention is predictable and easy to map to tool behavior.
Three tools are well-scoped for a focused multifamily loan sizing and program comparison server. Each tool has a clear purpose and there is no redundant surface area; the set is small but sufficient for the stated workflow.
The surface covers the core lifecycle: comparing programs for a building, retrieving published program terms, and obtaining current Treasury/SOFR rate inputs. Minor gaps remain, such as no tool for detailed amortization schedules or lender-specific rate quotes, but agents can work around these for the stated loan sizing purpose.
Available Tools
3 toolscompare_programsSize one apartment building under Fannie Mae, Freddie Mac and HUD loansARead-onlyIdempotentInspect
Runs the multifamily.online comparison app on one 5+ unit building: for Fannie Mae DUS and Small Loans, Freddie Mac Optigo Conventional and Conventional Small, and HUD 223(f), 221(d)(4) and 223(a)(7), returns whether it fits the published limits (or why not), max loan by LTV/LTC and by DSCR, the binding limit, estimated monthly payment incl. HUD MIP, term, and warnings, ranked by max loan. SBA, bank, CMBS, bridge and DSCR loans are listed as ineligible or unpublished.
| Name | Required | Description | Default |
|---|---|---|---|
| noi | No | Net operating income in dollars per year (projected stabilized NOI for construction). Omit and give gross_rent + operating_expenses instead to compute it. | |
| units | Yes | Number of residential units (5 or more). | |
| value | Yes | Purchase price (purchase), current value (refinance or cash-out) or total development cost (construction), in dollars. | |
| closing | No | When you need to close. | 60_to_120_days |
| purpose | Yes | What the loan is for. construction = new construction or substantial rehab. | |
| rate_pct | No | Optional all-in interest rate in percent. Replaces Treasury + spread when given. | |
| recourse | No | Whether you need a non-recourse loan. | need_non_recourse |
| gross_rent | No | Gross scheduled rent per year, used only when noi is omitted. | |
| hold_years | No | How long you plan to keep the loan or property, in years. Drives Freddie Mac term choice and prepayment warnings. Default 10. | |
| spread_pct | No | Spread over the Treasury, in percent. Default 1.75 is the site's example, not a quote; lenders do not publish spreads. | |
| stabilized | No | Whether the property is at stabilized occupancy now. | |
| fha_insured | No | Whether the current loan is already FHA-insured (needed for HUD 223(a)(7)). | |
| vacancy_pct | No | Vacancy and credit loss as a percent of rent plus other income, used only when noi is omitted. Default 5. | |
| assisted_pct | No | Percent of units under project-based rental assistance (HAP/Section 8). 90+ gets HUD's assisted limits. | |
| desired_loan | No | Loan amount you want, in dollars. 0 or omitted = the most each program allows. | |
| other_income | No | Other income per year (parking, laundry), used only when noi is omitted. | |
| property_type | No | market_rate, or affordable (rent-restricted, e.g. LIHTC). | market_rate |
| fha_years_left | No | Years left on the FHA-insured loan, for 223(a)(7). Default 25. | |
| rent_advantage | No | Affordable only: restricted rents sit below market rents (HUD calls this a rent advantage; it gets HUD's affordable limits). Default true. | |
| treasury_tenor | No | Treasury tenor the rate is built on: 5, 7 or 10 years. Default 10. | |
| current_balance | No | Current loan balance in dollars (refinance and cash-out). | |
| amortization_years | No | 0 = each program's maximum amortization (the default), or 25, 30 or 35 years for every program. | |
| operating_expenses | No | Operating expenses per year, used only when noi is omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add context beyond that — and it does, enumerating the return payload (fit/no-fit with reason, max loan by LTV/LTC and DSCR, binding constraint, payment incl. HUD MIP, term, warnings, ranked by max loan). This is valuable 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, no filler, and the program scope is front-loaded before the payoff list. The first sentence is long and clause-heavy (nested program enumerations), which slightly hurts scannability, but every element earns its place.
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 23-parameter computation tool with no output schema, the description is complete: it names the programs, the eligibility verdicts, the computed outputs, the ranking, and the excluded product types. An agent knows what it will get back and what the tool will not tell it.
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 defaults, ranges, enum meanings and conditional usage ('used only when noi is omitted'), so the schema already carries parameter meaning. The description adds no parameter-level guidance of its own beyond mentioning HUD MIP, 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?
Specific verb ('Runs the multifamily.online comparison app'), precise resource (one 5+ unit building), and explicit program scope (Fannie DUS/Small, Freddie Optigo Conventional/Small, HUD 223(f)/221(d)(4)/223(a)(7)). It also states which loan types are out of scope, so an agent can tell it apart from get_program_terms and get_treasury_yields without opening the schema.
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 makes the use case clear (size/compare one deal across agency and HUD programs) and rules out SBA, bank, CMBS, bridge and DSCR products. It does not, however, explicitly route the agent to get_program_terms or get_treasury_yields, so the sibling relationship is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_program_termsPublished terms for a multifamily loan programARead-onlyIdempotentInspect
Published limits for one multifamily loan program or all of them, as multifamily.online lists them: max LTV or LTC, minimum DSCR, term and amortization, prepayment, recourse, structure, HUD mortgage insurance where it applies, and the agency source document with its date and URL. Covers Fannie Mae DUS and Small Loans, Freddie Mac Optigo Conventional and Conventional Small, HUD 223(f), 221(d)(4), 223(a)(7), SBA, bank, CMBS, bridge and DSCR loans.
| Name | Required | Description | Default |
|---|---|---|---|
| program | No | Which program. Omit or "all" for every program. | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds meaningful context beyond that: it discloses the data provenance ('as multifamily.online lists them', 'the agency source document with its date and URL'), which tells the agent the values are third-party-sourced and dated rather than computed live. It does not discuss caching or how often the source data is refreshed.
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: the first front-loads what is returned, the second enumerates covered programs. The program list is long but functional since it tells the agent the tool's full coverage. Minor redundancy between 'all of them' and the enumerated list, but no filler.
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 usefully compensates by enumerating the returned fields, and the read-only annotations cover the safety profile. The main residual gap is the lack of routing guidance relative to compare_programs, which matters for a tool whose sibling also spans multiple programs.
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% and the single enum parameter is fully documented with its default, so the schema carries the semantic load. The description's 'one ... or all of them' merely restates the schema's default behavior and adds no new parameter meaning.
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 names a specific resource (published loan-program limits) and enumerates the exact fields returned (max LTV/LTC, min DSCR, term, amortization, prepayment, recourse, HUD insurance, source document). An agent immediately understands this is a reference-lookup tool. It stops short of distinguishing itself from the sibling compare_programs, which an agent could easily confuse with a multi-program query.
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 phrase 'for one multifamily loan program or all of them' implies the two usage modes, and the coverage list signals which loan types are in scope. However, there is no explicit when-to-use versus compare_programs or get_treasury_yields, and no stated exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_treasury_yieldsTreasury yields and SOFR behind agency multifamily ratesARead-onlyIdempotentInspect
The latest 5-, 7- and 10-year U.S. Treasury par yields and overnight SOFR that the multifamily.online app builds its example rate on, each with its as-of date, the reading a week and a month earlier when available, freshness status and the publisher link (U.S. Treasury, New York Fed).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description goes beyond them by disclosing that each value carries an as-of date, that week- and month-earlier readings appear only 'when available', and that a freshness status and publisher link are included — real signals about possibly stale data and variable presence of fields. It stops short of stating units (e.g. percent) or whether multiple entries per tenor are returned.
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?
It is a single front-loaded sentence that leads with the instrument tenors and then the metadata fields, with no filler. It is dense — the 'each with its...' clause runs long — but every element listed corresponds to a returned field, so nothing is wasted.
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?
There is no output schema, so the description carries the burden of describing the shape of the result, and it does so by enumerating series, as-of dates, prior readings, freshness and source links. Given zero parameters and full annotation coverage, this is nearly sufficient; only units/format of the yields and the precise structure of the response remain unstated.
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?
The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The description correctly implies a no-argument 'fetch latest snapshot' call by never referencing any filter or option.
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 names a specific resource (5-, 7- and 10-year Treasury par yields plus overnight SOFR) and enumerates the accompanying fields, so an agent knows exactly what this returns. It also implicitly separates itself from the program-focused siblings by being macro-rate data, though it never names compare_programs or get_program_terms to state the boundary explicitly.
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: the phrase 'that the multifamily.online app builds its example rate on' hints this is the benchmark-rate lookup to use when explaining pricing context. There is no explicit when-to-use statement, no exclusions, and no mention of the sibling tools, so the agent must infer the routing decision.
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.
3 tool updates
- First observed
compare_programs - First observed
get_program_terms - First observed
get_treasury_yields
Related MCP Connectors
Size and compare financing for 5+ unit apartment buildings: DSCR, LTV, cash-out, bridge takeout.
81FHA multifamily program chooser and loan sizer on HUD's 2026 limits, ratios, MIP and fees.
Free CRE loan sizing, DSCR stress tests, payments, closing costs and cited lending knowledge.
FHA-insured apartment loans from HUD's active file, plus HUD multifamily program rules and limits.
Related MCP Servers
- AlicenseAqualityAmaintenanceMultifamily real estate deal analysis — analyze deals, score properties, calculate max offer prices, and look up market data. Four tools for underwriting 2-200 unit apartment properties.496 npm4MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to calculate exact debt service coverage ratios, maximum loan amounts, required rent, scenario comparisons, and amortization schedules for rental property loans, returning structured results with sources and dates.50MIT
- AlicenseNot gradedqualityBmaintenanceLandlord and rental-property calculators as MCP tools: cash flow, cap rate, DSCR, Airbnb break-even occupancy, rent late fees, lease notice dates, and IRS mileage. Offline and deterministic, with no dependencies.MIT
- FlicenseNot gradedqualityDmaintenanceA headless MCP connector that lets you underwrite commercial and multifamily deals inside a Claude chat, providing exact arithmetic for NOI, valuation, debt sizing, DSCR, and returns.-
Glama MCP Gateway
Add one secure layer between your agents and this server.