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
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
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
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
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
claude mcp add --transport http dev-rateapi-mcp 'https://mcp.rateapi.dev/mcp'
{
"mcpServers": {
"dev-rateapi-mcp": {
"url": "https://mcp.rateapi.dev/mcp"
}
}
} {
"servers": {
"dev-rateapi-mcp": {
"type": "http",
"url": "https://mcp.rateapi.dev/mcp"
}
}
} [mcp_servers.dev-rateapi-mcp] url = "https://mcp.rateapi.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dev-rateapi-mcp": {
"type": "remote",
"url": "https://mcp.rateapi.dev/mcp",
"enabled": true
}
}
} openclaw mcp add dev-rateapi-mcp --url 'https://mcp.rateapi.dev/mcp' --transport streamable-http
mcp_servers:
dev-rateapi-mcp:
url: "https://mcp.rateapi.dev/mcp" {
"McpServers": {
"dev-rateapi-mcp": {
"Transport": "http",
"Url": "https://mcp.rateapi.dev/mcp"
}
}
} assistant mcp add dev-rateapi-mcp -t streamable-http -u 'https://mcp.rateapi.dev/mcp'
{
"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.
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
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 |
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_offers | number | – | Maximum product-matched offers to return (1-8, default 5). |
| product_type | string | yes | Product whose current published rates should be compared. |
| term_months | number | – | Optional comparable loan term. For fixed mortgages, under 300 months selects the 15-year market and 300+ selects 30-year. |
| vehicle_condition | string | – | Auto loans only. Omit to use the new-auto market. |
| zip | string | yes | Five-digit US ZIP code used as the center of the nearby-branch search. |
| Name | Type | Req | Description |
|---|---|---|---|
| disclosure | string|null | – | Precision and methodology caveat for the distances and locations above; carry it into any answer that quotes them. |
| nearby_credit_union_count | number|null | – | How many credit unions were found near this ZIP before filtering to those publishing this product; `offers` is usually shorter. |
| offers | array | – | Published offers from nearby credit unions, ordered by the rule in `ranked_by`. |
| precision | string|null | – | Overall precision of the distance estimates, e.g. 'ZIP-centroid straight-line estimate'. |
| product_type | string|null | – | Loan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'. |
| ranked_by | string|null | – | The ordering rule applied to `offers`, e.g. lowest APR among credit unions with nearby reported branches — proximity filters the set, price sorts it. |
| unavailable_reason | string|null | – | Why `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. |
| zip | string|null | – | Five-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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Visible offers per bucket, 1-50. Candidate intersection happens before this cap. |
| person | object | yes | Confirmed 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… |
| product | object | yes | The financial product and matching attributes to route. |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | Most recent observation timestamp among returned rates. |
| completeness | object | – | Honest evaluation and display-cap metadata, including current-publication-only membership proof semantics. |
| counts | object | – | Full pre-display-cap counts for each reachability bucket. |
| disclosure | string|null | – | Required distinction between evidence-backed routing, published pricing, final availability, and approval. |
| discovery | object | – | Graph retrieval telemetry. candidate_scope=active_fleet and candidate_set_truncated=false prove exhaustive evaluation. |
| eligibility_snapshot | object | – | Immutable eligibility graph generation and pinned rules clock used for this result when snapshot serving is available. |
| no_published_offer | array | – | Graph-positive institutions without a matching fresh evidenced rate; absence remains unknown. |
| product | object | – | Normalized product request used for matching. |
| ranking_basis | string|null | – | Deposits 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_action | array | – | Offers with a documented membership action and a fresh, evidenced published rate. |
| reachable_now | array | – | Offers with a verified membership path and a fresh, evidenced published rate. |
| semantics | string|null | – | The positive-evidence-only interpretation contract. |
| unresolved | array | – | Published-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).
| Name | Type | Req | Description |
|---|---|---|---|
| advisor_name | string | – | Optional advisor/company name for the report header |
| client_name | string | – | Client label, if not using scenario_id |
| result | object | – | The comparison result to format, if not using scenario_id |
| scenario_id | string | – | Optional: a saved scenario id to build the report from |
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Always 'markdown'. |
| markdown | string | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| scenario_id | string | yes | The saved scenario id to mint a share link for. Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| created_at | string|null | – | ISO-8601 creation timestamp. |
| scenario_id | string | – | Scenario the link renders. |
| token | string | – | Share token — pass to revoke_share to disable the link. |
| url | string | – | Public 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.
| Name | Type | Req | Description |
|---|---|---|---|
| product_type | string | – | Filter to a specific product type. If omitted, returns benchmarks for all product types. |
| state | string | – | Filter to a specific US state (2-letter code). If omitted, returns nationwide benchmarks. |
| Name | Type | Req | Description |
|---|---|---|---|
| benchmarks | array | – | Formatted per-product benchmark rows, one per product category, ready to present. |
| generatedAt | string|null | – | UTC timestamp when this benchmark response was assembled; the underlying rates are older, see each row's asOf. |
| rawData | array | – | The same benchmarks as unformatted numbers, for calculation rather than display. |
| stateFilter | string|null | – | Scope of the benchmark set as a label — 'Nationwide' when no state narrowing was applied. Check this before describing the numbers as local. |
| summary | string|null | – | Plain-English headline of the benchmark set, e.g. the range of 30-year fixed APRs and how many credit unions publish them. |
| totalInstitutions | string|null | – | Number 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).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Cohort id. Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| changed | array | – | Members whose best offer moved since the previous snapshot. |
| scanned | number | – | Members evaluated in this scan. |
| triage | array | – | Every 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.
| Name | Type | Req | Description |
|---|---|---|---|
| freshness_days | number | – | Optional 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_by | string | – | Optional segmentation axis. Default 'state'. |
| product_category | string | – | Optional. Restrict the matrix to one product category. Omit for all. |
| state | string | – | Optional 2-letter US state code to scope the matrix to a single state. |
| Name | Type | Req | Description |
|---|---|---|---|
| coverage | object | – | Which states and product types appear in the data, as flat lists. |
| disclosures | array | – | Caveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them. |
| freshness_days | number|null | – | Age limit in days a rate must be within to be counted here; rows older than this are excluded from the totals. |
| freshness_mode | string|null | – | How the freshness window was chosen: 'per_category' applies a category-specific window instead of one global value. |
| generated_at | string|null | – | UTC timestamp when this coverage snapshot was computed. |
| institution_profiles | object | – | Coverage of the NCUA institution reference data that backs lender context, separate from rate coverage. |
| next_actions | array | – | Suggested follow-up tools given this coverage picture, as bare tool names. |
| note | string|null | – | Plain-English description of how this coverage matrix is grouped and what it totals. |
| segments | array | – | Coverage broken down by the requested grouping, largest first. |
| totals | object | – | Overall 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.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | yes | Credit union slug (URL-friendly name, e.g., "navy-federal-credit-union"). Required. |
| state | string | yes | US state code (2-letter, e.g., CA, TX, NY). Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| all_rates | array | – | Every rate currently on file for this credit union, deposits and loans together. |
| best_rate | object | – | The 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_union | object | – | Core identity and freshness facts for this credit union. |
| eligibility | object | – | Who may join this credit union, derived from its published membership criteria — guidance, not an underwriting decision. |
| ncua_profile | object | – | Institution facts from the NCUA quarterly call report — regulator-filed data, independent of the scraped rates. |
| summary | string|null | – | One-sentence plain-English summary of this result, safe to quote directly to the user. |
| widget | object | – | Pre-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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Top N credit unions to rank (default 10, clamp 1..50). |
| metric | string | – | Deposits rank by APY, highest first. No APR. |
| product | string | – | MCP 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. |
| state | string | – | 2-letter US state code; omit for nationwide. |
| term_months | number | – | For CD/share_certificate/ira_cd: filter to a specific term (savings_term_months). |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | UTC timestamp of the underlying rate data. This is when the rates were last scraped from lender sites, not when this call ran. |
| benchmark_balance | – | – | Deposit balance in dollars the rates are quoted at. Null means no balance tier was applied, so tiered rates may not be comparable. |
| best | object | – | The single highest-yielding offer found. |
| count | number|null | – | Number of rows returned in `table`, capped by the caller's limit. |
| market | object | – | Distribution of APYs across the market for this product, for context around `best`. |
| note | string|null | – | Data caveats for this response, including that APY is shown rather than APR and that history is retention-bounded. |
| product_category | string|null | – | Deposit product benchmarked, e.g. 'cd', 'savings', 'money_market'. |
| state | string|null | – | Two-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state. |
| table | array | – | Ranked deposit offers, highest APY first. |
| term_months | number|null | – | Certificate term in months these rows are scoped to. Null for non-term products like savings. |
| total_credit_unions | number|null | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| benchmark | string | – | – |
| group_by | string | – | – |
| product | string | yes | Required MCP product field. Use one exact underscore enum value; money market is `money_market`, never `mma` or `money-market`. |
| state | string | – | 2-letter US state code |
| term_months | number | – | – |
| window | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| benchmark_requested | string|null | – | The benchmark the caller asked deposit rates to be measured against, e.g. 'cd_top_quartile'. |
| benchmark_used | string|null | – | The benchmark actually used, which can differ from benchmark_requested when the requested one lacked data. |
| confidence | string|null | – | Qualitative reliability of the beta estimate — 'low' when the history window is short relative to a full rate cycle. |
| data_source | string|null | – | Internal backing store that served this query ('clickhouse'); operational detail, not something to report to the user. |
| disclosures | array | – | Caveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them. |
| group_by | string|null | – | How results are grouped, e.g. 'cu' for one segment per credit union. |
| history_depth_days | number|null | – | Days of retained rate history available for this calculation. 0 means no usable history, so every beta is null. |
| note | string|null | – | Methodology caveat explaining that this is a short-window beta from retained published history, not a full-cycle beta. |
| peer | object | – | Distribution of beta across the peer group. |
| product | string|null | – | Deposit product the beta was computed for, e.g. 'savings' or 'cd'. |
| segments | array | – | One beta result per group. An empty array means the retained history was too shallow to compute any beta, not that beta is zero. |
| state | – | – | Two-letter state code the analysis was scoped to. Null means nationwide. |
| term_months | – | – | Certificate term in months the analysis was scoped to. Null for non-term products. |
| window | string|null | – | Lookback 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.
| Name | Type | Req | Description |
|---|---|---|---|
| slug | string | – | The page identifier returned by search_docs. |
| url | string | – | Alternatively, the canonical published URL of the page. |
| Name | Type | Req | Description |
|---|---|---|---|
| available | array|null | – | Valid slugs, returned alongside an error. |
| content | string|null | – | Full page text in markdown, ending with its source URL. |
| error | string|null | – | Present when no page matched the reference given. |
| slug | string|null | – | The page identifier. |
| summary | string|null | – | One-line description of the page. |
| title | string|null | – | Page title. |
| url | string|null | – | Canonical 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque next_cursor from the prior page; do not construct or modify it. |
| limit | integer | – | Maximum publication changes returned. |
| since | string | yes | Exclusive ISO 8601 activation boundary with an offset. |
| Name | Type | Req | Description |
|---|---|---|---|
| changes | array | – | Active publication replacements in stable ascending order. |
| disclosure | string|null | – | Required warning that this is not a personal eligibility verdict or full history. |
| has_more | boolean|null | – | Whether another page is available. |
| next_cursor | string|null | – | Opaque cursor for the next page, or null. |
| ordering | array | – | Stable ordering columns. |
| returned | number|null | – | Number of changes in this page. |
| semantics | string|null | – | Active-publication incremental cache-invalidation contract. |
| since | string|null | – | Normalized 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.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | Most recent rule confirmation across the live graph (ISO 8601) — the moment the data last moved. |
| authority | object|null | – | Serving-authority adoption. Exact immutable publications are separated from older graph and flat compatibility records. |
| by_kind | array|null | – | Live rules and distinct institutions per rule kind, largest first. |
| credit_data | object|null | – | Explicit statement that no rule condition references credit data. |
| disclosure | string|null | – | Statement that must accompany any consumer-facing use of eligibility data. |
| evidence_sources | array|null | – | Live rule counts by recorded evidence source class; institution counts may overlap. |
| fleet | object|null | – | The denominator: active institutions and how many the graph holds live rules for. |
| generated_at | string|null | – | When the aggregate was computed (ISO 8601). Edge-cached for an hour. |
| headline | string|null | – | One dated sentence carrying every headline number next to its denominator. Quote it verbatim. |
| pipeline | array|null | – | Institutions by eligibility pipeline status — why an institution may be absent from the graph (no source found, needs review, pending). |
| population | object|null | – | Population disclosure: graph inventory, not a personal eligibility decision or reachable-offer count. |
| reach | object|null | – | How specific the rules are: distinct places and organizations named, and institutions carrying each path type. |
| rules | object|null | – | Live rule counts, verification split and freshness. |
| semantics | string|null | – | How 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.
| Name | Type | Req | Description |
|---|---|---|---|
| branding | object|null | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| endTime | string | – | End of the time range. Supports ISO8601 or relative times. Defaults to "now". |
| product_type | string | – | Filter statistics to a specific product type. If omitted, returns stats for all product types. |
| startTime | string | – | Start 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". |
| Name | Type | Req | Description |
|---|---|---|---|
| coverage | object | – | Breadth of the dataset. |
| dataQuality | object|null | – | Data-health indicators, passed through unchanged from /v1/stats. |
| generatedAt | string|null | – | ISO-8601 time the stats were computed. |
| hourlyTrendSample | array | – | First six hourly buckets of the trend series (a sample, not the full series). |
| products | array | – | Full product-type breakdown. |
| query | object|null | – | The resolved time window and filters the stats were computed over. |
| stats | object | – | Headline counters. Note the string formatting. |
| summary | string | – | One-line headline of rates extracted, per-hour throughput, and institution count. |
| topProducts | string | – | Pre-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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Loan amount in dollars (minimum 1000). Required. |
| county | string | – | User's county for membership-eligibility matching (credit union field-of-membership). Helps flag which lenders the user can actually join. |
| credit_score | number | – | Borrower's credit score (300-850). Highly recommended for accurate rate matching. |
| current_apr | number | – | Current offer APR if refinancing (percentage). |
| current_rate | number | – | Current offer rate if refinancing (percentage, e.g., 6.5 for 6.5%). |
| eligible_only | boolean | – | BETA (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… |
| employer | string | – | User's employer, matched against credit union employer/SEG membership lists for eligibility. |
| include_institution_context | boolean | – | Optional: Include compact NCUA quarterly facts on each final offer (members, locations, assets, year opened, and selected relationship services). |
| include_out_of_state | boolean | – | Optional: Include documented out-of-state open or multi-state credit-union candidates. Defaults to false, which preserves the requested-state candidate set. |
| intent | string | yes | The loan intent. For mortgages, use "purchase" or "refinance". For auto loans, use "purchase" (new/used car) or "refinance" (existing auto loan). Required. |
| max_providers | number | – | Maximum number of providers to return (1-5). Defaults to 5. |
| military_status | string | – | User's military affiliation. Annotates offers with eligible_via_military where the credit union has a military field of membership. |
| no_points | boolean | – | If true, prefer no-points loans only. Applies to mortgages. |
| product_type | string | – | Type 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… |
| school | string | – | User's school/college/university. Supply school_relationship too; a school name alone does not affirm a typed eligibility path. |
| school_relationship | string | – | How the user relates to the named school. Required with school to affirm a typed student, alumni, or school-employee path. |
| state | string | yes | Valid 50-state/DC code (2-letter, e.g., CA, TX, NY). Required; lowercase is accepted and normalized. |
| term_months | number | – | Loan 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_condition | string | – | AUTO LOANS ONLY: Condition of the vehicle being purchased or refinanced. Affects rate eligibility. |
| vehicle_type | string | – | AUTO LOANS ONLY: Type of vehicle being financed. Some lenders offer specialized rates by vehicle type. |
| vehicle_year | number | – | AUTO LOANS ONLY: Model year of the vehicle (e.g., 2024, 2020). Used to determine age-based rate tiers. |
| worship | string | – | User's place of worship, used to annotate offers with worship-org-affinity eligibility. |
| zip | string | – | User'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. |
| Name | Type | Req | Description |
|---|---|---|---|
| rate_range | object | – | Span of rates across the offers considered, for framing how much shopping around is worth. |
| recommendation | object | – | The recommended course of action and how strongly it is held. |
| request_id | string|null | – | Opaque identifier for this call, useful only for support or debugging; never show it to the user. |
| resolved_county | object | – | County the supplied ZIP was resolved to, used for eligibility and local branch matching. |
| summary | string|null | – | Headline verdict for the user in one line, e.g. 'Shop Around - Better rates available'. |
| top_offers | array | – | Best live published offers for this scenario, already sorted best-first. |
| tradeoffs | array | – | Costs, caveats, and conditions the user should weigh before acting, such as closing costs or membership requirements. |
| why | array | – | Ordered 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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_institution_context | boolean | – | Include compact NCUA member, location, asset, founding-year, and selected service facts per lender. |
| limit | number | – | Top N lenders to return (default 10, clamped 1..50) |
| metric | string | – | Rank by apr (default) or rate |
| product | string | yes | Mortgage product |
| state | string | yes | 2-letter US state code, e.g. CA, TX, NY |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | UTC timestamp of the underlying rate data. This is when the rates were last scraped from lender sites, not when this call ran. |
| count | number|null | – | Rows actually returned in `table`. |
| limit | number|null | – | Maximum rows the caller asked for. |
| market | object | – | Distribution across all lenders publishing this product, including those below the table cutoff. |
| metric | string|null | – | Value the ranking is sorted by — 'apr' ranks by true cost including fees, 'rate' by the note rate alone. |
| note | string|null | – | Plain-English interpretation of the numbers above, already phrased for the user; quote it rather than re-deriving the comparison. |
| product | string|null | – | Product key the table ranks, e.g. '30yr_fixed'. |
| state | string|null | – | Two-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state. |
| table | array | – | Lenders ranked best-first by the chosen metric. |
| total_lenders | number|null | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| monitor_id | string | yes | The unique identifier of the monitor. Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| error | string|null | – | Present and set to 'not_found' when the monitor id does not exist. |
| monitor | object | – | The monitor. Absent when not found. |
| summary | string | – | Monitor 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.
| Name | Type | Req | Description |
|---|---|---|---|
| active_monitors | number | – | Monitors in 'active' status. |
| reset_date | string|null | – | When the monthly counter resets. |
| total_monitors | number | – | Monitors on the account. |
| webhooks_sent_this_month | number | – | Webhooks sent this month. |
| webhooks_sent_today | number | – | Webhooks 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit_per_product | integer | – | Maximum detail rows for each selector, subject to the total and plan caps. Default 5. |
| person | object | yes | Explicit caller-supplied person facts. Unknown facts stay absent; do not infer them. |
| products | array | yes | One to nineteen unique explicit product selectors. Do not invent missing scenario facts. |
| total_limit | integer | – | Maximum detail rows across all selectors; must be at least the selector count. Default 50. |
| Name | Type | Req | Description |
|---|---|---|---|
| catalog_version | string|null | – | Stable access-catalog response contract version. |
| completeness | object | – | Fleet, selector, evaluation-strategy, cap, and truncation disclosure. |
| disclosure | string|null | – | Required separation of membership, suitability, published pricing, underwriting, and approval. |
| products | array | – | One result per selector in request order. |
| questions | object | – | Membership questions shared across selectors. |
| semantics | string|null | – | Positive-evidence-only interpretation contract; unknown never means ineligible. |
| snapshot | object | – | Eligibility 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.
| Name | Type | Req | Description |
|---|---|---|---|
| products | array | yes | Exact deposit product references; no fuzzy product matching is performed. |
| Name | Type | Req | Description |
|---|---|---|---|
| counts | object | – | Requested product and distinct institution counts. |
| disclosure | string|null | – | Required warning against interpreting access metadata as personal eligibility or approval. |
| envelopes | array | – | One access envelope per input in stable order. |
| semantics | string|null | – | Non-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.
| Name | Type | Req | Description |
|---|---|---|---|
| product_type | string | yes | Type of financing product. Required. |
| since | string | – | How far back to compare against. Defaults to "1w". |
| state | string | yes | US state code (2-letter, e.g., CA, TX). Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| change | object | – | Movement from `then` to `now`. |
| data_source | string|null | – | Internal backing store that served this query ('clickhouse'); operational detail, not something to report to the user. |
| note | string|null | – | Plain-English interpretation of the numbers above, already phrased for the user; quote it rather than re-deriving the comparison. |
| now | object | – | Current market snapshot for this product and state. |
| product_type | string|null | – | Loan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'. |
| state | string|null | – | Two-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state. |
| then | object | – | Snapshot at the start of the window, for comparison against `now`. |
| window | string|null | – | Lookback 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).
| Name | Type | Req | Description |
|---|---|---|---|
| interval | string | – | Bucket granularity per point. Default "week". |
| product_type | string | yes | Type of financing product. Required. |
| state | string | yes | US state code (2-letter, e.g., CA, TX). Required. |
| vehicle_condition | string | – | auto_loan only; selects the benchmark bucket. Default "new". |
| window | string | – | Lookback window. Default "90d". Bounded by data retention. |
| Name | Type | Req | Description |
|---|---|---|---|
| data_source | string|null | – | Internal backing store that served this query ('clickhouse'); operational detail, not something to report to the user. |
| interval | string|null | – | Bucket size the series is aggregated into, e.g. 'week', 'day', or 'month'. Each entry in `series` covers one of these. |
| note | string|null | – | Coverage 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_type | string|null | – | Loan or deposit category this result covers, e.g. 'mortgage', 'auto_loan', 'heloc', 'savings'. |
| series | array | – | One bucket per interval across the window, oldest first. Buckets with no scrapes are present with null statistics. |
| state | string|null | – | Two-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state. |
| summary | object | – | Start-to-end comparison across the populated portion of the series. |
| window | string|null | – | Lookback 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).
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Scenario id |
| Name | Type | Req | Description |
|---|---|---|---|
| clientName | string | – | Client label. |
| createdAt | string|null | – | ISO-8601 creation timestamp. |
| error | string|null | – | Present when the scenario was not found. |
| id | string | – | Scenario id. |
| input | object|null | – | The decision inputs that produced the snapshot. |
| resultSnapshot | – | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number|null | – | Monthly request allowance for the org's tier. |
| remaining | number|null | – | Requests left this month. Null on an unlimited plan. |
| requests_this_month | number | – | Requests since the start of the current month — the number metered against the limit. |
| requests_today | number | – | Requests since midnight. |
| reset_date | string|null | – | When the monthly counter resets. |
| total_requests | number | – | All-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.
| Name | Type | Req | Description |
|---|---|---|---|
| cohorts | array | – | The 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. |
| count | number|null | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | – | Optional: Filter to a specific state (2-letter code). If not provided, returns all states. |
| zip | string | – | Optional: 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| credit_unions | array | – | The credit unions in this state, alphabetical by name. |
| state | string|null | – | Lower-cased two-letter state code the listing is scoped to. |
| state_name | string|null | – | Full state name, e.g. 'California'. |
| summary | string|null | – | One-sentence plain-English summary of this result, safe to quote directly to the user. |
| total_credit_unions | number|null | – | Number of credit unions known in this state, including those with no published rates. |
| verified_last_7_days | number|null | – | How many have had their rates re-scraped and confirmed in the past 7 days; the rest may be staler. |
| with_rates | number|null | – | How 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max rows (default 20, max 100) |
| offset | number | – | Pagination offset |
| request_id | string | – | Optional: look up a specific decision by its request_id |
| Name | Type | Req | Description |
|---|---|---|---|
| has_more | boolean | – | True when further pages exist. |
| logs | array | – | Audit rows, newest first. |
| total | number | – | Total 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | number|null | – | Number of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page. |
| digests | array | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| campaigns | array | – | The 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. |
| count | number|null | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum number of monitors to return (1-100). Defaults to 20. |
| offset | number | – | Number of monitors to skip for pagination. Defaults to 0. |
| status | string | – | Filter monitors by status. |
| Name | Type | Req | Description |
|---|---|---|---|
| monitors | array | – | The monitors on this page (a condensed view — call get_monitor for full conditions). |
| pagination | object | – | Page position. |
| summary | string | – | Human-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).
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | The email whose alerts to list. Required. |
| Name | Type | Req | Description |
|---|---|---|---|
| alerts | array | – | The borrower's alerts, newest first. |
| count | number | – | Number 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.
| Name | Type | Req | Description |
|---|---|---|---|
| audience | string | – | WHO 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. |
| lender | string | – | Filter by credit-union name (substring, case-insensitive) |
| limit | number | – | 1-500, default 50 |
| loan_program | string | – | – |
| max_apr | number | – | – |
| min_apr | number | – | – |
| offset | number | – | Pagination offset, default 0 |
| product_type | string | – | – |
| sort | string | – | Default apr_asc |
| state | string | – | 2-letter US state code; omit for all states |
| term_months | number | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string|null | – | UTC timestamp of the newest rate in this result set; the whole page is at least this stale. |
| filters | object | – | The filters that were applied to produce these rows; null members were not constrained. |
| pagination | object | – | Where this page sits within the full result set. |
| rates | array | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | number|null | – | Number of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page. |
| scenarios | array | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | number|null | – | Number of items in the array above. There is no pagination on this route — this is the complete set for the org, not a page. |
| shares | array | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| monitor_id | string | – | Filter to one monitor. |
| offset | integer | – | – |
| redeliver_id | integer | – | If set, replay the delivery with this audit-log id instead of listing (maps to action:redeliver, delivery_id). |
| status | string | – | Filter by delivery outcome. |
| Name | Type | Req | Description |
|---|---|---|---|
| content | array | – | MCP content blocks carrying a one-line human summary of the deliveries or the redelivery. |
| disclosures | array | – | Scoping and replay-semantics caveats. |
| next_actions | array | – | Suggested follow-up tool names. |
| structuredContent | object | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| dti | number | yes | Target debt-to-income ratio as a decimal, e.g. 0.36 |
| existing_monthly_debt | number | – | Optional existing monthly debt payments to subtract |
| income_annual | number | yes | Gross annual income in dollars |
| product_type | string | – | Product for the market-rate lookup, default mortgage |
| rate | number | – | Optional annual interest rate, e.g. 6.5. If omitted, best market rate is used. |
| state | string | – | US state code (used to look up a market rate when rate is omitted) |
| term_months | number | yes | Loan term in months (e.g. 360) |
| Name | Type | Req | Description |
|---|---|---|---|
| assumptions | object | – | The inputs the calculation rests on; state them alongside the number. |
| max_loan_amount | string|null | – | Largest loan principal in dollars that payment supports at the rate and term used. This is a loan amount, not a home price. |
| max_monthly_payment | string|null | – | Largest monthly payment in dollars the income supports at the target DTI, after subtracting existing debts. |
| note | string|null | – | Required caveat that this uses income and DTI only; lenders also weigh credit, down payment, and reserves. |
| rate_source | string|null | – | Where 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_used | string|null | – | Interest 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.
| Name | Type | Req | Description |
|---|---|---|---|
| base_rate | number | yes | The no-points (par) interest rate, percent, e.g. 6.75. |
| hold_months | number | – | Expected time-in-loan horizon for lifetime savings; defaults to term_months. |
| loan_amount | number | yes | Loan principal in dollars (>0). |
| options | array | yes | Points/lender-credit tradeoff menu to evaluate. |
| state | string | – | Optional 2-letter state (validated only if supplied). |
| term_months | number | yes | Loan term in months, e.g. 360. |
| Name | Type | Req | Description |
|---|---|---|---|
| assumed_defaults | object | – | Inputs filled in because the caller did not supply them, notably the holding period that decides the winner. |
| base_monthly_payment | string|null | – | Monthly principal-and-interest payment in dollars at the base rate. |
| base_rate | string|null | – | The no-points starting rate as a percent string, the baseline every option is measured against. |
| disclosures | array | – | Caveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them. |
| hold_months | number|null | – | How long the borrower is assumed to keep the loan. Buying points only wins if this exceeds the option's break-even. |
| loan_amount | string|null | – | Loan amount in dollars as a formatted string; point costs are a percentage of this. |
| next_actions | array | – | Suggested follow-up tools that would deepen this answer; offer them as next steps, not as results. |
| optimal | object | – | The option that maximizes net savings over the assumed holding period. |
| options | array | – | Each points/rate combination modeled, including negative points (lender credits) where supplied. |
| reason | string|null | – | Why 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.' |
| recommendation | string|null | – | The action implied by the analysis, e.g. 'buy_points', 'no_points', or 'take_credit'. |
| state | string|null | – | Two-letter US state code the result is scoped to (e.g. 'CA'). Null means the result was not filtered by state. |
| term_months | number|null | – | Loan 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.
| Name | Type | Req | Description |
|---|---|---|---|
| credit_score | number | – | Optional, for market-rate lookup. |
| down_payment | number | – | Cash down, dollars. Default 0. |
| extra_monthly_payment | number | – | Optional extra principal/month to model faster cancel. Default 0. |
| home_price | number | – | Purchase/appraised price. Required unless loan_amount given. |
| loan_amount | number | – | Optional explicit loan; overrides home_price - down_payment. |
| pmi_rate | number | – | Annual PMI as % of loan balance. Default 0.5. |
| rate | number | – | Annual rate %, e.g. 6.5. Omit -> best market rate for state. |
| state | string | – | 2-letter code for market-rate lookup. Default CA. |
| term_months | number | – | Loan term in months. Default 360. |
| Name | Type | Req | Description |
|---|---|---|---|
| assumed_defaults | object | – | Inputs the caller did not supply that were filled in with defaults. State these explicitly to the user, since they drive the numbers. |
| disclosures | array | – | Caveats and assumptions that must accompany any answer built from this result; surface them rather than dropping them. |
| down_payment | string|null | – | Cash in dollars put down at closing. |
| extra_needed | array | – | How much extra principal per month would be required to hit 80% LTV by various target dates. |
| home_price | string|null | – | Purchase price in dollars, as a formatted string. |
| loan_amount | string|null | – | Amount borrowed in dollars. |
| monthly_pi | string|null | – | Monthly principal-and-interest payment in dollars, excluding PMI. |
| monthly_pmi_initial | string|null | – | Monthly PMI premium in dollars at the start, before the balance amortizes down. |
| next_actions | array | – | Suggested follow-up tools that would deepen this answer; offer them as next steps, not as results. |
| pmi_applies | boolean|null | – | True when PMI is required at origination; false means the rest of this projection is moot. |
| pmi_drop | object | – | The two dates PMI can come off: the earlier one the borrower must request, the later one is automatic. |
| rate_source | string|null | – | Where 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_used | string|null | – | Interest 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_ltv | string|null | – | Loan-to-value at origination as a percent string. PMI applies above 80%. |
| total_pmi_paid | string|null | – | Total PMI in dollars paid before it drops off, on the scheduled payments alone. |
| with_extra_payment | object | – | How the caller's extra monthly principal payment accelerates PMI removal. |
No examples provided.
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.