Connect an assistant
The MCP server is at https://lender.report/mcp (Streamable HTTP). It needs no key to start. Tools are read only.
Claude
Settings, Connectors, Add custom connector, and paste:
https://lender.report/mcp Claude Code
claude mcp add --transport http lender-report https://lender.report/mcp With a key:
claude mcp add --transport http lender-report https://lender.report/mcp --header "Authorization: Bearer YOUR_KEY" ChatGPT
On a plan that allows it, turn on developer mode in ChatGPT's settings, then add a custom connector with no authentication and paste the address. OpenAI moves these menus, and its help pages name the current ones.
https://lender.report/mcp Cursor
Put this in .cursor/mcp.json in a project, or in ~/.cursor/mcp.json for every project. To use a key, add "headers": { "Authorization": "Bearer YOUR_KEY" } beside url.
{
"mcpServers": {
"lender-report": { "url": "https://lender.report/mcp" }
}
} VS Code
One command:
code --add-mcp '{"name":"lender-report","type":"http","url":"https://lender.report/mcp"}' Or put this in .vscode/mcp.json:
{
"servers": {
"lender-report": { "type": "http", "url": "https://lender.report/mcp" }
}
} Any other client
Give it the address https://lender.report/mcp and the transport Streamable HTTP, with no authentication. The server speaks protocol versions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Its card is at /mcp/server-card, and /.well-known/api-catalog lists the API and the server for a client that looks there.
Then ask things like "Who has made multifamily refinance loans around $2.4M in Ohio?", "Which banks in Kansas hold construction loans?" or "Largest SBA 7(a) lenders in Texas."
Tools
Server name lender.report. Each tool says what it returns and when to use it instead of another.
| Tool | What it returns | Inputs |
|---|---|---|
find_loan_comps | Returns lenders with public evidence of loans like a described deal, in three groups (banks and credit unions with an office in the state, those without, non-banks). Each row has the evidence level, counts, a sentence with its source, and the recorded loans in the place asked. Use it for "who has made a loan like this". Give lane and state, plus amount and purpose; use resolve_place first for a city or county. It reports past loans, not who is lending today. For one named lender use get_lender. | lane, state, place, amount, purpose, type, units, county, metro, program, lender_kind, ltv, include_elsewhere, include_ruled_out, detail, limit, offset |
search_lenders | Finds lenders by name, trade name or holding company, or lists them by state, kind, asset size and flags, with identifiers, books held by category and counts of loans made. Use it to get a lender identifier or to build a list, such as credit unions in a state that bought participations. For deal evidence use find_loan_comps; for "is it still operating" use check_lender_status. | q, office_state, hq_state, type, flags, min_assets, max_assets, min_participations_bought, sort, detail, limit, offset |
get_lender | Returns one lender by slug or identifier (fdic:6653, ncua:21930, rssd:489623, lei:...): identity, status, books held by category, loans made by program, offices, capacity measures (not a rating), dated one-sentence facts and a citation. The default view is a summary; ask for book, activity, capacity, signals, peers or facts for the rest. For its recent loans use get_lender_activity. | id, view, as_of |
check_lender_status | Returns whether a bank or credit union is operating, merged, closed or not in this record, with the regulator's date, any successor, and a link to the regulator's own record. Accepts an identifier or a name. Use it for "is this lender still in business". It states what records say; it is not a statement about safety or soundness, and a lender not found may still exist. | id, q, state |
get_lender_activity | Returns the loans one lender has made, from HMDA, SBA and credit union filings, as counts, medians and coarsened recent loans, optionally for one state, metro and program. No borrower names. Use it after get_lender to see what the lender has actually closed. A held balance is not evidence of a recent loan. | id, state, metro, program, period, detail, limit |
list_market_lenders | Returns who has recorded loans in a state or metro for one lane, ordered by count, with totals. Where a lane has no loan-level record (commercial real estate at banks, construction, farmland, business) it lists lenders with an office in the state that hold that kind of book, and says so. Use it for "who lends in Columbus"; accepts a place name, a state or a CBSA code. | place, lane, program, detail, limit, offset |
rank_lenders | Returns one ranking on one defined measure, period and source, national or for one state, with the unit stated and the address of its ranking page. Rankings cover lending activity and books held only. Use it for "largest SBA 7(a) lenders in Texas" or "credit unions that bought the most participations". get_coverage lists each metric with the scopes it has. | metric, scope, limit, offset |
compare_lenders | Returns two to four lenders side by side as a table of comparable measures (assets, books by category, loans made, offices, capacity measures with their captions) and, if a deal is given, each lender's evidence on it. Accepts names or identifiers. Use it to weigh named lenders against each other; to find lenders first use find_loan_comps or search_lenders. | ids, lane, state, amount, purpose |
get_changes | Returns data releases and the changes they carried, newest first: what each release took from the latest filings, the date this site published it and the filing period it covers. Filter by since (publish date) or period_since (filing period), and by kind. Use it for "what is new" or to keep a copy current. It also says whether the next quarter's call reports are yet published. | since, period_since, kind, limit, offset |
resolve_place | Turns a city, county, metro or state name into the place codes the other tools take, with every plausible candidate when a name is ambiguous (Columbus in Ohio, Georgia and Indiana). Use it before find_loan_comps or list_market_lenders when the user names a place. Returns CBSA codes, county FIPS codes, state codes and, where it exists, the page for that place. | q, state, limit |
get_coverage | Returns what the record covers and how current it is: counts, the as-of date of each source, the data release id, known limits, the ranking metrics with their scopes, the license and the citation format. Use it before relying on the data, or to answer "how current is this". | None |
Every tool describes its inputs and its answer in JSON Schema, read through the protocol's tools/list method. Every tool is read only. No tool sends a message, an inquiry or a financing request for anyone: a person who wants to ask for financing fills in the form themselves. Answers carry do_not_claim and what_we_dont_know: please repeat those limits to the person asking.
The server also offers 6 resources (coverage, methodology, sources, the data dictionary, how to cite and the limits), templates for a lender, a place, a ranking and a release, and 6 ready prompts. Lender names and place names complete as you type in a client that supports completion.
JSON API
Base address https://lender.report/api/v1. Every response is JSON with CORS open. Schema: /openapi.json.
curl "https://lender.report/api/v1/lenders?q=park+national&limit=5"
curl "https://lender.report/api/v1/lenders/fdic:6653"
curl "https://lender.report/api/v1/lenders/fdic:6653/status"
curl "https://lender.report/api/v1/places?q=columbus+ohio"
curl "https://lender.report/api/v1/comps?lane=multifamily&state=OH&amount=2400000&purpose=refinance"
curl "https://lender.report/api/v1/markets/18140?lane=multifamily"
curl "https://lender.report/api/v1/rankings/sba_7a_loans?scope=OH"
curl "https://lender.report/api/v1/changes?since=2026-01-01"
curl "https://lender.report/api/v1/releases"
curl "https://lender.report/api/v1/health"
curl -H "Authorization: Bearer YOUR_KEY" "https://lender.report/api/v1/lenders/park-national-bank-oh/history" | Endpoint | What it returns |
|---|---|
/meta | Coverage, as-of dates, counts, sources, limits, license, listing states and links. Also at /coverage. |
/comps | Loan Comps. GET with deal fields as query parameters, or POST them as JSON. A sentence works too, as q. |
/lenders | Search by name and filters: q, state, type, flags, min_assets, max_assets, sort, limit, offset |
/lenders/{id} | One lender. The id is a slug, lr_ id, or fdic:6653, ncua:21930, rssd:489623, lei:... |
/lenders/{id}/status | Whether the lender is operating, merged or closed, with the regulator record and its date |
/lenders/{id}/activity | Recorded loans by HMDA and SBA, as counts and medians, with coarsened receipts |
/lenders/{id}/history | Book by quarter. Needs a free account or a key. |
/places | A city, county, metro or ZIP turned into the place the other endpoints take |
/markets/{place} | Who has recorded loans in a state or metro, by lane |
/rankings/{metric} | One defined ranking, national or by state |
/compare | Two to four lenders side by side |
/changes | What the latest filings changed, for the market and each lender. Filter with since and kind. |
/releases | Every data release, newest first. /releases/{release_id} is one of them. |
/health | Whether the API is up and how old the data is. Never metered. |
Identifiers also resolve at /id/fdic/6653, /id/ncua/21930, /id/rssd/489623 and /id/lei/{lei}, each redirecting to the lender's page.
Limits
Reading the site is not metered like the API. On the Loan Comps, search and compare pages, a visitor may view 2,000 pages a day, or 5,000 once signed in free. A hosted assistant such as Claude or ChatGPT shares 20,000 a day, on the addresses it publishes. The name suggestions and result counts those pages fetch while you type have allowances of their own, 5,000 a day each, and are not counted as page views. A person does not meet these numbers in ordinary use, and signing in is not needed to read. When you reach a limit, the page says so first, in plain words, offers the free sign-in where it raises the number, and tells you when the allowance resets: midnight UTC, which is 7 p.m. Eastern in winter and 8 p.m. in summer.
| Limit | No key | Hosted assistants | Free account |
|---|---|---|---|
| Page views a day on Loan Comps, search and compare | 2,000 | 20,000, pooled | 5,000 |
The limits below are for the API and the MCP server. They gate depth and bulk, not single lookups. Past a limit, a call returns 429 with a retry time, and they reset at midnight UTC. A key goes in an Authorization: Bearer header; make one on your account page. A client that cannot send headers can pass ?key=YOUR_KEY instead, so treat that address like a password.
| Limit | No key | Hosted assistants | Free account |
|---|---|---|---|
| Calls a day | 50 | 5,000, pooled | 500 |
| Rows a call | 10 | 10 | 25 |
| Deepest result | 50 | 50 | 250 |
| Rows a day | 300 | 50,000 | 3,000 |
| Fields | Snapshot | Snapshot | Snapshot plus 8 quarters of book history |
| CSV of your lists | None | None | None |
A search counts as 5 calls. Hosted assistants such as Claude and ChatGPT share a pool, because their users arrive from a few addresses.
Every answer says where you stand in three headers. RateLimit-Policy is the allowance, for example "calls";q=50;w=86400. RateLimit is what is left and the seconds until it resets, for example "calls";r=42;t=3600. X-LR-Rows-Remaining is the rows left today. The two RateLimit headers follow the IETF draft for rate limit header fields, which is not final, so read them leniently: the names are stable here, and a change to their form will be on the changelog first.
Errors
An error is a problem document (RFC 9457) with the media type application/problem+json. Its type is an address on this site that explains the error, and the body says how to fix the call: the field, the accepted values, the closest accepted value, or when to come back. There are 11 types, each with its own page under /errors/. The MCP server gives the same document as a tool error.
Markdown
An assistant reads markdown more cheaply than a web page. A lender is available as markdown by its public identifier, and the key pages of this site each have a markdown copy at the same address plus index.md. A request that sends Accept: text/markdown to a lender address gets the same text. /llms.txt is the short map and /llms-full.txt is the key pages in one file.
curl "https://lender.report/id/fdic/6653.md"
curl -H "Accept: text/markdown" "https://lender.report/api/v1/lenders/fdic:6653"
curl "https://lender.report/methodology/index.md" Versions
- The API path carries its version,
/api/v1. A field may be added to an answer at any time. A field is not removed or renamed, and a tool is not removed, without a notice on the changelog and at least one data release in which the old name still works. - The MCP server is version 2.0.0. Older tool names from version 1 still answer for one release.
- The data has its own version. Every answer carries
data_version, the release it was computed from, andX-LR-Data-Versionrepeats it. Releases lists each one, and what changed says what moved.
What every record carries
source, as_of, cite_as and license, and on a lender listing_state, is_paid and label. Inputs are limited to the deal, and sensitive fields are refused before anything else runs: never send names, Social Security numbers, tax IDs, credit scores, income or account numbers.
Listing state
listing_state describes the listing, never the lender. It is read after the order of a result is final and is never a sort key. The paid state is always labeled Verified (paid), and a record in that state carries verified_on, the date the lender last confirmed its lending details, when one is on file. The same three states are printed on each lender's page.
| Value | Shown as | What it means |
|---|---|---|
unverified | Unverified listing | Built from public records. The lender has not reviewed the page. Every lender starts this way, and it says nothing about the lender itself. Claiming is free. |
claimed | Claimed | A representative of the lender proved they act for it, with a work email address at the lender's own domain or another accepted proof (a DNS record on that domain, a call to the main number, a signed letter from an officer, or a review of a non-bank's records). They can correct facts. Claiming is free. The lending details have not been confirmed. |
verified | Verified (paid) | The lender pays a flat monthly fee for the listing and confirmed its lending details on a stated date. It is not a rating or an opinion of the lender. Paying never changes where a lender appears in search, lists or rankings. |
Data files
The lender crosswalk and the state and market totals are published as CSV and NDJSON, with a catalog a dataset search engine can read. They are on the data page.
Terms
- Facts from government filings are public. API and MCP data is licensed for your own internal use, with credit and a link. Full terms are on the license page and in the terms of use.
- Figures are as filed, not audited, and carry no warranty. They are not a rating or advice. See the methodology.
- Other agents and search engines can also read /llms.txt and the crawlable pages.
Breaking changes are announced on the changelog first. Questions or a bug: report it or desk@lender.report.