For AI agents and developers

Use HUD's apartment loan data from code or an AI agent

Everything on Endorsement Index is open to software: a read-only JSON API, a remote MCP server, an OpenAPI spec, Markdown copies of the guides and full downloads. No key, no sign-up. The loan data is HUD's active insured multifamily file (11,602 apartment loans, as of September 30, 2026).

At a glance

WhatWhere
MCP server (Streamable HTTP, no auth)https://hudmultifamily.loan/mcp
JSON API v1https://hudmultifamily.loan/api/v1/
OpenAPI 3.1 spechttps://hudmultifamily.loan/openapi.json
Site map for language models/llms.txt and /llms-full.txt
Markdown copy of a guideAdd .md to the path: /programs/223f.md
Bulk download (CSV, JSON)About the data

MCP server

Point any MCP client at https://hudmultifamily.loan/mcp. It speaks the current MCP revision (2026-07-28, with server/discover) and the earlier initialize handshake (2025-11-25, 2025-06-18, 2025-03-26), answers in plain JSON and keeps no session. In Claude, add it as a custom connector with that URL. In Claude Code: claude mcp add --transport http endorsement-index https://hudmultifamily.loan/mcp. In a JSON config:

{
  "mcpServers": {
    "endorsement-index": {
      "type": "http",
      "url": "https://hudmultifamily.loan/mcp"
    }
  }
}
ToolWhat it does
search_loansFilter the active file by state, city, program, note rate, years left, servicer or text. Paginated.
get_loanOne loan by its 8-digit FHA number: every field HUD publishes, plus years left and the property page.
program_factsRules for 223(f), 221(d)(4), 223(a)(7), 241(a), 220, 231 or 213: leverage and DSCR tiers, term, MIP, prepayment, Davis-Bacon, fees. Each with its source.
statutory_limitThe CY2026 statutory limit for a unit mix, elevator or not, at a high cost percentage. Also reports the ROAD Act amounts, flagged pending.
size_223fLowest-of 223(f) sizing: LTV, DSCR with the 0.25% MIP, statutory limit, cost to refinance or cash-out cap. Shows which test binds.
hud_statsTotals, medians and the 12-month realized-rate benchmark, for the whole file or one state or program.

Every result has a readable text answer plus structuredContent with the as-of date, the source URL and a page to cite. Try it with curl:

curl -s https://hudmultifamily.loan/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://hudmultifamily.loan/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/call' -H 'Mcp-Name: size_223f' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"size_223f",
       "arguments":{"noi":1450000,"value":21000000,"note_rate":5.5,"unit_mix":{"1":80,"2":60}},
       "_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28",
                "io.modelcontextprotocol/clientInfo":{"name":"curl","version":"1"},
                "io.modelcontextprotocol/clientCapabilities":{}}}}'

JSON API

Plain GET requests, JSON out, CORS open to any origin, cached for up to an hour. Every response names its asof date and source. Results page with limit and offset, and include a next link.

EndpointReturns
/api/v1/loansSearch loans. Filters: state, city, program, soa_code, min_rate, max_rate, min_years_left, max_years_left, min_units, min_balance, max_balance, servicer, q, lihtc, tax_exempt_bonds, sort, limit (max 100), offset.
/api/v1/loans/{fha_number}One loan.
/api/v1/statsTotals, medians, by program, by state, by endorsement year, top servicers.
/api/v1/programsProgram rules with source URLs and dates, plus live counts from the file. One program: /api/v1/programs/223f.
/api/v1/limitsCY2026 statutory limits and high cost percentages; ROAD Act amounts flagged pending. Add unit_mix to compute a limit.

Examples:

# Low-rate 223(f) loans in Texas with 10+ years left, lowest rate first
curl -s 'https://hudmultifamily.loan/api/v1/loans?state=TX&program=223f&max_rate=4&min_years_left=10&sort=note_rate&limit=10'

# One loan: Castle Square Apartments, Boston, MA
curl -s https://hudmultifamily.loan/api/v1/loans/02311561

# 2026 statutory limit for 80 one-bedroom and 60 two-bedroom elevator units under 221(d)(4)
curl -s 'https://hudmultifamily.loan/api/v1/limits?program=221d4&elevator=true&unit_mix=%7B%221%22%3A80%2C%222%22%3A60%7D'
// In a browser or Node 18+
const r = await fetch('https://hudmultifamily.loan/api/v1/loans?state=FL&max_rate=3.5&limit=5');
const { asof, total, results } = await r.json();

Downloads and Markdown

If you need the whole file, take the CSV or JSON on About the data rather than paging the API: one row per loan, every HUD field plus the street address, with a column dictionary. Program and guide pages have Markdown twins at the same path plus .md (the home page is /index.md), with the answer, key facts, sources and FAQ in a header block. They are marked noindex so they never compete with the pages themselves.

What the data is, and is not

License and citation

HUD's loan data is a U.S. government work in the public domain. Our compilation, derived figures and text are licensed CC BY 4.0. Please cite:

Endorsement Index (hudmultifamily.loan), from HUD's active insured multifamily mortgage file, as of 2026-09-30. https://hudmultifamily.loan/

Fair use: cache what you fetch and keep request rates modest; bulk users should use the downloads. Questions or a heavier use case: hello@hudmultifamily.loan.

Endorsement Index is published by Janover Capital LLC, a commercial mortgage advisor, not a lender. It is not affiliated with or endorsed by HUD, FHA or any government agency.

Getting commercial property financing should be easy. Now it is. Click below for a free, no obligation quote and to learn more about your loan options.

Get a quote
Call Get a quote