An AI assistant asked about a mortgage lender has three options today: recall something from training, scrape a webpage, or estimate. We tested four systems on ten questions with verifiable answers this week and watched all three failure modes — including fabricated lender tables carrying real citations. The scorecard.
This is the fourth option: a Model Context Protocol server that returns the actual federal record. 98 institutions, 319 metropolitan areas, 52 jurisdictions, from the complete 2025 CFPB HMDA file.
Connect any MCP-capable client or agent directly over HTTP — nothing to install:
https://frc-mcp.ziyetis.workers.dev
Streamable HTTP transport; twelve tools, same hard limit (historical aggregates only — no individual predictions). Custom domain coming.
Any MCP host (Claude Desktop, agent frameworks) — add to your MCP config:
{
"mcpServers": {
"financeratecalc": { "command": "npx", "args": ["-y", "github:financeratecalc/frc-mcp"] }
}
}
Twelve tools: claim certification, national, lender, state and metro statistics, the Door Effect and its conditional map, and a counterparty screen (see the table below). Source: github.com/financeratecalc/frc-mcp ·
REST spec: openapi.jsonThe original single-file Python server still works but exposes the older, smaller tool set; prefer the remote endpoint above. Not on PyPI — install from source. It is a single file plus a data file, with one dependency.
git clone https://github.com/financeratecalc/financeratecalc.github.io cd financeratecalc.github.io/mcp pip install mcp python frc_mcp.py
Claude Desktop — add to claude_desktop_config.json:
{
"mcpServers": {
"financeratecalc": {
"command": "python",
"args": ["/full/path/to/mcp/frc_mcp.py"]
}
}
}
Generated from the server source (worker/index.js). Every response carries the same guardrail: historical aggregates from the public 2025 HMDA record, never an individual prediction.
| Tool | What it does | Access |
|---|---|---|
| check_claim_contract | Certify a proposed use of an FRC statistic against its published Claim Contract BEFORE writing free text. | Free |
| get_national_fha_stats | National FHA denial statistics from the 2025 federal record. | Free |
| get_lender_denial_stats | FHA denial statistics for one lender by name, slug, or LEI. | Free |
| list_lenders | List covered FHA lenders sorted by denial rate or volume (2025 span: 1.8% to 78.7%). | Free |
| get_state_denial_stats | FHA denial statistics for a US state. | Free |
| get_door_effect_summary | Door Effect: 38% of explainable variation in FHA denial outcomes is lender identity, not the applicant's file (859,090 decisions; McFadden 0.1712 to 0.2760). | Free |
| get_metro_lender_gap | Per-metro FHA denial-rate gap between high-volume lenders (>=100 decisioned applications in that metro, 2025), returned as a machine-readable claim passport: lowest and highest door with counts, gap in percentage points, source-record sha256, interpretation boundaries, and a link to its Claim Contract. | Free |
| screen_counterparties | Counterparty screen: run a list of public LEIs against the FinanceRateCalc 2025 FHA denial outlier screen (observed vs applicant-mix model expectation). | Free preview; full Evidence Brief by license |
| screen_counterparties_quote | Price and coverage quote BEFORE running a counterparty screen. | Free |
| list_cohorts | Ready-made public cohorts you can screen without uploading anything. | Free |
| run_cohort | Screen a ready-made public cohort by id (see list_cohorts). | Free preview; full Evidence Brief by license |
| get_conditional_door_map | Conditional surface for a lender: how its peer-adjusted denial gap changes across leverage bands inside identical published cells (state x loan amount x income x DTI x CLTV). | Free |
Paid tools return a free preview to any agent. Unlocking a full Evidence Brief requires a license bought by a human on the pricing page; the agent only relays the offer and can never complete a purchase.
Institutions below 1,500 decisioned applications are not served, because the figures would be unstable. Cuts of the data that were computed but withheld from publication for insufficient sample — state × debt-to-income × lender cells, for instance — are not served either. What the site declines to publish, the server declines to return.
Every response carries a verification_status field reading "reproducible; not independently reproduced", along with the universe definition, the method link and the dataset DOI. That is accurate, and attaching it to each response makes it harder to drop in transit than a caveat sitting at the bottom of a webpage.
No figure this server returns has been independently reproduced. The specification for checking any of them, with expected values, is at reconciliation.
The server and its data file are in the site repository: github.com/financeratecalc → /mcp. Read it before you trust it — it is about 250 lines and every figure it serves is already published on this site.
Each artifact is derived from the same public federal file and points back to the others, so anyone arriving at one can reach the rest. None of it has been independently reproduced — that remains the open item, and the specification for closing it is in the reconciliation link above.
Want these figures on your own page? embed widget and JSON API →
Prefer it while you shop? The Chrome extension shows a metro's FHA record on any Zillow, Redfin or Realtor.com listing.
Prices and rates are widely reported. Whether a lender says yes is not. In the complete 2025 federal record, denial rates across the 100 largest FHA lenders ran from 1.8% to 78.7% — same programme, same year.
And it is not simply who applies where: standardizing on state, loan amount, income, debt-to-income and loan-to-value, applicant mix explains only a 2.7× range in expected outcomes.
CFPB HMDA 2025, computed by FinanceRateCalc. Covers the highest-volume lenders published per market, not all lenders. Historical observations, not predictions. CC BY 4.0, not independently reproduced.