LoanGlass MCP Server
Live Mortgage Rates Inside ChatGPT and Claude
LoanGlass For AI Assistants
What It Is
LoanGlass gives AI assistants live mortgage rate data from more than 800 US lenders, over the Model Context Protocol (MCP).
Published sources give you an average. LoanGlass gives you the distribution: what the cheap end of the market charges, the median, how far apart they are, and where one specific quote sits among them. Percentiles and lender counts are not available from any published source.
| Endpoint | https://mcp.loanglass.com/mcp |
| Transport | Streamable HTTP |
| Authentication | None |
| Tools | 1 — mortgage_rates |
| Rate limit | 300 requests per minute per client address |
| Health | GET https://mcp.loanglass.com/health |
Why There Is No Sign-In
An assistant that cannot reach a connector does not tell you. It answers from the open web instead, and for mortgages that usually means a published national average — the one number this service exists to improve on. Every sign-in step makes that more likely, so there are none. The same rate data is already public on loanglass.com.
Connecting
Claude (Web Or Desktop)
Add a custom connector and paste https://mcp.loanglass.com/mcp. No authentication.
Claude Code
claude mcp add --transport http loanglass https://mcp.loanglass.com/mcp
ChatGPT
Turn on developer mode, create a connector with the URL above, and set authentication to none.
Other Clients
Clients that accept a configuration file:
{ "mcpServers": { "loanglass": { "type": "http", "url": "https://mcp.loanglass.com/mcp" } } }
Clients that only speak stdio can bridge to it with npx mcp-remote https://mcp.loanglass.com/mcp.
Calling It Directly
curl https://mcp.loanglass.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"mortgage_rates","arguments":{"state":"Ohio","myRate":6.75}}}'
The reply arrives as a stream with one data: line. tools/list returns the machine-readable schema and is the authoritative version of this page.
What To Ask
You talk to your assistant; it decides when to call LoanGlass.
- “I was quoted 6.75% in Ohio — is that any good?”
- “What are mortgage rates right now?”
- “Is 5.99% competitive on a 15-year in Florida?”
- “Am I being overcharged? I’m paying one point.”
- “How much could I save by shopping around on a $600k loan?”
The Tool: mortgage_rates
One tool, two kinds of answer. Leave out myRate and you get a picture of the market. Include it and you also get a verdict on that specific quote.
Parameters
Every parameter is optional. {} returns the national 30-year fixed picture.
| Name | Type | Default | Notes |
|---|---|---|---|
loanType |
string | 30-Year Fixed |
One of the loan types below. |
state |
string | national | Full name or two-letter code — Ohio or OH. |
purchaseType |
string | New Purchase |
New Purchase or Refinance. |
propertyType |
string | Single-Family Home |
The only covered value. |
occupancy |
string | Primary Residence |
The only covered value. |
points |
string | Zero Points |
Pass the borrower’s actual points if they pay any. |
myRate |
number | none | A quoted rate as a percentage, e.g. 6.75. |
loanAmount |
number | 400000 |
Used to show differences in dollars per month. |
termYears |
integer | from loanType |
Leave unset. A 15-Year Fixed uses 15; ARMs use 30. |
Accepted Values
Matching ignores case, spacing and punctuation, so 30 year fixed and refinance both work.
Loan types
30-Year Fixed20-Year Fixed15-Year Fixed10-Year Fixed30-Year Fixed Jumbo20-Year Fixed Jumbo15-Year Fixed Jumbo30-Year Fixed VA30-Year Fixed FHA10/1-Year ARM10/6-Month ARM7/1-Year ARM7/6-Month ARM5/1-Year ARM5/6-Month ARM3/1-Year ARM
Points
Zero Points0-1% Points1-2% Points2-3% Points3%+ PointsAny Points
Any Points mixes rates bought down with points and rates at par, and the response warns about it.
Recognised But Not Covered
These are real products that too few lenders publish to describe a market.
| Parameter | Not covered | Answer instead on |
|---|---|---|
purchaseType |
Cash-Out Refinance, Construction | Refinance |
propertyType |
Condominium, Multi-Family Home, Manufactured Home, Land | Single-Family Home |
occupancy |
Secondary Residence, Investment Property | Primary Residence |
Coverage is deepest for fixed-rate, new-purchase, single-family, primary-residence loans. Small states can fall below the reporting floors for less common loan types.
Responses
A Full Answer
| Field | Meaning |
|---|---|
found |
true |
as_of |
Date the underlying rates were observed. |
basis |
Every assumption echoed back, including the observation window. |
coverage |
lenders_reporting, rates_observed, confidence. |
distribution |
p10_pct, median_pct, p90_pct, spread_bps, spread_monthly_usd and observed_range. |
your_rate |
Only when myRate is supplied. See below. |
summary |
The whole answer in plain English, disclaimer included. |
disclaimer |
Standing text. |
your_rate contains percentile, lenders_cheaper, bps_vs_median, bps_vs_cheapest, monthly_vs_p10_usd, a plain-English verdict, and three fields about rounding: lenders_at_this_price_point, percentile_if_one_notch_higher and clustering_note.
Too Few Lenders To Describe A Market
Fewer than 10 lenders: sufficient_for_statistics: false and observed_rates_pct in place of distribution. The summary tells the assistant to widen the query rather than present a range.
No Lender Publishes The Combination
found: false with a suggestion. This is an answer, not an error.
A Value That Isn’t Valid
No query is run. error: "invalid_argument" and a problems list, one entry per bad parameter:
reason: "unrecognised"— a naming problem. Includesdid_you_meanandvalid_values.reason: "not_yet_covered"— a real product with too little data. Includesadviceandcovered_values. Call again on the covered value and tell the user which basis was used.
Temporarily Unavailable
error: "temporarily_unavailable" with retry_suggested: true. This covers both outages and planned maintenance. The summary explicitly tells the assistant not to substitute a figure from another source.
Rate Limited
HTTP 429.
Reading The Numbers
- Percentiles count lenders, not rows. Each lender counts once, at their best offer, so a lender publishing many rates cannot tilt the result.
- The headline spread is the 10th to the 90th percentile. One lender running a teaser rate would otherwise double what shopping around appears to be worth. The raw lowest and highest rates are in
observed_range, labelled as observed rather than achievable. - Lenders price in eighths, so many sit on exactly the same rate. A quote just under a crowded price point can move many percentile places for a tiny change.
clustering_notesays when that applies. - Confidence: with 30 or more lenders you get everything. From 10 to 29 there is no percentile and no verdict. Below 10 there is no median either.
- Verdict bands (30+ lenders only): up to the 10th percentile excellent, up to the 30th good, up to the 55th reasonable, up to the 80th below average, above that poor.
- Monthly payment figures use the term implied by the loan type. ARMs are modelled over 30 years, because “7/1” is how long the rate is fixed, not how long the loan runs.
Example
Arguments {"state": "Ohio", "myRate": 6.75} — response, trimmed:
{
"found": true,
"as_of": "2026-09-11",
"coverage": { "lenders_reporting": 64, "rates_observed": 76, "confidence": "high" },
"distribution": {
"p10_pct": 6.500, "median_pct": 6.875, "p90_pct": 7.375,
"spread_bps": 88, "spread_monthly_usd": 234,
"observed_range": { "lowest_pct": 6.000, "highest_pct": 8.000 }
},
"your_rate": {
"rate_pct": 6.75, "percentile": 38, "lenders_cheaper": 24,
"bps_vs_median": -12, "bps_vs_cheapest": 75, "monthly_vs_p10_usd": 66,
"verdict": "reasonable - a little better than the middle of the market",
"lenders_at_this_price_point": 9, "percentile_if_one_notch_higher": 52
}
}
About The Data
- Source. Rates lenders advertise on their own websites, collected daily by around 300 collectors.
- Freshness. Each lender’s most recent rate within the last five days.
as_ofis the date observed. - What it is not. Advertised rates are indicative, not offers, and not financial advice. A borrower’s actual rate depends on credit, loan-to-value, points and property.
- No paid placement. Nothing sponsored influences what this returns.
Privacy
LoanGlass never receives your conversation — only the arguments the assistant chose to send. Each call records those arguments, the assistant’s name and version, a session id, timing and the outcome. None of that identifies a person.
Service Status
GET /health returns {"status":"ok","answering":true}. answering: false means the service has been switched off deliberately, and every question receives a stated maintenance response rather than a dead connection.
Check Service Status Compare Today’s Rates
Rates are advertised by lenders on their own websites and observed by LoanGlass on the date shown. They are indicative, not offers.
The mortgage rates displayed on this site are collected daily from publicly available sources provided by more than 800 lenders. LoanGlass does not receive compensation for listing these rates, and all rates are presented as published by the respective lenders. While every effort is made to ensure accuracy, the information may contain errors or omissions. Mortgage rates are highly dependent on an individual’s financial circumstances, credit profile, loan terms, and other factors. As such, the rates you are quoted directly by a lender may differ materially from the rates displayed here.
Users should contact lenders directly to obtain formal, binding loan offers. If you identify any discrepancies in the data or would like to have your institution’s rates included, please contact us at content@loanglass.com.
All logos, trademarks, and brand names appearing on this website are the property of their respective owners.
Help Us Help You
What would make LoanGlass more useful to you?
Thanks!
We appreciate your feedback.