API and MCP, data as of June 30, 2026

Lender data for your code and your agents

The same lender record as this site, as a JSON API and a remote MCP server. It works with no key and no sign-up, within the limits below. Every answer carries its source and date.

By Research desk, The Lender Report · Updated November 8, 2026

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.

MCP tools
ToolWhat it returnsInputs
find_loan_compsReturns 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_lendersFinds 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_lenderReturns 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_statusReturns 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_activityReturns 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_lendersReturns 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_lendersReturns 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_lendersReturns 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_changesReturns 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_placeTurns 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_coverageReturns 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"
API endpoints
EndpointWhat it returns
/metaCoverage, as-of dates, counts, sources, limits, license, listing states and links. Also at /coverage.
/compsLoan Comps. GET with deal fields as query parameters, or POST them as JSON. A sentence works too, as q.
/lendersSearch 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}/statusWhether the lender is operating, merged or closed, with the regulator record and its date
/lenders/{id}/activityRecorded loans by HMDA and SBA, as counts and medians, with coarsened receipts
/lenders/{id}/historyBook by quarter. Needs a free account or a key.
/placesA 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
/compareTwo to four lenders side by side
/changesWhat the latest filings changed, for the market and each lender. Filter with since and kind.
/releasesEvery data release, newest first. /releases/{release_id} is one of them.
/healthWhether 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.

Page views a day on Loan Comps, search and compare
LimitNo keyHosted assistantsFree account
Page views a day on Loan Comps, search and compare2,00020,000, pooled5,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.

API and MCP limits
LimitNo keyHosted assistantsFree account
Calls a day505,000, pooled500
Rows a call101025
Deepest result5050250
Rows a day30050,0003,000
FieldsSnapshotSnapshotSnapshot plus 8 quarters of book history
CSV of your listsNoneNoneNone

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, and X-LR-Data-Version repeats 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.

Listing states
ValueShown asWhat it means
unverifiedUnverified listingBuilt 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.
claimedClaimedA 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.
verifiedVerified (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.