Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

RateAPI — live US mortgage, auto, HELOC, personal & deposit rates

REMOTE · MCP.RATEAPI.DEV · SCANNED SEP 21

Live US mortgage, auto, HELOC, personal & deposit rates with evidence, plus who can join each lender

Available components

+3 this week 83 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security78
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
Schema Quality & AI Usability79
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 21726 tokens (~188/item across 115 items; 89 tools + 26 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
  • Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 91 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
  • Supports UI / widget rendering.Pass
Install

How do I install the RateAPI — live US mortgage, auto, HELOC, personal… MCP server?

RateAPI — live US mortgage, auto, HELOC, personal… is a hosted endpoint at https://mcp.rateapi.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.rateapi.dev

# add to Claude Code
claude mcp add --transport http dev-rateapi-mcp 'https://mcp.rateapi.dev/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-rateapi-mcp": {
      "url": "https://mcp.rateapi.dev/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-rateapi-mcp": {
      "type": "http",
      "url": "https://mcp.rateapi.dev/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.dev-rateapi-mcp]
url = "https://mcp.rateapi.dev/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-rateapi-mcp": {
      "type": "remote",
      "url": "https://mcp.rateapi.dev/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-rateapi-mcp --url 'https://mcp.rateapi.dev/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  dev-rateapi-mcp:
    url: "https://mcp.rateapi.dev/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-rateapi-mcp": {
      "Transport": "http",
      "Url": "https://mcp.rateapi.dev/mcp"
    }
  }
}
# add to Vellum
assistant mcp add dev-rateapi-mcp -t streamable-http -u 'https://mcp.rateapi.dev/mcp'
// mcp.json
{
  "mcpServers": {
    "dev-rateapi-mcp": {
      "type": "http",
      "url": "https://mcp.rateapi.dev/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 +1
    • Resource “Quickstart: your first RateAPI call” was removed functional
    • New resource “Quickstart: choose the CLI, MCP, or REST” functional
  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 8 Sept 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_eligibility_coverage” rewrote its description, which is the text the model reads security
    • Tool “search_eligibility_entities” rewrote its description, which is the text the model reads security
    • “search_eligibility_entities” reworded the description of “query” cosmetic
    • “search_eligibility_entities” made “query” optional cosmetic
  • 7 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “find_reachable_offers” rewrote its description, which is the text the model reads security
    • New tool “compare_personal_access_catalogs” functional
    • New tool “compare_reachable_offers” functional
    • New tool “evaluate_eligibility_cohort” functional
    • New tool “get_eligibility_changes” functional
    • New tool “get_personal_access_catalog” functional
    • New tool “get_product_access_envelopes” functional
    • New tool “resolve_eligibility_entities” functional
    • New tool “search_eligibility_entities” functional
    • “check_membership_eligibility” added an optional parameter “association_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “employer_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “relative_association_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “relative_employer_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “relative_school_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “school_org_ids” cosmetic
    • “check_membership_eligibility” added an optional parameter “worship_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “association_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “employer_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “relative_association_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “relative_employer_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “relative_school_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “school_org_ids” cosmetic
    • “find_eligible_credit_unions” added an optional parameter “worship_org_ids” cosmetic
    • “find_reachable_offers” reworded the description of “person” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://mcp.rateapi.dev/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=rateapi.dev CN=WE1,O=Google Trust Services,C=US 5 Sept 2026 4 Dec 2026 ECDSA 256 ECDSA-SHA256 a3bbdbbdf7ccbfc9131d75153aa5997b
SANs: rateapi.dev, *.rateapi.dev
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.rateapi.dev. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
dev. present 60074 8 Verified
rateapi.dev. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.rateapi.dev/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://mcp.rateapi.dev/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.rateapi.dev/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.rateapi.dev
Authorisation server https://mcp.rateapi.dev

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.rateapi.dev/mcp Verified 200
http (plaintext) http://mcp.rateapi.dev/mcp Inconclusive 405
MCP tools · 89 exposed · ~19,967 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
find_product_rates_near_zip ~244

Use when someone asks for the best mortgage, auto-loan, HELOC, personal-loan, student-loan, equipment-loan, or credit-card rates near them and provides a ZIP. Finds the nearest NCUA-reported branch set, keeps credit unions with a current product-matched published rate, and ranks those offers by lowest APR with approximate distance as a tie-breaker. HELOC matching excludes closed-end home-equity loans. This is a local shopping shortlist: distance is straight-line, membership is not guaranteed, and published APR is not personalized approval.

NameTypeReqDescription
max_offersnumberMaximum product-matched offers to return (1-8, default 5).
product_typestringyesProduct whose current published rates should be compared.
term_monthsnumberOptional comparable loan term. For fixed mortgages, under 300 months selects the 15-year market and 300+ selects 30-year.
vehicle_conditionstringAuto loans only. Omit to use the new-auto market.
zipstringyesFive-digit US ZIP code used as the center of the nearby-branch search.
NameTypeReqDescription
disclosurestring|nullPrecision and methodology caveat for the distances and locations above; carry it into any answer that quotes them.
nearby_credit_union_countnumber|nullHow many credit unions were found near this ZIP before filtering to those publishing this product; `offers` is usually shorter.
offersarrayPublished offers from nearby credit unions, ordered by the rule in `ranked_by`.
precisionstring|nullOverall precision of the distance estimates, e.g. 'ZIP-centroid straight-line estimate'.
product_typestring|nullLoan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'.
ranked_bystring|nullThe ordering rule applied to `offers`, e.g. lowest APR among credit unions with nearby reported branches — proximity filters the set, price sorts it.
unavailable_reasonstring|nullWhy `offers` is empty, present only when it is — e.g. no credit union near that ZIP publishes the requested product. Quote this rather than telling the user no rates exist.
zipstring|nullFive-digit ZIP code the search was centered on.

No examples provided.

find_reachable_offers ~321

Find the best fresh, evidence-backed credit-union rates reachable from this person’s membership facts. This composed graph-first operation evaluates the complete active US credit-union fleet BEFORE rates are queried, so a strong out-of-state employer, association, school, military, family, property, work/payroll, or facility door is not lost behind a candidate cap or state-only rate search. `reachable_now` requires a verified membership path, satisfied supplied product dimensions, and fresh evidenced published pricing; `reachable_after_action` requires the same product proof plus a documented membership action. Unknown or mismatched term, intent, vehicle condition, or occupancy remains `unresolved`, never silently matched. `no_published_offer` means no matching fresh evidenced rate was found. Deposits rank published APY only. Lending ranks published APR rows first and separately labeled nominal-rate rows second, never comparing APR and rate as one measure. Every price includes verbatim evidence and as_of, and routed membership results preserve graph/publication lineage and source proof. Use product-aware questions only as bounded facts that may clarify. Published pricing is not approval or guaranteed final availability.

NameTypeReqDescription
limitnumberVisible offers per bucket, 1-50. Candidate intersection happens before this cap.
personobjectyesConfirmed person facts accepted by find_eligible_credit_unions, including canonical *_org_ids selected through resolve_eligibility_entities. Unknown facts stay absent and canonical ids are revalidate…
productobjectyesThe financial product and matching attributes to route.
NameTypeReqDescription
as_ofstring|nullMost recent observation timestamp among returned rates.
completenessobjectHonest evaluation and display-cap metadata, including current-publication-only membership proof semantics.
countsobjectFull pre-display-cap counts for each reachability bucket.
disclosurestring|nullRequired distinction between evidence-backed routing, published pricing, final availability, and approval.
discoveryobjectGraph retrieval telemetry. candidate_scope=active_fleet and candidate_set_truncated=false prove exhaustive evaluation.
eligibility_snapshotobjectImmutable eligibility graph generation and pinned rules clock used for this result when snapshot serving is available.
no_published_offerarrayGraph-positive institutions without a matching fresh evidenced rate; absence remains unknown.
productobjectNormalized product request used for matching.
ranking_basisstring|nullDeposits rank by higher published APY. Lending ranks published APR rows first by lower APR, then separately labeled nominal-rate rows by lower rate; APR and rate are never numerically compared. Membe…
reachable_after_actionarrayOffers with a documented membership action and a fresh, evidenced published rate.
reachable_nowarrayOffers with a verified membership path and a fresh, evidenced published rate.
semanticsstring|nullThe positive-evidence-only interpretation contract.
unresolvedarrayPublished-rate matches whose membership or rate proof remains incomplete, or whose membership path is only possible; unknown is not unavailable.

No examples provided.

generate_client_report ~123

Produce a clean, client-facing markdown rate comparison report a loan officer can share with a buyer. Pass either a saved scenario_id, or an inline client_name + comparison result (from get_financing_decision/compare_products).

NameTypeReqDescription
advisor_namestringOptional advisor/company name for the report header
client_namestringClient label, if not using scenario_id
resultobjectThe comparison result to format, if not using scenario_id
scenario_idstringOptional: a saved scenario id to build the report from
NameTypeReqDescription
formatstringAlways 'markdown'.
markdownstringThe full report: heading, advisor byline, scenario line, a ranked offer table of up to five lenders, and a not-an-offer-of-credit footer.

No examples provided.

generate_share_link ~101

Turn a saved client scenario into a public, branded, shareable URL (https://app.rateapi.dev/r/TOKEN) that anyone can view without logging in. Returns a token and url. The link shows the client name, scenario inputs, and the ranked comparison with a "Powered by RateAPI" footer. Use revoke_share to disable a link later.

NameTypeReqDescription
scenario_idstringyesThe saved scenario id to mint a share link for. Required.
NameTypeReqDescription
created_atstring|nullISO-8601 creation timestamp.
scenario_idstringScenario the link renders.
tokenstringShare token — pass to revoke_share to disable the link.
urlstringPublic URL of the hosted report (app.rateapi.dev/r/<token>).

No examples provided.

get_benchmarks ~174

Get rate benchmark statistics (min/median/max APR) across all institutions. Use this for market analysis, comparing user quotes against market rates, or building benchmark dashboards. Returns statistics for mortgages (30yr fixed, 15yr fixed, and `mortgage_arm` — one bucket covering every adjustable-rate mortgage regardless of initial fixed period), auto loans (new/used — cars only), RV/boat/motorcycle/powersports (first-class vehicle categories), HELOCs, and personal loans. Each product shows the lowest APR institution, median APR, and count of institutions.

NameTypeReqDescription
product_typestringFilter to a specific product type. If omitted, returns benchmarks for all product types.
statestringFilter to a specific US state (2-letter code). If omitted, returns nationwide benchmarks.
NameTypeReqDescription
benchmarksarrayFormatted per-product benchmark rows, one per product category, ready to present.
generatedAtstring|nullUTC timestamp when this benchmark response was assembled; the underlying rates are older, see each row's asOf.
rawDataarrayThe same benchmarks as unformatted numbers, for calculation rather than display.
stateFilterstring|nullScope of the benchmark set as a label — 'Nationwide' when no state narrowing was applied. Check this before describing the numbers as local.
summarystring|nullPlain-English headline of the benchmark set, e.g. the range of 30-year fixed APRs and how many credit unions publish them.
totalInstitutionsstring|nullNumber of institutions behind the benchmark set, returned as a string rather than a number.

No examples provided.

get_cohort ~42

Get a single saved cohort by id, including all members and the last scan snapshot (triage list).

NameTypeReqDescription
idstringyesCohort id. Required.
NameTypeReqDescription
changedarrayMembers whose best offer moved since the previous snapshot.
scannednumberMembers evaluated in this scan.
triagearrayEvery member's current best offer, the work list.

No examples provided.

get_coverage ~213

Introspect what mortgage/loan data the API covers BEFORE scanning — which states, lenders, and product types are present, row counts per segment, and last-updated freshness per segment. Returns a coverage matrix so an agent can pick a scannable state/product before calling scan_savings or get_financing_decision. Mirrors the /meta global counts, expanded into a per-segment matrix. Boats, RVs, motorcycles, and powersports are first-class product categories; auto means cars.

NameTypeReqDescription
freshness_daysnumberOptional uniform staleness window in days (1-90). OMIT to use per-category freshness windows — supplying a value overrides every category and is echoed back as freshness_mode=override.
group_bystringOptional segmentation axis. Default 'state'.
product_categorystringOptional. Restrict the matrix to one product category. Omit for all.
statestringOptional 2-letter US state code to scope the matrix to a single state.
NameTypeReqDescription
coverageobjectWhich states and product types appear in the data, as flat lists.
disclosuresarrayCaveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them.
freshness_daysnumber|nullAge limit in days a rate must be within to be counted here; rows older than this are excluded from the totals.
freshness_modestring|nullHow the freshness window was chosen: 'per_category' applies a category-specific window instead of one global value.
generated_atstring|nullUTC timestamp when this coverage snapshot was computed.
institution_profilesobjectCoverage of the NCUA institution reference data that backs lender context, separate from rate coverage.
next_actionsarraySuggested follow-up tools given this coverage picture, as bare tool names.
notestring|nullPlain-English description of how this coverage matrix is grouped and what it totals.
segmentsarrayCoverage broken down by the requested grouping, largest first.
totalsobjectOverall size of the covered dataset within the freshness window.

No examples provided.

get_credit_union ~149

Reference tool: Get a credit union's rates, membership eligibility, and source-labelled NCUA quarterly profile: members, assets, year opened, charter, reported services, and branch locations. Eligibility annotates published criteria and never asserts that an individual is ineligible; profile facts are regulatory snapshots, not live prices. Use this when a user asks about a specific credit union. For personalized rate recommendations, use get_financing_decision instead.

NameTypeReqDescription
slugstringyesCredit union slug (URL-friendly name, e.g., "navy-federal-credit-union"). Required.
statestringyesUS state code (2-letter, e.g., CA, TX, NY). Required.
NameTypeReqDescription
all_ratesarrayEvery rate currently on file for this credit union, deposits and loans together.
best_rateobjectThe single most attractive rate on file for this credit union across every product it publishes — it may be a deposit product, so check `product` before calling it a loan rate.
credit_unionobjectCore identity and freshness facts for this credit union.
eligibilityobjectWho may join this credit union, derived from its published membership criteria — guidance, not an underwriting decision.
ncua_profileobjectInstitution facts from the NCUA quarterly call report — regulator-filed data, independent of the scraped rates.
summarystring|nullOne-sentence plain-English summary of this result, safe to quote directly to the user.
widgetobjectPre-built embeddable rendering of this credit union's rates for UI surfaces; ignore it when composing a text answer.

No examples provided.

get_deposit_benchmarks ~264

Best/median/spread credit-union deposit APY by product, term, and state, with per-CU peer ranking. Pass the MCP field `product` using one exact underscore value: savings, cd, share_certificate, money_market, ira_cd, ira, or share_savings. The MCP server translates it to REST `product_category`; do not send `product_category`, `mma`, or `money-market` to this tool. Deposits quote APY (no APR); CDs/share certificates include term. Current + recent data; history is retention-bounded.

NameTypeReqDescription
limitnumberTop N credit unions to rank (default 10, clamp 1..50).
metricstringDeposits rank by APY, highest first. No APR.
productstringMCP field for the deposit product category. Use an exact enum value such as `money_market`; do not use REST field name `product_category`, `mma`, or `money-market`. Omit for all deposit types.
statestring2-letter US state code; omit for nationwide.
term_monthsnumberFor CD/share_certificate/ira_cd: filter to a specific term (savings_term_months).
NameTypeReqDescription
as_ofstring|nullUTC timestamp of the underlying rate data. This is when the rates were last scraped from lender sites, not when this call ran.
benchmark_balanceDeposit balance in dollars the rates are quoted at. Null means no balance tier was applied, so tiered rates may not be comparable.
bestobjectThe single highest-yielding offer found.
countnumber|nullNumber of rows returned in `table`, capped by the caller's limit.
marketobjectDistribution of APYs across the market for this product, for context around `best`.
notestring|nullData caveats for this response, including that APY is shown rather than APR and that history is retention-bounded.
product_categorystring|nullDeposit product benchmarked, e.g. 'cd', 'savings', 'money_market'.
statestring|nullTwo-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state.
tablearrayRanked deposit offers, highest APY first.
term_monthsnumber|nullCertificate term in months these rows are scoped to. Null for non-term products like savings.
total_credit_unionsnumber|nullNumber of credit unions publishing this deposit product in scope — larger than `count` when the table is truncated.

No examples provided.

get_deposit_beta ~229

Deposit beta (repricing sensitivity) = change in deposit APY per 100bps change in a benchmark/market rate — the core credit-union/bank ALM & interest-rate-risk (IRR) model input. Pass the MCP field `product` using an exact underscore value such as `money_market`; do not send `product_category`, `mma`, or `money-market`. Derived from RateAPI's retained published deposit-rate history. SHORT-WINDOW / retention-bounded: full-cycle beta needs multi-year history (roadmap) — results ship with an explicit confidence/depth caveat. Deposits quote APY, never APR. Aggregate published rates only — never member/borrower data.

NameTypeReqDescription
benchmarkstring
group_bystring
productstringyesRequired MCP product field. Use one exact underscore enum value; money market is `money_market`, never `mma` or `money-market`.
statestring2-letter US state code
term_monthsnumber
windowstring
NameTypeReqDescription
benchmark_requestedstring|nullThe benchmark the caller asked deposit rates to be measured against, e.g. 'cd_top_quartile'.
benchmark_usedstring|nullThe benchmark actually used, which can differ from benchmark_requested when the requested one lacked data.
confidencestring|nullQualitative reliability of the beta estimate — 'low' when the history window is short relative to a full rate cycle.
data_sourcestring|nullInternal backing store that served this query ('clickhouse'); operational detail, not something to report to the user.
disclosuresarrayCaveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them.
group_bystring|nullHow results are grouped, e.g. 'cu' for one segment per credit union.
history_depth_daysnumber|nullDays of retained rate history available for this calculation. 0 means no usable history, so every beta is null.
notestring|nullMethodology caveat explaining that this is a short-window beta from retained published history, not a full-cycle beta.
peerobjectDistribution of beta across the peer group.
productstring|nullDeposit product the beta was computed for, e.g. 'savings' or 'cd'.
segmentsarrayOne beta result per group. An empty array means the retained history was too shallow to compute any beta, not that beta is zero.
stateTwo-letter state code the analysis was scoped to. Null means nationwide.
term_monthsCertificate term in months the analysis was scoped to. Null for non-term products.
windowstring|nullLookback period used for the comparison, expressed as a short duration string such as '4w', '90d', or '180d'.

No examples provided.

get_doc ~128

DOCS: return the full text of one RateAPI documentation page by slug (from search_docs) or by its published URL. Documentation only — it describes the contract, not live rates. Available slugs: quickstart, authentication, rate-limits-and-pricing, coverage, freshness, evidence-and-methodology, quoting-rules, eligibility, endpoints, mcp-server, products-and-parameters, errors-and-troubleshooting, deprecation-policy.

NameTypeReqDescription
slugstringThe page identifier returned by search_docs.
urlstringAlternatively, the canonical published URL of the page.
NameTypeReqDescription
availablearray|nullValid slugs, returned alongside an error.
contentstring|nullFull page text in markdown, ending with its source URL.
errorstring|nullPresent when no page matched the reference given.
slugstring|nullThe page identifier.
summarystring|nullOne-line description of the page.
titlestring|nullPage title.
urlstring|nullCanonical published URL to cite.

No examples provided.

get_eligibility_changes ~122

Read the bounded, cursor-paginated feed of currently active eligibility publication replacements since an ISO timestamp. Use it to invalidate caches keyed by credit_union_id or publication identity. It exposes aggregate publication metadata only: no personal facts, no historical verdict, and no claim that a person is eligible or ineligible.

NameTypeReqDescription
cursorstringOpaque next_cursor from the prior page; do not construct or modify it.
limitintegerMaximum publication changes returned.
sincestringyesExclusive ISO 8601 activation boundary with an offset.
NameTypeReqDescription
changesarrayActive publication replacements in stable ascending order.
disclosurestring|nullRequired warning that this is not a personal eligibility verdict or full history.
has_moreboolean|nullWhether another page is available.
next_cursorstring|nullOpaque cursor for the next page, or null.
orderingarrayStable ordering columns.
returnednumber|nullNumber of changes in this page.
semanticsstring|nullActive-publication incremental cache-invalidation contract.
sincestring|nullNormalized exclusive activation boundary.

No examples provided.

get_eligibility_coverage ~194

Enterprise RateAPI Routes coverage: how many US credit unions RateAPI holds live, verbatim-evidenced membership rules for (and what share of the active fleet that is), how the rules split by kind, how many counties, states and employers they name, verification status, and freshness. The `authority` object distinguishes exact immutable active publications from older graph and flat compatibility records; `evidence_sources` reports the public source mix. Returns a dated `headline` sentence that can be quoted verbatim. Use this BEFORE find_eligible_credit_unions or check_membership_eligibility when the user asks how complete, authoritative, or fresh the eligibility data is. Aggregate only — no institution-level rows; those come from the eligibility tools. Never reports credit data: the rule schema has no condition kind for credit score, income or debt. An institution absent from the graph is undecided, never ineligible.

Input schema present but exposes no named parameters.

NameTypeReqDescription
as_ofstring|nullMost recent rule confirmation across the live graph (ISO 8601) — the moment the data last moved.
authorityobject|nullServing-authority adoption. Exact immutable publications are separated from older graph and flat compatibility records.
by_kindarray|nullLive rules and distinct institutions per rule kind, largest first.
credit_dataobject|nullExplicit statement that no rule condition references credit data.
disclosurestring|nullStatement that must accompany any consumer-facing use of eligibility data.
evidence_sourcesarray|nullLive rule counts by recorded evidence source class; institution counts may overlap.
fleetobject|nullThe denominator: active institutions and how many the graph holds live rules for.
generated_atstring|nullWhen the aggregate was computed (ISO 8601). Edge-cached for an hour.
headlinestring|nullOne dated sentence carrying every headline number next to its denominator. Quote it verbatim.
pipelinearray|nullInstitutions by eligibility pipeline status — why an institution may be absent from the graph (no source found, needs review, pending).
populationobject|nullPopulation disclosure: graph inventory, not a personal eligibility decision or reachable-offer count.
reachobject|nullHow specific the rules are: distinct places and organizations named, and institutions carrying each path type.
rulesobject|nullLive rule counts, verification split and freshness.
semanticsstring|nullHow to read the counts: live rules only; absence from the graph is undecided, never ineligible; where row-level verdicts live.

No examples provided.

get_email_branding ~34

Get the organization's current email branding (display name, logo URL, brand color, intro, business address, reply-to).

Input schema present but exposes no named parameters.

NameTypeReqDescription
brandingobject|nullThe stored branding row, or null when the organization has never set branding.

No examples provided.

get_extraction_stats ~174

Get data extraction statistics showing the scale and health of rate data collection. Use this to understand extraction volumes, product coverage, and data freshness. Supports filtering by date range and product type. Great for building transparency dashboards or monitoring data collection health.

NameTypeReqDescription
endTimestringEnd of the time range. Supports ISO8601 or relative times. Defaults to "now".
product_typestringFilter statistics to a specific product type. If omitted, returns stats for all product types.
startTimestringStart of the time range. Supports ISO8601 (e.g., "2024-01-15T00:00:00Z") or relative times ("now-24h", "now-7d", "now-1m"). Defaults to "now-24h".
NameTypeReqDescription
coverageobjectBreadth of the dataset.
dataQualityobject|nullData-health indicators, passed through unchanged from /v1/stats.
generatedAtstring|nullISO-8601 time the stats were computed.
hourlyTrendSamplearrayFirst six hourly buckets of the trend series (a sample, not the full series).
productsarrayFull product-type breakdown.
queryobject|nullThe resolved time window and filters the stats were computed over.
statsobjectHeadline counters. Note the string formatting.
summarystringOne-line headline of rates extracted, per-hour throughput, and institution count.
topProductsstringPre-rendered 'name: count (pct%)' string for the three largest product types.

No examples provided.

get_financing_decision ~1,257

RECOMMENDED WHEN SHOPPING: Get personalized financing recommendations for ANY loan or credit product across every major type: mortgages (30yr/15yr/20yr/10yr fixed and ARMs), auto loans (new/used/CPO, 36-84 month terms), RV/boat/motorcycle/powersports loans, HELOCs (fixed/variable), personal loans (secured/unsecured), student loans, equipment loans, and credit cards (rewards, cash_back, secured, balance_transfer, low_rate, business, platinum, student). Analyzes current market offers and returns actionable recommendations with explanations. Use this instead of looking up raw rates when the user is asking "what rate can I get?" and does NOT yet have an offer. IMPORTANT: if the user ALREADY has a quoted rate and is asking whether it is good/fair/competitive ("I was quoted 6.9%, is that any good?"), call rate_sanity_check instead — it returns a percentile verdict on their specific number, which is what that question is actually asking. Provide the user's state, intent (purchase/refinance/cash_out/balance_transfer/new_credit), and amount for personalized advice.

NameTypeReqDescription
amountnumberyesLoan amount in dollars (minimum 1000). Required.
countystringUser's county for membership-eligibility matching (credit union field-of-membership). Helps flag which lenders the user can actually join.
credit_scorenumberBorrower's credit score (300-850). Highly recommended for accurate rate matching.
current_aprnumberCurrent offer APR if refinancing (percentage).
current_ratenumberCurrent offer rate if refinancing (percentage, e.g., 6.5 for 6.5%).
eligible_onlybooleanBETA (annotation-only): eligible_only is in beta pending identity-verification thresholds; offers are annotated, not filtered. Setting true adds an eligible_only_status notice to the response — eligi…
employerstringUser's employer, matched against credit union employer/SEG membership lists for eligibility.
include_institution_contextbooleanOptional: Include compact NCUA quarterly facts on each final offer (members, locations, assets, year opened, and selected relationship services).
include_out_of_statebooleanOptional: Include documented out-of-state open or multi-state credit-union candidates. Defaults to false, which preserves the requested-state candidate set.
intentstringyesThe loan intent. For mortgages, use "purchase" or "refinance". For auto loans, use "purchase" (new/used car) or "refinance" (existing auto loan). Required.
max_providersnumberMaximum number of providers to return (1-5). Defaults to 5.
military_statusstringUser's military affiliation. Annotates offers with eligible_via_military where the credit union has a military field of membership.
no_pointsbooleanIf true, prefer no-points loans only. Applies to mortgages.
product_typestringType of financing product: "mortgage" (FIXED-rate home purchase/refinance), "mortgage_arm" (ADJUSTABLE-rate mortgage), "auto_loan" (vehicle financing), "heloc" (home equity line of credit), "personal…
schoolstringUser's school/college/university. Supply school_relationship too; a school name alone does not affirm a typed eligibility path.
school_relationshipstringHow the user relates to the named school. Required with school to affirm a typed student, alumni, or school-employee path.
statestringyesValid 50-state/DC code (2-letter, e.g., CA, TX, NY). Required; lowercase is accepted and normalized.
term_monthsnumberLoan term in months (12-480). Defaults to 360 (30-year) for mortgages, 60 (5-year) for auto loans. Common auto loan terms: 36, 48, 60, 72, 84 months. Common mortgage terms: 180 (15-year), 360 (30-yea…
vehicle_conditionstringAUTO LOANS ONLY: Condition of the vehicle being purchased or refinanced. Affects rate eligibility.
vehicle_typestringAUTO LOANS ONLY: Type of vehicle being financed. Some lenders offer specialized rates by vehicle type.
vehicle_yearnumberAUTO LOANS ONLY: Model year of the vehicle (e.g., 2024, 2020). Used to determine age-based rate tiers.
worshipstringUser's place of worship, used to annotate offers with worship-org-affinity eligibility.
zipstringUser's US 5-digit ZIP or ZIP+4. Resolves to a county server-side for membership-eligibility matching; its crosswalk state must agree with state.
NameTypeReqDescription
rate_rangeobjectSpan of rates across the offers considered, for framing how much shopping around is worth.
recommendationobjectThe recommended course of action and how strongly it is held.
request_idstring|nullOpaque identifier for this call, useful only for support or debugging; never show it to the user.
resolved_countyobjectCounty the supplied ZIP was resolved to, used for eligibility and local branch matching.
summarystring|nullHeadline verdict for the user in one line, e.g. 'Shop Around - Better rates available'.
top_offersarrayBest live published offers for this scenario, already sorted best-first.
tradeoffsarrayCosts, caveats, and conditions the user should weigh before acting, such as closing costs or membership requirements.
whyarrayOrdered reasons supporting the recommendation, each already written as a user-facing sentence.

No examples provided.

get_league_table ~235

Loan-officer competitive-landscape report: ranked roster of the top N lenders publishing a given mortgage product in a state today — per-lender rows (name, best APR/rate, product, position, bps above the leader) — plus the market min/median/max. The market median is INSTITUTION-level — one vote per lender, using each lender's best APR (basis = total_lenders, not market.count) — so a lender publishing a large rate matrix cannot pull it. Extends get_benchmarks (which returns only min/median/max + the single lowest institution) with the full ranked table.

NameTypeReqDescription
include_institution_contextbooleanInclude compact NCUA member, location, asset, founding-year, and selected service facts per lender.
limitnumberTop N lenders to return (default 10, clamped 1..50)
metricstringRank by apr (default) or rate
productstringyesMortgage product
statestringyes2-letter US state code, e.g. CA, TX, NY
NameTypeReqDescription
as_ofstring|nullUTC timestamp of the underlying rate data. This is when the rates were last scraped from lender sites, not when this call ran.
countnumber|nullRows actually returned in `table`.
limitnumber|nullMaximum rows the caller asked for.
marketobjectDistribution across all lenders publishing this product, including those below the table cutoff.
metricstring|nullValue the ranking is sorted by — 'apr' ranks by true cost including fees, 'rate' by the note rate alone.
notestring|nullPlain-English interpretation of the numbers above, already phrased for the user; quote it rather than re-deriving the comparison.
productstring|nullProduct key the table ranks, e.g. '30yr_fixed'.
statestring|nullTwo-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state.
tablearrayLenders ranked best-first by the chosen metric.
total_lendersnumber|nullNumber of lenders publishing this product in this state. `count` is the visible top slice of this larger set.

No examples provided.

get_monitor ~35

Get detailed information about a specific monitor by its ID.

NameTypeReqDescription
monitor_idstringyesThe unique identifier of the monitor. Required.
NameTypeReqDescription
errorstring|nullPresent and set to 'not_found' when the monitor id does not exist.
monitorobjectThe monitor. Absent when not found.
summarystringMonitor name and status, or a not-found message.

No examples provided.

get_monitor_stats ~35

Get rollup stats for the account's rate monitors: total, active, and webhooks sent. Complements list_monitors.

Input schema present but exposes no named parameters.

NameTypeReqDescription
active_monitorsnumberMonitors in 'active' status.
reset_datestring|nullWhen the monthly counter resets.
total_monitorsnumberMonitors on the account.
webhooks_sent_this_monthnumberWebhooks sent this month.
webhooks_sent_todaynumberWebhooks sent today.

No examples provided.

get_personal_access_catalog ~209

Evaluate one person across 1-19 explicit loan or deposit selectors using one exhaustive eligibility snapshot. Returns separate membership, published availability, product suitability, published pricing, underwriting, and approval layers. Lead only with reachable_now or reachable_after_action; unresolved and no_published_price are unknown, never a denial. Published APY, APR, or clearly labeled nominal rate is not a personalized quote, underwriting result, preapproval, commitment, or guarantee. Every returned published price carries source evidence and as_of.

NameTypeReqDescription
limit_per_productintegerMaximum detail rows for each selector, subject to the total and plan caps. Default 5.
personobjectyesExplicit caller-supplied person facts. Unknown facts stay absent; do not infer them.
productsarrayyesOne to nineteen unique explicit product selectors. Do not invent missing scenario facts.
total_limitintegerMaximum detail rows across all selectors; must be at least the selector count. Default 50.
NameTypeReqDescription
catalog_versionstring|nullStable access-catalog response contract version.
completenessobjectFleet, selector, evaluation-strategy, cap, and truncation disclosure.
disclosurestring|nullRequired separation of membership, suitability, published pricing, underwriting, and approval.
productsarrayOne result per selector in request order.
questionsobjectMembership questions shared across selectors.
semanticsstring|nullPositive-evidence-only interpretation contract; unknown never means ineligible.
snapshotobjectEligibility generation, rules clock, returned-price observation range, and generation time.

No examples provided.

get_product_access_envelopes ~100

Get non-personal, evidence-bound membership-access metadata for up to 50 exact deposit product references. Returns active-publication path kinds and documented joinable-association actions alongside the current evidenced product rate. This does NOT decide whether a person is eligible, easy to qualify, approved, or within a published balance/audience constraint; unavailable evidence stays unavailable.

NameTypeReqDescription
productsarrayyesExact deposit product references; no fuzzy product matching is performed.
NameTypeReqDescription
countsobjectRequested product and distinct institution counts.
disclosurestring|nullRequired warning against interpreting access metadata as personal eligibility or approval.
envelopesarrayOne access envelope per input in stable order.
semanticsstring|nullNon-personal, positive-documented-paths-only contract.

No examples provided.

get_rate_delta ~143

Compare the LIVE market rate distribution now vs ~1/2/4 weeks ago for a product and state. Returns now/then min, median, max, count plus the median and min delta and a direction (down/up/flat). Bounded by data retention — if no comparable historical snapshot exists, then is null with an explanatory note. Use this to show how rates have moved recently.

NameTypeReqDescription
product_typestringyesType of financing product. Required.
sincestringHow far back to compare against. Defaults to "1w".
statestringyesUS state code (2-letter, e.g., CA, TX). Required.
NameTypeReqDescription
changeobjectMovement from `then` to `now`.
data_sourcestring|nullInternal backing store that served this query ('clickhouse'); operational detail, not something to report to the user.
notestring|nullPlain-English interpretation of the numbers above, already phrased for the user; quote it rather than re-deriving the comparison.
nowobjectCurrent market snapshot for this product and state.
product_typestring|nullLoan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'.
statestring|nullTwo-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state.
thenobjectSnapshot at the start of the window, for comparison against `now`.
windowstring|nullLookback period used for the comparison, expressed as a short duration string such as '4w', '90d', or '180d'.

No examples provided.

get_rate_history ~206

Historical rate time-series: a date-ranged array of {date, min/median/max APR, count} points per product/state for dashboards, charts, backtests, and timing confidence — bounded by data retention. Differs from get_rate_delta (a single now-vs-then comparison): this returns the full series. Boats, RVs, motorcycles, and powersports are first-class product types; auto_loan means cars. Calls the /v1/rate-history public API (single source of truth).

NameTypeReqDescription
intervalstringBucket granularity per point. Default "week".
product_typestringyesType of financing product. Required.
statestringyesUS state code (2-letter, e.g., CA, TX). Required.
vehicle_conditionstringauto_loan only; selects the benchmark bucket. Default "new".
windowstringLookback window. Default "90d". Bounded by data retention.
NameTypeReqDescription
data_sourcestring|nullInternal backing store that served this query ('clickhouse'); operational detail, not something to report to the user.
intervalstring|nullBucket size the series is aggregated into, e.g. 'week', 'day', or 'month'. Each entry in `series` covers one of these.
notestring|nullCoverage caveat for this series, notably how many buckets are empty because history is retention-bounded. Do not describe empty buckets as rates falling to zero.
product_typestring|nullLoan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'.
seriesarrayOne bucket per interval across the window, oldest first. Buckets with no scrapes are present with null statistics.
statestring|nullTwo-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state.
summaryobjectStart-to-end comparison across the populated portion of the series.
windowstring|nullLookback period used for the comparison, expressed as a short duration string such as '4w', '90d', or '180d'.

No examples provided.

get_scenario ~31

Get a single saved scenario by id (inputs + stored comparison).

NameTypeReqDescription
idstringyesScenario id
NameTypeReqDescription
clientNamestringClient label.
createdAtstring|nullISO-8601 creation timestamp.
errorstring|nullPresent when the scenario was not found.
idstringScenario id.
inputobject|nullThe decision inputs that produced the snapshot.
resultSnapshotThe decision result captured at save time; ranked offers live at actions[0].offers[].

No examples provided.

get_usage ~44

Check the calling account's API usage and remaining quota for this month (tier, used, remaining, limit, reset date). Use BEFORE running many calls to avoid hitting rate limits.

Input schema present but exposes no named parameters.

NameTypeReqDescription
limitnumber|nullMonthly request allowance for the org's tier.
remainingnumber|nullRequests left this month. Null on an unlimited plan.
requests_this_monthnumberRequests since the start of the current month — the number metered against the limit.
requests_todaynumberRequests since midnight.
reset_datestring|nullWhen the monthly counter resets.
total_requestsnumberAll-time request count across the org's keys.

No examples provided.

list_cohorts ~48

List saved cohorts for the account (newest first). Returns id, name, member count, and last scan time. Keeps the payload small — use get_cohort for full member detail.

Input schema present but exposes no named parameters.

NameTypeReqDescription
cohortsarrayThe cohorts visible to the API key making the call. Empty when the org has none; the MCP layer wraps the upstream array so the result is always an object.
countnumber|nullNumber of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page.

No examples provided.

list_credit_unions ~142

Reference tool: Discover credit unions by state or nearest to a 5-digit ZIP. State listings include rate availability, member count, and reported location count. ZIP discovery ranks NCUA-reported branches by estimated straight-line miles from the ZIP center. For personalized rate recommendations, use get_financing_decision instead.

NameTypeReqDescription
statestringOptional: Filter to a specific state (2-letter code). If not provided, returns all states.
zipstringOptional: Find the closest credit unions by NCUA-reported branch location. Distances are ZIP-centroid straight-line estimates. When supplied, ZIP discovery takes precedence over state listing.
NameTypeReqDescription
credit_unionsarrayThe credit unions in this state, alphabetical by name.
statestring|nullLower-cased two-letter state code the listing is scoped to.
state_namestring|nullFull state name, e.g. 'California'.
summarystring|nullOne-sentence plain-English summary of this result, safe to quote directly to the user.
total_credit_unionsnumber|nullNumber of credit unions known in this state, including those with no published rates.
verified_last_7_daysnumber|nullHow many have had their rates re-scraped and confirmed in the past 7 days; the rest may be staler.
with_ratesnumber|nullHow many of those credit unions currently have published rate data — always smaller than total_credit_unions.

No examples provided.

list_decision_logs ~86

Recall past financing decisions made on this account (audit log). Filter by request_id to look up a specific prior decision, or paginate with limit/offset.

NameTypeReqDescription
limitnumberMax rows (default 20, max 100)
offsetnumberPagination offset
request_idstringOptional: look up a specific decision by its request_id
NameTypeReqDescription
has_morebooleanTrue when further pages exist.
logsarrayAudit rows, newest first.
totalnumberTotal matching rows across all pages.

No examples provided.

list_digests ~30

List the account's scheduled digests (cohort, email, cadence, enabled, last run).

Input schema present but exposes no named parameters.

NameTypeReqDescription
countnumber|nullNumber of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page.
digestsarrayThe digests visible to the API key making the call. Empty when the org has none; the MCP layer wraps the upstream array so the result is always an object.

No examples provided.

list_email_campaigns ~29

List the organization's branded rate-email campaigns (name, criteria, cadence, status, last run).

Input schema present but exposes no named parameters.

NameTypeReqDescription
campaignsarrayThe campaigns visible to the API key making the call. Empty when the org has none; the MCP layer wraps the upstream array so the result is always an object.
countnumber|nullNumber of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page.

No examples provided.

list_monitors ~77

List all monitors associated with your API key. Supports pagination and filtering by status.

NameTypeReqDescription
limitnumberMaximum number of monitors to return (1-100). Defaults to 20.
offsetnumberNumber of monitors to skip for pagination. Defaults to 0.
statusstringFilter monitors by status.
NameTypeReqDescription
monitorsarrayThe monitors on this page (a condensed view — call get_monitor for full conditions).
paginationobjectPage position.
summarystringHuman-readable count of total, active, and paused monitors.

No examples provided.

list_rate_alerts ~48

List the rate alerts subscribed for a given email (status, product, state, intent, target, last notified).

NameTypeReqDescription
emailstringyesThe email whose alerts to list. Required.
NameTypeReqDescription
alertsarrayThe borrower's alerts, newest first.
countnumberNumber of alerts returned.

No examples provided.

list_rates ~222

List and filter raw rate rows (the core data primitive) by product, state, lender, and term with limit/offset pagination. Boats, RVs, motorcycles, and powersports are first-class product types; auto_loan means cars.

NameTypeReqDescription
audiencestringWHO the product is for, orthogonal to product type: 'business' returns business-audience products across every category (DSCR mortgages, business deposits, SBA loans); 'consumer' excludes them.
lenderstringFilter by credit-union name (substring, case-insensitive)
limitnumber1-500, default 50
loan_programstring
max_aprnumber
min_aprnumber
offsetnumberPagination offset, default 0
product_typestring
sortstringDefault apr_asc
statestring2-letter US state code; omit for all states
term_monthsnumber
NameTypeReqDescription
as_ofstring|nullUTC timestamp of the newest rate in this result set; the whole page is at least this stale.
filtersobjectThe filters that were applied to produce these rows; null members were not constrained.
paginationobjectWhere this page sits within the full result set.
ratesarrayThe matching rate rows for this page, in the order given by filters.sort.

No examples provided.

list_scenarios ~21

List saved client scenarios for the account, newest first.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countnumber|nullNumber of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page.
scenariosarrayThe scenarios visible to the API key making the call. Empty when the org has none; the MCP layer wraps the upstream array so the result is always an object.

No examples provided.

list_shares ~64

List all hosted shareable report links for the account, newest first. Returns token, scenario_id, client_name, views, last_viewed_at, revoked, created_at, and url for each share. Use this to see view analytics and manage which links are still live.

Input schema present but exposes no named parameters.

NameTypeReqDescription
countnumber|nullNumber of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page.
sharesarrayThe shares visible to the API key making the call. Empty when the org has none; the MCP layer wraps the upstream array so the result is always an object.

No examples provided.

list_webhook_deliveries ~228

Org-scoped webhook delivery observability for the authenticated API key. Lists the per-event webhook delivery log for your monitors — each row shows status (delivered/failed/pending), HTTP response code, error, response time, the destination URL, and timestamp — with a roll-up summary (total/delivered/failed/pending). Use this to surface SILENT webhook failures (a delivery that never reached your endpoint). Filter by monitor_id and/or status. To replay a failed (or any) delivery, set redeliver_id to that row's id; the original payload is re-sent verbatim and the replay is itself audited. Distinct from deliver_test_webhook, which sends a brand-new simulated event.

NameTypeReqDescription
limitinteger
monitor_idstringFilter to one monitor.
offsetinteger
redeliver_idintegerIf set, replay the delivery with this audit-log id instead of listing (maps to action:redeliver, delivery_id).
statusstringFilter by delivery outcome.
NameTypeReqDescription
contentarrayMCP content blocks carrying a one-line human summary of the deliveries or the redelivery.
disclosuresarrayScoping and replay-semantics caveats.
next_actionsarraySuggested follow-up tool names.
structuredContentobjectThe raw /v1/webhook-deliveries payload. In list mode: deliveries, summary, limit, offset. In redelivery mode: redelivered, delivery_id, new_status, delivery_status_code, response_time_ms, error.

No examples provided.

max_loan ~205

Estimate the largest loan a borrower can afford from income and a target debt-to-income (DTI) ratio. Returns max monthly payment, max loan amount, and the rate used. If no rate is supplied, the current best market rate for the product/state is used.

NameTypeReqDescription
dtinumberyesTarget debt-to-income ratio as a decimal, e.g. 0.36
existing_monthly_debtnumberOptional existing monthly debt payments to subtract
income_annualnumberyesGross annual income in dollars
product_typestringProduct for the market-rate lookup, default mortgage
ratenumberOptional annual interest rate, e.g. 6.5. If omitted, best market rate is used.
statestringUS state code (used to look up a market rate when rate is omitted)
term_monthsnumberyesLoan term in months (e.g. 360)
NameTypeReqDescription
assumptionsobjectThe inputs the calculation rests on; state them alongside the number.
max_loan_amountstring|nullLargest loan principal in dollars that payment supports at the rate and term used. This is a loan amount, not a home price.
max_monthly_paymentstring|nullLargest monthly payment in dollars the income supports at the target DTI, after subtracting existing debts.
notestring|nullRequired caveat that this uses income and DTI only; lenders also weigh credit, down payment, and reserves.
rate_sourcestring|nullWhere rate_used came from: 'provided' means the caller supplied it, 'market' means it was resolved from the best live published rate for this state and product.
rate_usedstring|nullInterest rate, in percent, used for every calculation in this result. Check rate_source to see whether it came from the caller or from live market data.

No examples provided.

optimize_buydown ~165

Given a discount-points / lender-credit tradeoff menu for a candidate loan, returns break-even months, lifetime savings, and the optimal point-spend. The points analog of refinance_break_even.

NameTypeReqDescription
base_ratenumberyesThe no-points (par) interest rate, percent, e.g. 6.75.
hold_monthsnumberExpected time-in-loan horizon for lifetime savings; defaults to term_months.
loan_amountnumberyesLoan principal in dollars (>0).
optionsarrayyesPoints/lender-credit tradeoff menu to evaluate.
statestringOptional 2-letter state (validated only if supplied).
term_monthsnumberyesLoan term in months, e.g. 360.
NameTypeReqDescription
assumed_defaultsobjectInputs filled in because the caller did not supply them, notably the holding period that decides the winner.
base_monthly_paymentstring|nullMonthly principal-and-interest payment in dollars at the base rate.
base_ratestring|nullThe no-points starting rate as a percent string, the baseline every option is measured against.
disclosuresarrayCaveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them.
hold_monthsnumber|nullHow long the borrower is assumed to keep the loan. Buying points only wins if this exceeds the option's break-even.
loan_amountstring|nullLoan amount in dollars as a formatted string; point costs are a percentage of this.
next_actionsarraySuggested follow-up tools that would deepen this answer; offer them as next steps, not as results.
optimalobjectThe option that maximizes net savings over the assumed holding period.
optionsarrayEach points/rate combination modeled, including negative points (lender credits) where supplied.
reasonstring|nullWhy no buydown option was recommended, present only in that case — e.g. 'No option produces positive net savings over the hold horizon; paying par (no points) is best.'
recommendationstring|nullThe action implied by the analysis, e.g. 'buy_points', 'no_points', or 'take_credit'.
statestring|nullTwo-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state.
term_monthsnumber|nullLoan term in months (360 = 30 years, 180 = 15 years, 60 = 5 years).

No examples provided.

project_pmi_removal ~278

For low-down-payment borrowers (LTV > 80%): projects when private mortgage insurance (PMI) drops off, the total PMI paid until then, and how much extra monthly principal cancels PMI sooner. Reuses the same amortization + PMI logic as estimate_monthly_cost. If no rate is supplied, the current best market rate for the state is used. Use for 'when does my PMI go away / how do I get rid of PMI faster?' questions.

NameTypeReqDescription
credit_scorenumberOptional, for market-rate lookup.
down_paymentnumberCash down, dollars. Default 0.
extra_monthly_paymentnumberOptional extra principal/month to model faster cancel. Default 0.
home_pricenumberPurchase/appraised price. Required unless loan_amount given.
loan_amountnumberOptional explicit loan; overrides home_price - down_payment.
pmi_ratenumberAnnual PMI as % of loan balance. Default 0.5.
ratenumberAnnual rate %, e.g. 6.5. Omit -> best market rate for state.
statestring2-letter code for market-rate lookup. Default CA.
term_monthsnumberLoan term in months. Default 360.
NameTypeReqDescription
assumed_defaultsobjectInputs the caller did not supply that were filled in with defaults. State these explicitly to the user, since they drive the numbers.
disclosuresarrayCaveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them.
down_paymentstring|nullCash in dollars put down at closing.
extra_neededarrayHow much extra principal per month would be required to hit 80% LTV by various target dates.
home_pricestring|nullPurchase price in dollars, as a formatted string.
loan_amountstring|nullAmount borrowed in dollars.
monthly_pistring|nullMonthly principal-and-interest payment in dollars, excluding PMI.
monthly_pmi_initialstring|nullMonthly PMI premium in dollars at the start, before the balance amortizes down.
next_actionsarraySuggested follow-up tools that would deepen this answer; offer them as next steps, not as results.
pmi_appliesboolean|nullTrue when PMI is required at origination; false means the rest of this projection is moot.
pmi_dropobjectThe two dates PMI can come off: the earlier one the borrower must request, the later one is automatic.
rate_sourcestring|nullWhere rate_used came from: 'provided' means the caller supplied it, 'market' means it was resolved from the best live published rate for this state and product.
rate_usedstring|nullInterest rate, in percent, used for every calculation in this result. Check rate_source to see whether it came from the caller or from live market data.
starting_ltvstring|nullLoan-to-value at origination as a percent string. PMI applies above 80%.
total_pmi_paidstring|nullTotal PMI in dollars paid before it drops off, on the scheduled payments alone.
with_extra_paymentobjectHow the caller's extra monthly principal payment accelerates PMI removal.

No examples provided.

Common questions

What is the RateAPI — live US mortgage, auto, HELOC, personal… MCP server?

RateAPI — live US mortgage, auto, HELOC, personal… is an MCP server listed in the public MCP registry as dev.rateapi/mcp. Live US mortgage, auto, HELOC, personal & deposit rates with evidence, plus who can join each lender. This page covers its hosted endpoint (https://mcp.rateapi.dev/mcp).

Is the RateAPI — live US mortgage, auto, HELOC, personal… MCP server safe to use?

RateAPI — live US mortgage, auto, HELOC, personal… scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the RateAPI — live US mortgage, auto, HELOC, personal… MCP server expose?

RateAPI — live US mortgage, auto, HELOC, personal… exposes 89 tools: get_financing_decision, list_credit_unions, find_credit_unions_near_zip, find_product_rates_near_zip, get_credit_union, and 84 more. Their descriptions and schemas cost roughly 19,967 tokens of context every time the server is loaded.

Does the RateAPI — live US mortgage, auto, HELOC, personal… MCP server require authentication?

Yes. RateAPI — live US mortgage, auto, HELOC, personal… asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the RateAPI — live US mortgage, auto, HELOC, personal… MCP server still maintained?

RateAPI — live US mortgage, auto, HELOC, personal… is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.