US mortgage rate estimates, lender rankings and research, and US Treasury market data.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Assess hazard exposure and insurance conditions for a US location: FEMA National Risk Index score, flood-zone coverage and whether flood insurance is likely to be required for a mortgage, wildfire and earthquake exposure, and local insurance-market conditions. Describes the area, not a specific property.
ZIP, city + state, or county + state. E.g. "33139", "Austin, TX".
Optional property value in dollars. Supplying it turns the premium rates into annual dollar estimates.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http saferate https://mcp.saferate.com/mcp
Assess hazard exposure and insurance conditions for a US location: FEMA National Risk Index score, flood-zone coverage and whether flood insurance is likely to be required for a mortgage, wildfire and earthquake exposure, and local insurance-market conditions. Describes the area, not a specific property.
| Argument | Type | Description |
|---|---|---|
| location* | any | ZIP, city + state, or county + state. E.g. "33139", "Austin, TX". |
| property_value | any | Optional property value in dollars. Supplying it turns the premium rates into annual dollar estimates. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location"
],
"properties": {
"location": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "number"
}
],
"description": "ZIP, city + state, or county + state. E.g. \"33139\", \"Austin, TX\"."
},
"property_value": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string"
}
],
"description": "Optional property value in dollars. Supplying it turns the premium rates into annual dollar estimates."
}
}
}Fetch one Safe Rate published page by the id returned from `search`. Returns plain text carrying its own as-of date, canonical URL, data license, and citation notice — quote and cite it rather than paraphrasing. Rate index pages are indicative and refreshed daily; they are not a quote for a specific borrower.
| Argument | Type | Description |
|---|---|---|
| id* | string | A document id from `search`, e.g. "local/austin-city-tx/mortgage-rates" or "lenders/velocio-mortgage". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "A document id from `search`, e.g. \"local/austin-city-tx/mortgage-rates\" or \"lenders/velocio-mortgage\"."
}
}
}List the lenders Safe Rate publishes rankings for in a metro area, sliced by loan type OR by institution type. Rankings are derived from public federal HMDA filings; placement cannot be purchased. This is a starting list, not a recommendation for a specific borrower.
| Argument | Type | Description |
|---|---|---|
| limit | any | How many lenders to return. Defaults to 10, max 25. |
| location* | any | ZIP, city + state, or county + state inside a US metro area. |
| loan_type | string | Rank lenders for one loan type, across all institution types. Cannot be combined with institution_type. Omit both to get the conventional-loans slice, which the response flags as an assumption. |
| institution_type | string | Rank lenders of one institution type, across all loan types. Cannot be combined with loan_type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location"
],
"properties": {
"limit": {
"anyOf": [
{
"type": "number",
"maximum": 25,
"minimum": 1
},
{
"type": "string"
}
],
"description": "How many lenders to return. Defaults to 10, max 25."
},
"location": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "number"
}
],
"description": "ZIP, city + state, or county + state inside a US metro area."
},
"loan_type": {
"enum": [
"all",
"conventional-loans",
"fha-loans",
"va-loans",
"usda-loans",
"jumbo-loans"
],
"type": "string",
"description": "Rank lenders for one loan type, across all institution types. Cannot be combined with institution_type. Omit both to get the conventional-loans slice, which the response flags as an assumption."
},
"institution_type": {
"enum": [
"all",
"banks",
"credit-unions",
"mortgage-companies"
],
"type": "string",
"description": "Rank lenders of one institution type, across all loan types. Cannot be combined with loan_type."
}
}
}Get local housing-market context for a US location: median home value with its national percentile, median rent, recent price appreciation, and historical mortgage activity from HMDA filings. Use this to answer whether a price or a market is typical.
| Argument | Type | Description |
|---|---|---|
| location* | any | ZIP, city + state, or county + state. E.g. "60607", "Austin, TX". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"location"
],
"properties": {
"location": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "number"
}
],
"description": "ZIP, city + state, or county + state. E.g. \"60607\", \"Austin, TX\"."
}
}
}Requires the shopper's Safe Rate sign-in (scope poppy:read). Read the shopper's own Safe Rate Universal Application, the one application they build to share with the lenders they choose (building it is not applying for a loan): their loan scenario (price, down payment, ZIP, occupancy and so on), how far along it is, and its status. Identity details such as a Social Security number are never returned.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Requires the shopper's Safe Rate sign-in (scope poppy:read). List the quote requests the shopper sent to lenders and the offers that came back (rate, APR, points, product). Offers from Safe Rate Mortgage stay hidden until the shopper accepts the affiliated business disclosure on saferate.com.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get live mortgage rate estimates for any US location without collecting the borrower's name, email, or phone number. Rates are Safe Rate's non-binding estimates (never quotes; a lender's actual quote may differ), and include an estimate ID the borrower can use to track rate changes.
| Argument | Type | Description |
|---|---|---|
| purpose | string | Defaults to purchase. |
| location | any | ZIP, city + state, or county + state. E.g. "60607", "Austin, TX". If the borrower has not said where, omit it: a client that supports elicitation is asked for it; any other client gets back ok: false listing what is missing, so ask the borrower and call again. |
| loan_type | string | Defaults to conventional. |
| occupancy | string | Defaults to primary. |
| credit_range | string | Borrower credit score range. Defaults to 720-759. |
| property_type | string | Defaults to single_family. |
| purchase_price | any | Purchase price or estimated property value, in dollars. Needed to price: if omitted, a client that supports elicitation is asked for it, any other gets back ok: false listing what is missing. Never invent one. |
Get current and historical U.S. savings bond rates — the Series I composite, its fixed and inflation components, and Series EE rates by issue cohort — and optionally how many bonds the public holds and how many are being sold. An I bond's headline rate applies for six months only; the fixed component is the part that lasts.
| Argument | Type | Description |
|---|---|---|
| on | string | Valuation date. Defaults to today. |
| include | array | Extras. "ee_cohorts" groups EE bonds by the rate rules of their issue window; "sales" is TreasuryDirect volume, which spikes when the I bond rate is high. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Valuation date. Defaults to today."
},
"include": {
"type": "array",
"items": {
"enum": [
"ee_cohorts",
"public_holdings",
"sales"
],
"type": "string"
},
"description": "Extras. \"ee_cohorts\" groups EE bonds by the rate rules of their issue window; \"sales\" is TreasuryDirect volume, which spikes when the I bond rate is high."
}
}
}Get the U.S. Treasury yield curve for a single day: the fitted zero-coupon (spot) curve and, on request, the par curve, money-market curve, TIPS real curve, breakeven inflation, the prior trading day for day-over-day moves, and per-CUSIP yields. Omit the date for the most recent published day, which is what you want on a weekend or holiday. Treasury yields are not mortgage rates.
| Argument | Type | Description |
|---|---|---|
| date | string | Trading day as YYYY-MM-DD. Omit for the most recent published day — most calendar days are not trading days, so omitting is usually right. |
| include | array | Which curves to return. Defaults to ["zero"]. "real" is the TIPS curve, "breakeven" the inflation implied between them, "prior" the previous trading day for comparison, "queue_yields" per-CUSIP yields and curve residuals. |
| queue_kind | string | Security kind for "queue_yields". Defaults to Note. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Trading day as YYYY-MM-DD. Omit for the most recent published day — most calendar days are not trading days, so omitting is usually right."
},
"include": {
"type": "array",
"items": {
"enum": [
"breakeven",
"prior",
"queue_yields",
"real",
"zero"
],
"type": "string"
},
"description": "Which curves to return. Defaults to [\"zero\"]. \"real\" is the TIPS curve, \"breakeven\" the inflation implied between them, \"prior\" the previous trading day for comparison, \"queue_yields\" per-CUSIP yields and curve residuals."
},
"queue_kind": {
"enum": [
"Bill",
"Bond",
"FRN",
"Note",
"TIPS"
],
"type": "string",
"description": "Security kind for \"queue_yields\". Defaults to Note."
}
}
}Get the U.S. federal debt from the monthly Treasury statement: debt held by the public, total public debt outstanding, and its composition, plus the STRIPS float on request. These two headline figures differ by trillions — debt held by the public excludes intragovernmental trust-fund holdings — so always say which one you are quoting.
| Argument | Type | Description |
|---|---|---|
| on | string | Any date; the month-end statement in force on it is returned, so a mid-month date gives the prior month-end. Defaults to today. |
| include_strips | boolean | Also return how much of the debt is held as STRIPS — separated coupon and principal payments traded as zero-coupon instruments. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Any date; the month-end statement in force on it is returned, so a mid-month date gives the prior month-end. Defaults to today."
},
"include_strips": {
"type": "boolean",
"description": "Also return how much of the debt is held as STRIPS — separated coupon and principal payments traded as zero-coupon instruments."
}
}
}Get Safe Rate's Treasury total-return indices — by maturity bucket, plus bills, TIPS, floating-rate and aggregate. Call with no code to list every index with its current level and discover the codes. These are TOTAL RETURN levels, not yields: a rising level usually means yields fell. Constructed by Safe Rate, not an official Treasury statistic.
| Argument | Type | Description |
|---|---|---|
| on | string | With no code, returns every index's level as at this date instead of the latest. |
| code | string | Index code, e.g. "broad", "1020", "TIPS". Omit to list every index with its latest level. |
| since | string | Start date for "daily_history". |
| include | array | Extras. "fund_comparison" sets each index beside comparable public bond funds and applies to the no-code listing. |
| constituents_on | string | Rebalance date for constituents. Defaults to the most recent — constituents exist on rebalance dates only, not daily. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "With no code, returns every index's level as at this date instead of the latest."
},
"code": {
"type": "string",
"maxLength": 16,
"minLength": 1,
"description": "Index code, e.g. \"broad\", \"1020\", \"TIPS\". Omit to list every index with its latest level."
},
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date for \"daily_history\"."
},
"include": {
"type": "array",
"items": {
"enum": [
"constituents",
"daily_history",
"fund_comparison"
],
"type": "string"
},
"description": "Extras. \"fund_comparison\" sets each index beside comparable public bond funds and applies to the no-code listing."
},
"constituents_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Rebalance date for constituents. Defaults to the most recent — constituents exist on rebalance dates only, not daily."
}
}
}Get a history of U.S. Treasury yields between two dates: the nominal zero curve, the short-end money-market curve, or the TIPS real curve, one row per trading day. Use this for 'how have rates moved' questions. Coverage starts 2008-09-02. Keep ranges tight — a decade is thousands of rows.
| Argument | Type | Description |
|---|---|---|
| to* | string | End date, YYYY-MM-DD. |
| from* | string | Start date, YYYY-MM-DD. Not before 2008-09-02. |
| curve | string | Which curve. Defaults to "zero" (nominal spot). "money_market" covers below one year; "real" is TIPS and its yields sit above inflation. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from",
"to"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date, YYYY-MM-DD."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date, YYYY-MM-DD. Not before 2008-09-02."
},
"curve": {
"enum": [
"money_market",
"real",
"zero"
],
"type": "string",
"description": "Which curve. Defaults to \"zero\" (nominal spot). \"money_market\" covers below one year; \"real\" is TIPS and its yields sit above inflation."
}
}
}Look up one Treasury security by CUSIP: its terms, price history, and analytics including duration, convexity, DV01 and key-rate durations, plus TIPS and floating-rate analytics where they apply, and the amount outstanding. Use list_treasury_securities first if you have a description like 'the current 10-year' rather than a CUSIP.
| Argument | Type | Description |
|---|---|---|
| cusip* | string | Nine-character Treasury CUSIP, e.g. "91282CJL6". |
| summarize | boolean | True drops the daily price and analytics series and keeps the latest values. Use it unless you need the full history — a 30-year bond carries thousands of rows. |
| outstanding_on | string | Date for the amount outstanding. The month-end statement in force on it is used. Defaults to today. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"cusip"
],
"properties": {
"cusip": {
"type": "string",
"minLength": 1,
"description": "Nine-character Treasury CUSIP, e.g. \"91282CJL6\"."
},
"summarize": {
"type": "boolean",
"description": "True drops the daily price and analytics series and keeps the latest values. Use it unless you need the full history — a 30-year bond carries thousands of rows."
},
"outstanding_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date for the amount outstanding. The month-end statement in force on it is used. Defaults to today."
}
}
}List Treasury securities as at a date: which security is on-the-run for each tenor (this is how to resolve 'the current 10-year' to a CUSIP), the full outstanding and priced universe, or just the priced CUSIPs. Omit the date for the most recent day with prices.
| Argument | Type | Description |
|---|---|---|
| date | string | Date as YYYY-MM-DD. Omit for the most recent day with published prices. |
| basis | string | When a security becomes on-the-run. "auction" is the trading convention and flips sooner; "issue" waits for settlement. Defaults to "issue". Between an auction and its issue the two disagree. |
| include | array | Defaults to ["on_the_run"]. "outstanding" returns every priced security, which is several hundred rows. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date as YYYY-MM-DD. Omit for the most recent day with published prices."
},
"basis": {
"enum": [
"auction",
"issue"
],
"type": "string",
"description": "When a security becomes on-the-run. \"auction\" is the trading convention and flips sooner; \"issue\" waits for settlement. Defaults to \"issue\". Between an auction and its issue the two disagree."
},
"include": {
"type": "array",
"items": {
"enum": [
"cusips_only",
"on_the_run",
"outstanding"
],
"type": "string"
},
"description": "Defaults to [\"on_the_run\"]. \"outstanding\" returns every priced security, which is several hundred rows."
}
}
}Convert between price and yield for a Treasury bill, note or bond. Supply exactly one side — a price or a yield (a discount rate for a bill) — and the other is returned, with accrued interest, dirty price and the investment rate as applicable. For a note or bond, a CUSIP looks the terms up instead of restating them.
| Argument | Type | Description |
|---|---|---|
| cusip | string | CUSIP of a note or bond; its terms are looked up. |
| frequency | integer | Coupon payments per year. Defaults to 2. |
| instrument* | string | "bill" for a discount instrument under a year, "coupon" for a note or bond. The maths differs; the wrong choice returns a plausible wrong number. |
| trade_date | string | Settlement date. Defaults to the most recent trading day. |
| clean_price | number | Price per 100 of face, excluding accrued interest. |
| maturity_date | string | Maturity, YYYY-MM-DD. Required for a bill. |
| yield_percent | number | Yield to maturity for a coupon security. |
| coupon_rate_percent |
Look up any US mortgage lender by name or NMLS ID: origination volume, approval and pull-through rates, product mix, geographic footprint, and responsiveness, from federal HMDA data.
| Argument | Type | Description |
|---|---|---|
| lender* | any | Lender name or NMLS ID, e.g. "Rocket Mortgage" or "3030". |
| geography | string | Optional two-letter state code to narrow the metrics, e.g. "IL". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"lender"
],
"properties": {
"lender": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "number"
}
],
"description": "Lender name or NMLS ID, e.g. \"Rocket Mortgage\" or \"3030\"."
},
"geography": {
"type": "string",
"minLength": 1,
"description": "Optional two-letter state code to narrow the metrics, e.g. \"IL\"."
}
}
}Search Safe Rate's published pages: local mortgage-rate indexes by geography, lender profiles, lender rankings by market (optionally by loan type or institution type), and the ranking methodology. Returns document ids for `fetch`. These are published reference pages, not priced scenarios — for a rate estimate for a specific borrower scenario, use get_quote_estimate instead.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum results to return. Defaults to 10, max 25. |
| query* | string | A place or lender name, or lenders in a place, e.g. "Austin, TX", "60607", "United Wholesale", or "FHA lenders in Ohio". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Maximum results to return. Defaults to 10, max 25."
},
"query": {
"type": "string",
"minLength": 1,
"description": "A place or lender name, or lenders in a place, e.g. \"Austin, TX\", \"60607\", \"United Wholesale\", or \"FHA lenders in Ohio\"."
}
}
}Requires the shopper's Safe Rate sign-in (scope poppy:read). Does NOT share anything: sharing an application with a lender always takes the shopper's own click on saferate.com. Returns the link where the shopper reviews and shares it themselves.
| Argument | Type | Description |
|---|---|---|
| lender | string | The lender the shopper wants to share with, to mention in the hand-off. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"lender": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The lender the shopper wants to share with, to mention in the hand-off."
}
}
}Requires the shopper's Safe Rate sign-in (scope poppy:write). Start building the shopper's Universal Application from a loan scenario. If they already have one, nothing changes and it is returned. Holds no personal information: no name, SSN or date of birth.
| Argument | Type | Description |
|---|---|---|
| zip* | string | |
| timeline | string | |
| usdaArea | string | |
| occupancy* | string | |
| creditBand | string | |
| hoaMonthly | number | |
| loanAmount | number | |
| usdaIncome | string | |
| downPayment | number | |
| loanPurpose* | string | |
| propertyType |
Check a previously created Safe Rate rate estimate by its estimate ID. Returns the original scenario, how rates have moved since the estimate was created, and current rates for the same scenario. No account or contact information required.
| Argument | Type | Description |
|---|---|---|
| estimate_id* | string | An estimate ID previously returned by get_quote_estimate. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"estimate_id"
],
"properties": {
"estimate_id": {
"type": "string",
"minLength": 1,
"description": "An estimate ID previously returned by get_quote_estimate."
}
}
}Requires the shopper's Safe Rate sign-in (scope poppy:write). Change answers in the loan scenario of the shopper's Universal Application. Send only the fields that change: everything else keeps its saved value, and nothing is saved if the result would be invalid. Cannot share the application or record an SSN — those are the shopper's own click on saferate.com.
| Argument | Type | Description |
|---|---|---|
| zip | string | |
| timeline | string | |
| usdaArea | string | |
| occupancy | string | |
| creditBand | string | |
| hoaMonthly | number | |
| loanAmount | number | |
| usdaIncome | string | |
| downPayment | number | |
| loanPurpose | string | |
| propertyType |
Value a U.S. Series I or Series EE savings bond: what it is worth now, how it got there, and what the holder would actually receive. Bonds under five years old forfeit three months of interest on redemption, and bonds under twelve months cannot be redeemed at all — report the net, not just the accrued value. The purchase date is the bond's issue date.
| Argument | Type | Description |
|---|---|---|
| series* | string | "I" is inflation-indexed; "EE" carries the 20-year doubling guarantee. |
| purchased* | string | The bond's ISSUE date, YYYY-MM-DD. Not the year printed on the face — a wrong date shifts the whole rate schedule. |
| valued_on | string | Valuation date. Defaults to today. |
| denomination | number | Face value in dollars, e.g. 100. Defaults to the standard unit. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"purchased",
"series"
],
"properties": {
"series": {
"enum": [
"EE",
"I"
],
"type": "string",
"description": "\"I\" is inflation-indexed; \"EE\" carries the 20-year doubling guarantee."
},
"purchased": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "The bond's ISSUE date, YYYY-MM-DD. Not the year printed on the face — a wrong date shifts the whole rate schedule."
},
"valued_on": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Valuation date. Defaults to today."
},
"denomination": {
"type": "number",
"description": "Face value in dollars, e.g. 100. Defaults to the standard unit.",
"exclusiveMinimum": 0
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
| down_payment_percent | any | Down payment as a percentage. Defaults to 20. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"purpose": {
"enum": [
"purchase",
"refinance",
"cashout"
],
"type": "string",
"description": "Defaults to purchase."
},
"location": {
"anyOf": [
{
"type": "string",
"minLength": 2
},
{
"type": "number"
}
],
"description": "ZIP, city + state, or county + state. E.g. \"60607\", \"Austin, TX\". If the borrower has not said where, omit it: a client that supports elicitation is asked for it; any other client gets back ok: false listing what is missing, so ask the borrower and call again."
},
"loan_type": {
"enum": [
"conventional",
"fha",
"va",
"jumbo"
],
"type": "string",
"description": "Defaults to conventional."
},
"occupancy": {
"enum": [
"primary",
"second",
"investment"
],
"type": "string",
"description": "Defaults to primary."
},
"credit_range": {
"enum": [
"760+",
"720-759",
"680-719",
"660-679",
"640-659",
"620-639",
"below-620"
],
"type": "string",
"description": "Borrower credit score range. Defaults to 720-759."
},
"property_type": {
"enum": [
"single_family",
"condo"
],
"type": "string",
"description": "Defaults to single_family."
},
"purchase_price": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "string"
}
],
"description": "Purchase price or estimated property value, in dollars. Needed to price: if omitted, a client that supports elicitation is asked for it, any other gets back ok: false listing what is missing. Never invent one."
},
"down_payment_percent": {
"anyOf": [
{
"type": "number",
"maximum": 100,
"minimum": 0
},
{
"type": "string"
}
],
"description": "Down payment as a percentage. Defaults to 20."
}
}
}| number |
| Annual coupon rate. Required for a coupon security without a CUSIP. |
| discount_rate_percent | number | Bank discount rate for a bill. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"instrument"
],
"properties": {
"cusip": {
"type": "string",
"description": "CUSIP of a note or bond; its terms are looked up."
},
"frequency": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Coupon payments per year. Defaults to 2.",
"exclusiveMinimum": 0
},
"instrument": {
"enum": [
"bill",
"coupon"
],
"type": "string",
"description": "\"bill\" for a discount instrument under a year, \"coupon\" for a note or bond. The maths differs; the wrong choice returns a plausible wrong number."
},
"trade_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Settlement date. Defaults to the most recent trading day."
},
"clean_price": {
"type": "number",
"description": "Price per 100 of face, excluding accrued interest.",
"exclusiveMinimum": 0
},
"maturity_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Maturity, YYYY-MM-DD. Required for a bill."
},
"yield_percent": {
"type": "number",
"description": "Yield to maturity for a coupon security."
},
"coupon_rate_percent": {
"type": "number",
"minimum": 0,
"description": "Annual coupon rate. Required for a coupon security without a CUSIP."
},
"discount_rate_percent": {
"type": "number",
"description": "Bank discount rate for a bill."
}
}
}| string |
| numberOfUnits | integer |
| propertyValue* | number |
| propertyAddress | string |
| hasMilitaryService | boolean |
| costOverridesMonthly | object |
| propertyAddressParts | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"loanPurpose",
"occupancy",
"propertyValue",
"zip"
],
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"timeline": {
"enum": [
"justLooking",
"oneToThreeMonths",
"threeToSixMonths",
"under30Days"
],
"type": "string"
},
"usdaArea": {
"enum": [
"no",
"unsure",
"yes"
],
"type": "string"
},
"occupancy": {
"enum": [
"investment",
"primary",
"secondHome"
],
"type": "string"
},
"creditBand": {
"enum": [
"720to759",
"640to679",
"680to719",
"760plus",
"below640",
"unknown"
],
"type": "string",
"default": "unknown"
},
"hoaMonthly": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"loanAmount": {
"type": "number",
"exclusiveMinimum": 0
},
"usdaIncome": {
"enum": [
"no",
"unsure",
"yes"
],
"type": "string"
},
"downPayment": {
"type": "number",
"minimum": 0
},
"loanPurpose": {
"enum": [
"cashOutRefinance",
"purchase",
"refinance"
],
"type": "string"
},
"propertyType": {
"enum": [
"condo",
"manufactured",
"singleFamily",
"townhome",
"twoToFourUnit"
],
"type": "string"
},
"numberOfUnits": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"propertyValue": {
"type": "number",
"exclusiveMinimum": 0
},
"propertyAddress": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"hasMilitaryService": {
"type": "boolean"
},
"costOverridesMonthly": {
"type": "object",
"properties": {
"propertyTax": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"floodInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"mortgageInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"homeownersInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
}
},
"additionalProperties": false
},
"propertyAddressParts": {
"type": "object",
"required": [
"city",
"state",
"street"
],
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"unit": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$"
},
"street": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}| string |
| numberOfUnits | integer |
| propertyValue | number |
| propertyAddress | string |
| hasMilitaryService | boolean |
| expected_updated_at | string | updated_at from your last read of the application. If the shopper (or anyone) changed it since, nothing is saved and you get error 'conflict': read it again first. |
| costOverridesMonthly | object |
| propertyAddressParts | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"timeline": {
"enum": [
"justLooking",
"oneToThreeMonths",
"threeToSixMonths",
"under30Days"
],
"type": "string"
},
"usdaArea": {
"enum": [
"no",
"unsure",
"yes"
],
"type": "string"
},
"occupancy": {
"enum": [
"investment",
"primary",
"secondHome"
],
"type": "string"
},
"creditBand": {
"enum": [
"720to759",
"640to679",
"680to719",
"760plus",
"below640",
"unknown"
],
"type": "string"
},
"hoaMonthly": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"loanAmount": {
"type": "number",
"exclusiveMinimum": 0
},
"usdaIncome": {
"enum": [
"no",
"unsure",
"yes"
],
"type": "string"
},
"downPayment": {
"type": "number",
"minimum": 0
},
"loanPurpose": {
"enum": [
"cashOutRefinance",
"purchase",
"refinance"
],
"type": "string"
},
"propertyType": {
"enum": [
"condo",
"manufactured",
"singleFamily",
"townhome",
"twoToFourUnit"
],
"type": "string"
},
"numberOfUnits": {
"type": "integer",
"maximum": 4,
"minimum": 1
},
"propertyValue": {
"type": "number",
"exclusiveMinimum": 0
},
"propertyAddress": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"hasMilitaryService": {
"type": "boolean"
},
"expected_updated_at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "updated_at from your last read of the application. If the shopper (or anyone) changed it since, nothing is saved and you get error 'conflict': read it again first."
},
"costOverridesMonthly": {
"type": "object",
"properties": {
"propertyTax": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"floodInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"mortgageInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
},
"homeownersInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0
}
},
"additionalProperties": false
},
"propertyAddressParts": {
"type": "object",
"required": [
"city",
"state",
"street"
],
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$"
},
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"unit": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"state": {
"type": "string",
"pattern": "^[A-Z]{2}$"
},
"street": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}