Endorsement Index: HUD multifamily loans
Server Details
FHA-insured apartment loans from HUD's active file, plus HUD multifamily program rules and limits.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: single-loan lookup, multi-criteria search, aggregate statistics, program policy reference, 223(f) sizing, and statutory limit calculation. The apparent overlap between program_facts, size_223f, and statutory_limit is well handled by their descriptions, distinguishing rules reference from deal sizing and component calculation.
All names use snake_case, which is consistent, but the grammatical pattern is mixed: get_loan and search_loans are verb_noun, while hud_stats, program_facts, and statutory_limit are noun phrases. The names remain readable, but they do not follow a single predictable convention.
Six tools is well scoped for a read-only HUD multifamily loan research server. Each tool covers a distinct workflow need without redundant or trivial entries.
The surface covers loan discovery, detail lookup, portfolio statistics, program rules, and 223(f) sizing plus statutory limits. Minor gaps remain, such as underwriting calculators for other HUD multifamily programs and portfolio-wide Section 8 or inspection analytics, but core workflows are well supported.
Available Tools
6 toolsget_loanGet one FHA-insured apartment loanARead-onlyIdempotentInspect
Look up one loan by its 8-digit HUD project (FHA) number: every field HUD publishes for it, plus years left, the property page URL, HUD physical inspection scores (latest and up to two prior, with release dates and REAC/NSPIRE scoring) and active Section 8 / rental assistance contracts (assisted units, expiration, latest renewal option), each with HUD as-of date and source.
| Name | Required | Description | Default |
|---|---|---|---|
| fha_number | Yes | 8-digit HUD project number, e.g. 17635050. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds useful behavior context beyond annotations: it names the returned data domains, HUD inspection scoring types, Section 8 contract details, and that results include HUD as-of dates and sources.
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 a single front-loaded sentence beginning with the action and key identifier. It is dense but every clause describes a concrete returned data category, so it is appropriately sized for a rich lookup response, though it could be easier to scan if split.
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 explaining return values, and it does so thoroughly: all HUD-published fields, years left, property URL, inspection history with scoring types, and Section 8 contracts with as-of dates and sources. Combined with complete parameter schema and read-only annotations, an agent has enough context to call and interpret the tool.
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 schema already documents fha_number as an '8-digit HUD project number, e.g. 17635050.' The description restates the same format but adds no syntax, validation, or lookup edge-case guidance beyond the schema, so the baseline of 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?
The description states a specific verb and resource: 'Look up one loan by its 8-digit HUD project (FHA) number.' It also clarifies scope as a single-loan lookup, which implicitly distinguishes it from the sibling search_loans tool, but it does not explicitly name or differentiate against siblings.
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 'Look up one loan by its 8-digit HUD project (FHA) number,' meaning the agent should use it when it already has an FHA number. However, it does not state when to prefer search_loans, nor does it include exclusions, prerequisites, or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hud_statsHUD apartment loan portfolio statisticsARead-onlyIdempotentInspect
Totals and medians for FHA-insured apartment loans in HUD's active file: loan count, units, balances, median note rate, the 12-month realized-rate benchmark, and breakdowns by program and state. Pass state or program to narrow it.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Two-letter state code. | |
| program | No |
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 the safety profile is covered. The description adds real context beyond that — the data source ('HUD's active file'), the exact metric set, and the 12-month realized-rate benchmark — but leaves the benchmark's definition and the response shape unspecified.
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 waste, metrics front-loaded and the filtering behavior appended. Every clause carries information an agent needs.
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 enumerates the returned metrics, and annotations cover the safety/mutability profile. Minor gap: the '12-month realized-rate benchmark' is named but not explained, and the default unfiltered behavior is only implied.
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 50%, but the uncovered parameter (program) is enum-constrained and self-documenting, while state carries its own two-letter-code description. The description adds the key semantic point that both are narrowing filters and that omitting them yields whole-portfolio totals.
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 concrete verb+resource: totals and medians over FHA-insured apartment loans in HUD's active file, and enumerates the specific metrics (count, units, balances, median note rate, benchmark, breakdowns). That makes clear it is an aggregate/portfolio tool rather than a record lookup, though it never names how it differs from siblings like program_facts or size_223f.
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?
'Pass state or program to narrow it' implies the tool works at portfolio level and both filters are optional, which is useful. But there is no explicit when-to-use, no when-not-to-use, and no routing to search_loans/get_loan for loan-level data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
program_factsHUD multifamily program rulesARead-onlyIdempotentInspect
Current rules for a HUD multifamily program (223f, 221d4, 223a7, 241a, 220, 231, 213): max LTV/LTC and DSCR tiers (ML 2025-03), term, MIP (0.25%/0.25%), prepayment, Davis-Bacon, fees, commercial limits, plus live counts from HUD's file. Each rule has a primary source URL. Omit program for the summary of all.
| Name | Required | Description | Default |
|---|---|---|---|
| program | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description earns credit for behavior-relevant context beyond that: rules are 'current,' cite ML 2025-03, carry a primary source URL per rule, and include live counts pulled from HUD's file — useful signals about freshness and provenance.
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 resource and its scope, then a dense but purposeful enumeration of covered rule types. The parenthetical code list and value notation are compact; no filler sentences, though it is close to list-dumping.
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 single-optional-parameter read tool with no output schema, the description discloses the returned facets (rate tiers, term, MIP, prepayment, fees, commercial limits, source URLs) and the aggregate mode. The coverage is strong; only the distinction from sibling lookups is left 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?
One optional parameter with a fully enumerated set of program codes, so the schema covers the value domain. The description still adds meaning by naming the codes inline and explaining the omit-for-all-summary semantics, which the schema does not state.
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 resource and content set: current HUD multifamily program rules, with an explicit list of programs covered and the rule domains returned (LTV/LTC, DSCR, term, MIP, prepayment, Davis-Bacon, fees, commercial limits). It is clear what the tool yields, though it does not explicitly contrast itself with siblings like statutory_limit or size_223f that also touch program parameters.
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 only usage instruction is 'Omit program for the summary of all,' which explains the optional-parameter behavior but nothing about when to pick this tool over get_loan, hud_stats, size_223f, or statutory_limit. The agent must infer the boundary from the description's content list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_loansSearch FHA-insured apartment loansARead-onlyIdempotentInspect
Search every FHA-insured apartment loan in HUD's active multifamily file by state, city, program, note rate, years left, servicer or text. Returns HUD's figures (note rate, original amount, amortized balance, maturity, holder, servicer, Section of the Act) with a property page URL. Use it to find assumable low-rate loans, loans by a servicer, or a property's FHA number.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words to match in property name, city, address, ZIP or FHA number. | |
| city | No | City, exact match (case-insensitive). | |
| sort | No | -amortized_balance | |
| lihtc | No | ||
| limit | No | ||
| state | No | Two-letter state code, e.g. TX. | |
| offset | No | ||
| program | No | ||
| max_rate | No | Maximum note rate, percent (e.g. 4 for assumable low-rate loans). | |
| min_rate | No | Minimum note rate, percent. | |
| servicer | No | Servicer name fragment, e.g. Greystone. | |
| min_units | No | ||
| max_balance | No | ||
| min_balance | No | Minimum amortized balance, US dollars. | |
| max_years_left | No | ||
| min_years_left | No | Minimum years to maturity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered; the description adds the valuable part by listing what comes back (note rate, original amount, amortized balance, maturity, holder, servicer, Section of the Act) plus a property page URL. It does not mention pagination/limit behavior or result-set size, which would complete the picture.
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 scope, then return payload, then use cases. Every clause carries information an agent needs and there is 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?
For a 16-parameter tool with no output schema, the description does the heavy lifting by enumerating returned fields and the property URL. It still leaves pagination semantics, sort behavior, the lihtc flag, and the units/balance filters unexplained, which is a real but modest gap.
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 only 50%, and the description's filter list (state, city, program, note rate, years left, servicer, text) largely restates parameters the schema already names. It adds nothing for the undocumented ones — lihtc, sort, limit, offset, min_units/max_units, max_balance — so it only partially compensates for the coverage gap.
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 and resource ('Search every FHA-insured apartment loan in HUD's active multifamily file') and enumerates the filter dimensions, which implicitly separates it from the single-record sibling get_loan. The scope word 'every' plus the data source makes the tool's remit unambiguous.
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?
Explicitly names three concrete use cases — finding assumable low-rate loans, loans by a servicer, or a property's FHA number — which tells the agent when this tool is the right pick. It stops short of exclusions or naming alternatives (e.g., 'for a single known FHA number, get_loan is cheaper').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
size_223fSize a HUD 223(f) loan (lowest of LTV, DSCR, statutory limit)ARead-onlyIdempotentInspect
Estimate maximum 223(f) proceeds as the lowest of: LTV (87% market, 90% affordable or 90%+ assisted), DSCR (1.15x market, 1.11x affordable) with debt service including the 0.25% annual MIP, the CY2026 statutory limit for the unit mix, and the cost-to-refinance or cash-out cap. Returns each test, the binding one, payment and MIP. If note_rate is omitted it uses the median note rate on 223(f) loans HUD endorsed in the last 12 months (realized history, not a quote). An estimate, not a commitment.
| Name | Required | Description | Default |
|---|---|---|---|
| noi | Yes | Annual underwritten net operating income, US dollars. | |
| value | Yes | Appraised value, US dollars. | |
| purpose | No | refinance | |
| category | No | market | |
| elevator | No | ||
| unit_mix | No | Units by bedroom count, e.g. {"0": 10, "1": 40, "2": 30, "3": 0, "4+": 0}. | |
| note_rate | No | Note rate, percent, excluding MIP. | |
| requested | No | Requested loan amount, US dollars. | |
| term_years | No | ||
| high_cost_pct | No | ||
| cost_to_refinance | No | Existing debt plus transaction costs and repairs, US dollars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds real value beyond them: it discloses the return payload (each test, the binding constraint, payment, MIP) and that an omitted note_rate falls back to a 12-month median of HUD-endorsed 223(f) loans — a realized history, not a quote. It also warns the result is an estimate, not a commitment. Minor gap: no mention of rounding/tolerance or what happens with incomplete unit_mix.
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 computation, followed by payload, fallback behavior, and the estimate caveat. Dense parenthetical enumeration of thresholds is information-bearing rather than filler, though the first sentence is long enough to slow parsing.
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 an 11-parameter, nested-object tool with no output schema, the description covers the computation, the returned fields, and the note_rate fallback — enough to call it correctly. Residual gaps are the unexplained high_cost_pct and term_years semantics.
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?
With 55% schema coverage the description does add meaning the schema lacks — category drives the LTV (87/90/90+) and DSCR (1.15/1.11) thresholds, purpose drives the cost-to-refinance/cash-out cap, and note_rate's default source is explained. But it says nothing about high_cost_pct (270–405), term_years, elevator, or requested, leaving several parameters undocumented in both places.
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 (Estimate) and resource (maximum 223(f) proceeds) and spells out the exact computation — lowest of LTV, DSCR, statutory limit, and cost-to-refinance cap. An agent can tell this apart from the sibling statutory_limit (which is only one of the four tests) and from get_loan/program_facts.
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?
Implies usage (sizing a 223(f) loan, an estimate not a commitment) and gives a fallback rule when note_rate is omitted, but never states when to prefer this over statutory_limit or hud_stats, nor prerequisites such as which inputs are mandatory vs optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statutory_limitHUD statutory per-unit limit for a unit mixBRead-onlyIdempotentInspect
Compute the CY2026 statutory mortgage limit for a unit mix: table amount per bedroom count (elevator or not) times the high cost percentage (270% standard for 2026, up to 315% project by project in High Cost Areas, 405% in Alaska, Hawaii, Guam and USVI). Also reports the ROAD to Housing Act base amounts, which are enacted but pending HUD implementation.
| Name | Required | Description | Default |
|---|---|---|---|
| program | No | 223f | |
| elevator | No | ||
| unit_mix | Yes | Units by bedroom count, e.g. {"0": 10, "1": 40, "2": 30, "3": 0, "4+": 0}. | |
| high_cost_pct | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful context: the high-cost percentage rules (270% standard, 315% for High Cost Areas, 405% for AK/HI/GU/VI) and the caveat that ROAD to Housing Act base amounts are enacted but pending implementation. This goes beyond annotations without contradiction.
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 two sentences, front-loaded with the core computation and then a caveat. It is efficient with no wasted words, though the first sentence is dense and could be split for readability.
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 should clarify return values, but it only says it 'reports' the ROAD base amounts without specifying format or structure. It also omits any program-specific behavior. Given the moderate complexity of the calculation and the low schema coverage, the definition is adequate but has clear gaps.
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 only 25% (only unit_mix is described). The description partially compensates by explaining that elevator affects table amount and that high_cost_pct is a percentage multiplier with specific standard values. However, it completely ignores the 'program' parameter (enum with six options and default 223f) and does not clarify defaults or constraints, leaving most parameters undocumented.
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 ('Compute') and resource ('CY2026 statutory mortgage limit for a unit mix'), making the tool's purpose clear. However, it does not explicitly distinguish this tool from sibling tools like size_223f or program_facts, so it falls short of the highest bar for sibling differentiation.
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 explains what the tool does but provides no explicit guidance on when to use it versus alternatives. There is no mention of prerequisites, exclusions, or which sibling tool to choose for related tasks, leaving usage entirely implied.
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.
6 tool updates
- First observed
get_loan - First observed
hud_stats - First observed
program_facts - First observed
search_loans - First observed
size_223f - First observed
statutory_limit
Related MCP Connectors
FHA multifamily program chooser and loan sizer on HUD's 2026 limits, ratios, MIP and fees.
Apartment construction loans: HUD vs bank vs fund rules, sizing, Census starts and build times.
Size an apartment loan under Fannie Mae, Freddie Mac and HUD published limits, side by side.
FHA-insured hospital loans from HUD files: search, hospital lookup, totals, Section 242 rules.
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
- AlicenseAqualityAmaintenanceMCP server for HUD housing data, enabling Fair Market Rent lookups, Section 8 income limits, and ZIP-to-county crosswalk mapping for affordable housing assessments.613 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides access to U.S. HUD datasets covering fair market rents, income limits, USPS vacancy data, public housing, homelessness counts, and CHAS housing statistics.387 npmMIT
- AlicenseAqualityCmaintenanceGives an AI assistant the post-OBBBA federal student loan rules, so it can compute monthly payments under the Repayment Assistance Plan, compare them with standard plans, look up 2026 borrowing limits, and track when SAVE, PAYE and ICR borrowers must move. Results come back as structured JSON with plain-English summaries, effective dates and cited statute or StudentAid.gov sources.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.