bluerate API and MCP server for AI agents
Let your agent find licensed US mortgage loan officers listed on bluerate.ai by state, city, ZIP code, loan type or language. It is free, read-only and needs no key. Each result links to the loan officer’s bluerate profile, where the user can read reviews and ask for a callback.
| What | Where |
|---|---|
| MCP server (streamable HTTP) | https://api.bluerate.ai/mcp |
| REST API | https://api.bluerate.ai/v1 |
| OpenAPI 3.1 description | https://api.bluerate.ai/v1/openapi.json |
| Summary for language models | https://www.bluerate.ai/llms.txt |
Connect over MCP
The MCP server has two tools, search_loan_officers and get_loan_officer. It needs no sign-in: wherever your client asks for authentication, choose none.
Claude Code
claude mcp add --transport http bluerate https://api.bluerate.ai/mcpClaude (web and desktop)
Settings → Connectors → Add custom connector, then paste https://api.bluerate.ai/mcp.
ChatGPT
With developer mode turned on (Settings → Apps & Connectors → Advanced settings), create a connector with the server URL https://api.bluerate.ai/mcp and no authentication.
Cursor
In ~/.cursor/mcp.json:
{
"mcpServers": {
"bluerate": { "url": "https://api.bluerate.ai/mcp" }
}
}VS Code
In .vscode/mcp.json:
{
"servers": {
"bluerate": { "type": "http", "url": "https://api.bluerate.ai/mcp" }
}
}Anything else
Any client that speaks MCP over streamable HTTP works. To try the tools by hand, run npx @modelcontextprotocol/inspector and connect to https://api.bluerate.ai/mcp. A plain JSON-RPC call also works:
curl https://api.bluerate.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_loan_officers","arguments":{"state":"TX","loanType":"va"}}}'search_loan_officers
GET https://api.bluerate.ai/v1/loan-officers. The MCP tool takes the same arguments.
| Parameter | Meaning |
|---|---|
| state (required) | Two-letter US state code, for example CA. Full names such as California also work. |
| city | City name. Puts loan officers with an office in that city first; it does not filter, because a license covers the whole state. |
| zip | 5-digit ZIP code. Ranks like city. |
| loanType | conventional, fha, va, usda, jumbo or non_qm. Jumbo is not recorded per loan officer: you get those licensed for conventional loans, and notice says so. |
| language | A language the loan officer speaks, as a name (Spanish) or a code (es). |
| limit | 1 to 10. Default 10. |
Example:
curl "https://api.bluerate.ai/v1/loan-officers?state=CA&city=San%20Jose&loanType=fha&limit=1&client=my-agent"{
"asOf": "2026-11-09T10:05:00Z",
"source": "bluerate.ai loan officer profiles (NMLS-verified listings), exported once a day",
"query": { "state": "CA", "city": "San Jose", "loanType": "fha" },
"total": 14,
"returned": 1,
"loanOfficers": [
{
"name": "Alex Rivera",
"nmls": "1234567",
"company": "Example Home Loans",
"officeCity": "San Jose",
"officeState": "CA",
"licensedStates": ["CA", "WA"],
"languages": ["English", "Spanish"],
"loanTypes": ["conventional", "fha", "va", "non_qm"],
"rating": null,
"reviewCount": 12,
"sponsored": false,
"url": "https://www.bluerate.ai/loan-officer/alex-rivera-nmls-1234567?utm_source=agent&utm_medium=my-agent&utm_campaign=api",
"callbackUrl": "https://www.bluerate.ai/loan-officer/alex-rivera-nmls-1234567?utm_source=agent&utm_medium=my-agent&utm_campaign=api&utm_content=callback"
}
],
"moreResultsUrl": "https://www.bluerate.ai/loan-officers/san-jose-ca/fha?utm_source=agent&utm_medium=my-agent&utm_campaign=api"
}get_loan_officer
GET https://api.bluerate.ai/v1/loan-officers/{nmls}, or the MCP tool with nmls. Returns the fields search does, plus about, up to 3 reviews and the loan officer’s faqs.
curl "https://api.bluerate.ai/v1/loan-officers/1234567?client=my-agent"What comes back
| Field | Meaning |
|---|---|
| asOf | When the daily snapshot was taken (UTC). Every answer has it. |
| source | Where the data comes from. Every answer has it. |
| url | The loan officer’s bluerate profile, where the user reads reviews and asks for a callback. Show it to the user. |
| callbackUrl | Where the user asks this loan officer to call back, on bluerate. |
| nmls | NMLS ID, digits only. Pass it to get_loan_officer. |
| total, returned, moreResultsUrl | How many match, how many came back (at most 10), and the full list on bluerate. |
| rating, sponsored | rating is always null for now (profiles carry no star rating). sponsored is always false: the order does not depend on payment. |
| about, reviews, faqs | get_loan_officer only: the loan officer’s introduction, up to 3 client reviews and their own FAQs. |
| error.code, error.message, error.hint | On errors. hint says in one sentence what to send instead. |
Answers never include phone numbers, email addresses or street addresses. To reach a loan officer, send the user to url or callbackUrl.
A bad request gets a 400 with a hint the model can act on:
{
"error": {
"code": "invalid_parameter",
"message": "\"Atlantis\" is not a US state code.",
"hint": "Pass state as a two-letter US state code, for example state=CA for California or state=TX for Texas."
}
}Other errors: 404 not_found (no loan officer with that NMLS ID on bluerate) and 503 snapshot_unavailable (try again in a few minutes). Over MCP the same errors come back as tool results marked isError.
Links and attribution
Please show the user the url of each loan officer you mention. Links carry utm_source=agent&utm_medium=<client>&utm_campaign=api so we can see which agents send people to bluerate. Over MCP the client is the name your client gives in the MCP handshake. Over REST, pass ?client=your-agent or an X-Client-Name header; otherwise we use the User-Agent. We do not record the searches themselves or the address a request came from.
Limits
Without a key: 60 requests a minute per IP address. Over the limit you get a 429 with error.code rate_limited and Retry-After: 60; wait a minute and try again. Answers can be cached for 5 minutes (Cache-Control: public, max-age=300); the data changes once a day. Free keys with higher limits are on the way; until then, write to support@zeitro.com if you need more.
Data and disclaimer
The data comes from loan officer profiles on bluerate.ai, copied once a day; asOf says when. Loan officers supply their own profiles, NMLS IDs, licensed states, loan types and languages. Results are ordered by whether the loan officer shows rates on bluerate, then by name, and never by payment. Loan officers can ask to be left out of these answers.
bluerate is a marketplace, not a lender. A listing is not an endorsement, an offer to lend or a rate quote. Check a loan officer’s license on NMLS Consumer Access. Use of the API is subject to the Terms of Use and Privacy Policy. Do not copy the whole list or use it for unsolicited contact.