Let AI assistants shop for home and auto insurance: compare quote estimates across every carrier.
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.
Purpose: confirm quote estimates on the carriers' own quote sites, via Foresee agents completing their real quote flows. IDEMPOTENT, keyed on the profile: the first call commissions the walks; calling again with the same profile collects progress and results instead of re-submitting anything — whatever the ask. A profile that has already been walked returns those results (the carriers are never asked twice): the envelope's ``coverage_selection`` names the ask the walk typed, and each quote carries the carrier's other recorded coverage options as ``variants``, so a new ask reads the same run. So call once to start, then re-call after a few minutes to collect; agents still working report their stage. Ask ONCE, before the first call: the consent disclosure below, the identity fields, and the questions listed at the end of this description under EVERY LINE and under the line being walked — all in one message, so the first commissioning call walks every carrier. A call made before consent submits nothing and answers ``authorization_required`` with the profile's ``needs``, for when you have not asked yet. No sign-in is required. The one hard requirement is the user's own consent, captured in-band: BEFORE the commissioning call, you MUST tell the user, plainly: Foresee will submit their details to the named carriers; the carriers may obtain their credit-based insurance score (a soft pull, with no impact on your credit score); and the carriers may contact them by email or phone. Then get their explicit go-ahead and pass their affirmation VERBATIM as ``user_authorization`` (e.g. "yes, go ahead"). The affirmation is stored as the durable consent record for the dispatch; without one the call is refused with ``authorization_required``. Foresee only collects quotes; it does not take payment or bind insurance. Collect the ``identity`` fields in chat. Nothing is filled in from anywhere else: what the walks type is what the call states. A ``missing_facts`` response is normal: carrier forms insist on facts (body style, purchase date, age first licensed…) that Foresee will not invent. Each ``needs`` entry carries the carrier (``scope``), the facts in the walk's own words (``need``), and ``fields[]`` — per fact, the ``ask`` beside the exact schema path to pass the answer under (``field``, e.g. ``auto.vehicles[].purchase_date``; ``identity.…`` paths go on ``identity``). Ask the user for exactly those facts, then call again with the answers merged in at those paths. A fact with no ``field`` has no profile home yet — relay that carrier's ask as unavailable rather than guessing a key. While any carrier waits on a fact the user can answer, nothing is submitted: the carriers already able to go are listed under ``ready`` and held, so every carrier is walked together. Only when the user cannot or will not answer, re-call with ``dispatch_ready_only=true`` to walk the ready ones now; that receipt is PARTIAL — follow its ``recover`` block: re-call with the new facts merged AND ``carriers`` set to exactly ``recover.carriers`` — a changed profile is a new dispatch, and an unscoped re-call would re-submit the already-walked carriers too. Unasserted MINOR facts are not asked: a form field that is really a claim nobody made (an anti-theft device, a defensive-driving course, years licensed abroad) is answered with the declared no-claim value — never a discount claim — and every one comes back in ``assumptions`` (``field`` + the ``assumed`` value submitted). Relay them with the results; if the user corrects one, re-call with the real value at that path. ``carriers``: OMIT it to walk every carrier walked for the line in the user's state — that is the default and the goal. Pass it only when the user asks to limit the walk: most carriers with an estimate have no walk, so a shortlist copied from quote_insurance results is refused with ``carriers_not_walked`` naming the ``walkable`` set to choose from. Those carriers keep their estimates; the live run adds real quotes from every walked carrier. ``lines`` names WHICH line to walk, exactly one per call (a fan-out drives one form family): ``{"auto": {...the ask...}}``, ``{"home": null}``, or ``{"renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}}``. An AUTO walk's ask is REQUIRED — the limits and deductibles the agents ask the carriers for, as actual numbers (`bi` "100/300", `pd` 100, `coll_deductible` 500, `comp_deductible` 500, the same four axes as quote_insurance); without it the tool answers with the selection-required message; ask the user, then call again. A HOME walk takes NO ask — the carrier's own form prices its package (dwelling amount from its replacement-cost estimate) and the agents report what it chose. A RENTERS walk requires its four axes as actual dollars — ``coverage_c`` (personal-property/contents), ``coverage_e`` (personal liability), ``coverage_f`` (guest medical) and ``deductible`` — the agents type the user's numbers on the form instead of accepting its defaults, and Foresee never invents them. Quotes come back with evidence. ``quote.premium`` is VERBATIM as the carrier's page printed it, and ``term_months`` says what it covers — a 6-month figure is not a monthly one. When term_months is known, present the monthly equivalent (premium ÷ term_months) so carriers compare on one basis, the page's own figure beside it; without it, relay the printed premium and say the monthly equivalent is unknown. A carrier may also decline the risk — a real answer to relay, not an error. Every carrier without a quote says why in ``detail``: ``declined`` is the carrier's own answer; ``missing_facts`` lists under ``fields`` (each an ``ask`` and its ``field`` path) what its form wanted — ask the user, then re-call with the answers merged and ``carriers`` set to that carrier; ``failed`` and ``not_quoted`` mean Foresee couldn't get that quote — say so, never that the carrier turned the user down. ``skipped`` and ``not_dispatched`` name the carriers NOT walked, each with the reason — relay those too; a carrier never silently vanishes. What the carriers' forms ask. In ONE message, together with the consent disclosure and BEFORE the first call, ask the user the EVERY LINE questions plus the questions for each line they want priced, then omit `carriers` to walk every carrier in the user's state. Each fact names the path its answer goes under. EVERY LINE: - identity: legal name, date of birth, street address, email and phone (identity) - household: the spouse of a married applicant (auto.drivers[]) AUTO ONLY: - household: gender (gender); marital status (marital_status) - work: occupation (occupation) - residence: whether the home is owned or rented (home_ownership_status); how long at this address (months_at_residence) - each car: whether the vehicle is owned, financed or leased (auto.vehicles[].ownership); when the vehicle was bought (auto.vehicles[].purchase_date); whether the vehicle was new when bought (auto.vehicles[].bought_new); what the vehicle cost new (auto.vehicles[].cost) - how each car is used: what the vehicle is used for (auto.vehicles[].primary_use); annual mileage (auto.vehicles[].annual_mileage) - each driver: driver's licence number (auto.drivers[].drivers_license_number); age first licensed (auto.drivers[].age_first_licensed); violation history (auto.drivers[].violations); loss history (auto.drivers[].accidents) - current insurance: whether there is insurance now (prior_insurance.insured); prior carrier (prior_insurance.carrier); when the prior policy ran (prior_insurance.since); the bodily injury limits carried now (prior_insurance.limits); a lapse in coverage (prior_insurance.lapse) HOME ONLY: - the home: when the property was bought (property.purchased); what the property is used for (property.occupancy); how many people live there (property.household)
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Purpose: confirm quote estimates on the carriers' own quote sites, via Foresee agents completing their real quote flows. IDEMPOTENT, keyed on the profile: the first call commissions the walks; calling again with the same profile collects progress and results instead of re-submitting anything — whatever the ask. A profile that has already been walked returns those results (the carriers are never asked twice): the envelope's ``coverage_selection`` names the ask the walk typed, and each quote carries the carrier's other recorded coverage options as ``variants``, so a new ask reads the same run. So call once to start, then re-call after a few minutes to collect; agents still working report their stage. Ask ONCE, before the first call: the consent disclosure below, the identity fields, and the questions listed at the end of this description under EVERY LINE and under the line being walked — all in one message, so the first commissioning call walks every carrier. A call made before consent submits nothing and answers ``authorization_required`` with the profile's ``needs``, for when you have not asked yet. No sign-in is required. The one hard requirement is the user's own consent, captured in-band: BEFORE the commissioning call, you MUST tell the user, plainly: Foresee will submit their details to the named carriers; the carriers may obtain their credit-based insurance score (a soft pull, with no impact on your credit score); and the carriers may contact them by email or phone. Then get their explicit go-ahead and pass their affirmation VERBATIM as ``user_authorization`` (e.g. "yes, go ahead"). The affirmation is stored as the durable consent record for the dispatch; without one the call is refused with ``authorization_required``. Foresee only collects quotes; it does not take payment or bind insurance. Collect the ``identity`` fields in chat. Nothing is filled in from anywhere else: what the walks type is what the call states. A ``missing_facts`` response is normal: carrier forms insist on facts (body style, purchase date, age first licensed…) that Foresee will not invent. Each ``needs`` entry carries the carrier (``scope``), the facts in the walk's own words (``need``), and ``fields[]`` — per fact, the ``ask`` beside the exact schema path to pass the answer under (``field``, e.g. ``auto.vehicles[].purchase_date``; ``identity.…`` paths go on ``identity``). Ask the user for exactly those facts, then call again with the answers merged in at those paths. A fact with no ``field`` has no profile home yet — relay that carrier's ask as unavailable rather than guessing a key. While any carrier waits on a fact the user can answer, nothing is submitted: the carriers already able to go are listed under ``ready`` and held, so every carrier is walked together. Only when the user cannot or will not answer, re-call with ``dispatch_ready_only=true`` to walk the ready ones now; that receipt is PARTIAL — follow its ``recover`` block: re-call with the new facts merged AND ``carriers`` set to exactly ``recover.carriers`` — a changed profile is a new dispatch, and an unscoped re-call would re-submit the already-walked carriers too. Unasserted MINOR facts are not asked: a form field that is really a claim nobody made (an anti-theft device, a defensive-driving course, years licensed abroad) is answered with the declared no-claim value — never a discount claim — and every one comes back in ``assumptions`` (``field`` + the ``assumed`` value submitted). Relay them with the results; if the user corrects one, re-call with the real value at that path. ``carriers``: OMIT it to walk every carrier walked for the line in the user's state — that is the default and the goal. Pass it only when the user asks to limit the walk: most carriers with an estimate have no walk, so a shortlist copied from quote_insurance results is refused with ``carriers_not_walked`` naming the ``walkable`` set to choose from. Those carriers keep their estimates; the live run adds real quotes from every walked carrier. ``lines`` names WHICH line to walk, exactly one per call (a fan-out drives one form family): ``{"auto": {...the ask...}}``, ``{"home": null}``, or ``{"renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}}``. An AUTO walk's ask is REQUIRED — the limits and deductibles the agents ask the carriers for, as actual numbers (`bi` "100/300", `pd` 100, `coll_deductible` 500, `comp_deductible` 500, the same four axes as quote_insurance); without it the tool answers with the selection-required message; ask the user, then call again. A HOME walk takes NO ask — the carrier's own form prices its package (dwelling amount from its replacement-cost estimate) and the agents report what it chose. A RENTERS walk requires its four axes as actual dollars — ``coverage_c`` (personal-property/contents), ``coverage_e`` (personal liability), ``coverage_f`` (guest medical) and ``deductible`` — the agents type the user's numbers on the form instead of accepting its defaults, and Foresee never invents them. Quotes come back with evidence. ``quote.premium`` is VERBATIM as the carrier's page printed it, and ``term_months`` says what it covers — a 6-month figure is not a monthly one. When term_months is known, present the monthly equivalent (premium ÷ term_months) so carriers compare on one basis, the page's own figure beside it; without it, relay the printed premium and say the monthly equivalent is unknown. A carrier may also decline the risk — a real answer to relay, not an error. Every carrier without a quote says why in ``detail``: ``declined`` is the carrier's own answer; ``missing_facts`` lists under ``fields`` (each an ``ask`` and its ``field`` path) what its form wanted — ask the user, then re-call with the answers merged and ``carriers`` set to that carrier; ``failed`` and ``not_quoted`` mean Foresee couldn't get that quote — say so, never that the carrier turned the user down. ``skipped`` and ``not_dispatched`` name the carriers NOT walked, each with the reason — relay those too; a carrier never silently vanishes. What the carriers' forms ask. In ONE message, together with the consent disclosure and BEFORE the first call, ask the user the EVERY LINE questions plus the questions for each line they want priced, then omit `carriers` to walk every carrier in the user's state. Each fact names the path its answer goes under. EVERY LINE: - identity: legal name, date of birth, street address, email and phone (identity) - household: the spouse of a married applicant (auto.drivers[]) AUTO ONLY: - household: gender (gender); marital status (marital_status) - work: occupation (occupation) - residence: whether the home is owned or rented (home_ownership_status); how long at this address (months_at_residence) - each car: whether the vehicle is owned, financed or leased (auto.vehicles[].ownership); when the vehicle was bought (auto.vehicles[].purchase_date); whether the vehicle was new when bought (auto.vehicles[].bought_new); what the vehicle cost new (auto.vehicles[].cost) - how each car is used: what the vehicle is used for (auto.vehicles[].primary_use); annual mileage (auto.vehicles[].annual_mileage) - each driver: driver's licence number (auto.drivers[].drivers_license_number); age first licensed (auto.drivers[].age_first_licensed); violation history (auto.drivers[].violations); loss history (auto.drivers[].accidents) - current insurance: whether there is insurance now (prior_insurance.insured); prior carrier (prior_insurance.carrier); when the prior policy ran (prior_insurance.since); the bodily injury limits carried now (prior_insurance.limits); a lapse in coverage (prior_insurance.lapse) HOME ONLY: - the home: when the property was bought (property.purchased); what the property is used for (property.occupancy); how many people live there (property.household)
| Argument | Type | Description |
|---|---|---|
| lines | any | |
| profile* | object | |
| carriers | any | |
| identity | any | |
| user_authorization | string | |
| dispatch_ready_only | boolean |
{
"type": "object",
"$defs": {
"AutoAsk": {
"type": "object",
"title": "AutoAsk",
"properties": {
"bi": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bi",
"default": null,
"description": "Bodily-injury liability limit, per-person/per-accident in $000s, e.g. \"100/300\""
},
"pd": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Pd",
"default": null,
"description": "Property-damage liability limit in $000s, e.g. 100"
},
"um": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Um",
"default": null,
"description": "Uninsured/underinsured-motorist BI limit in $000s, e.g. \"100/300\""
},
"medpay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Medpay",
"default": null,
"description": "Medical-payments limit in dollars, e.g. 5000"
},
"coll_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coll Deductible",
"default": null,
"description": "Collision deductible in dollars, e.g. 500"
},
"comp_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Comp Deductible",
"default": null,
"description": "Comprehensive deductible in dollars, e.g. 500"
}
},
"additionalProperties": true
},
"HomeAsk": {
"type": "object",
"title": "HomeAsk",
"properties": {
"coverage_a": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage A",
"default": null,
"description": "Dwelling limit in dollars — the dwelling's replacement cost"
},
"coverage_e": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage E",
"default": null,
"description": "Personal liability limit in dollars, e.g. 300000"
},
"coverage_f": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage F",
"default": null,
"description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000"
},
"aop_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Aop Deductible",
"default": null,
"description": "All-other-perils deductible in dollars, e.g. 1000"
}
},
"additionalProperties": true
},
"LossInput": {
"type": "object",
"title": "LossInput",
"properties": {
"on": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "On",
"default": null,
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"kind": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Kind",
"default": null,
"description": "\"water\", \"fire\", \"theft\", \"wind/hail\", \"liability\"…"
},
"amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount",
"default": null,
"description": "Paid out, dollars"
}
},
"description": "One prior property loss.",
"additionalProperties": true
},
"LinesInput": {
"type": "object",
"title": "LinesInput",
"properties": {
"auto": {
"anyOf": [
{
"$ref": "#/$defs/AutoAsk"
},
{
"type": "null"
}
],
"default": null
},
"home": {
"anyOf": [
{
"$ref": "#/$defs/HomeAsk"
},
{
"type": "null"
}
],
"default": null
},
"renters": {
"anyOf": [
{
"$ref": "#/$defs/RentersAsk"
},
{
"type": "null"
}
],
"default": null
}
},
"description": "The coverage to price, one entry per line.",
"additionalProperties": true
},
"RentersAsk": {
"type": "object",
"title": "RentersAsk",
"properties": {
"coverage_c": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage C",
"default": null,
"description": "Personal-property (contents) limit in dollars, e.g. 30000"
},
"coverage_d": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage D",
"default": null,
"description": "Loss-of-use limit in dollars"
},
"coverage_e": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage E",
"default": null,
"description": "Personal liability limit in dollars, e.g. 100000"
},
"coverage_f": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage F",
"default": null,
"description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000"
},
"deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Deductible",
"default": null,
"description": "All-perils deductible in dollars, e.g. 500"
}
},
"additionalProperties": true
},
"VehicleInput": {
"type": "object",
"title": "VehicleInput",
"properties": {
"vin": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Vin",
"default": null
},
"cost": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Cost",
"default": null,
"description": "Cost new, whole dollars"
},
"make": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Make",
"default": null
},
"trim": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Trim",
"default": null
},
"year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Year",
"default": null
},
"model": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Model",
"default": null
},
"owner": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Owner",
"default": null,
"description": "Whose car it is, by relation to the applicant: 'self' / 'spouse' / 'domestic partner' / 'child' / 'parent' / 'sibling' / 'other'"
},
"ownership": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Ownership",
"default": null,
"description": "'owned' / 'financed' / 'leased'"
},
"anti_theft": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Anti Theft",
"default": null,
"description": "'alarm' / 'active_disable' / 'passive_disable' / 'recovery_device'"
},
"body_style": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Body Style",
"default": null,
"description": "Trim / body style, e.g. \"XLT AWD 4D GAS\""
},
"bought_new": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bought New",
"default": null
},
"primary_use": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Primary Use",
"default": null,
"description": "'Personal' / 'Commute' / 'Business'"
},
"commute_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Commute Days",
"default": null,
"description": "Commute days per week"
},
"garaging_zip": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Garaging Zip",
"default": null,
"description": "ZIP where this vehicle is kept, when different from zip_code"
},
"one_way_miles": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "One Way Miles",
"default": null,
"description": "One-way commute distance, miles"
},
"purchase_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Purchase Date",
"default": null,
"description": "When bought: YYYY, YYYY-MM or YYYY-MM-DD"
},
"annual_mileage": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Annual Mileage",
"default": null
},
"anti_lock_brakes": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Anti Lock Brakes",
"default": null
},
"principal_driver": {
"anyOf": [
{
"type": "integer",
"minimum": 1
},
{
"type": "null"
}
],
"title": "Principal Driver",
"default": null,
"description": "Who mainly drives it: the driver's place in auto.drivers, 1 = first listed"
},
"daytime_running_lights": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Daytime Running Lights",
"default": null
}
},
"description": "One vehicle on the policy.",
"additionalProperties": true
},
"AccidentInput": {
"type": "object",
"title": "AccidentInput",
"required": [
"on"
],
"properties": {
"on": {
"type": "string",
"title": "On",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount",
"default": null,
"description": "Damage paid out, dollars"
},
"at_fault": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "At Fault",
"default": null
}
},
"additionalProperties": true
},
"WalkAutoBlock": {
"type": "object",
"title": "WalkAutoBlock",
"properties": {
"drivers": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/WalkDriverInput"
}
},
{
"type": "null"
}
],
"title": "Drivers",
"default": null
},
"vehicles": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/VehicleInput"
},
"maxItems": 10
},
{
"type": "null"
}
],
"title": "Vehicles",
"default": null
}
},
"description": "Omit it for a household without a car.",
"additionalProperties": true
},
"ViolationInput": {
"type": "object",
"title": "ViolationInput",
"required": [
"on",
"kind"
],
"properties": {
"on": {
"type": "string",
"title": "On",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"kind": {
"type": "string",
"title": "Kind",
"maxLength": 200,
"minLength": 1,
"description": "The violation in plain words: \"speeding\", \"DUI\", \"reckless driving\", \"running a red light\"…"
}
},
"description": "One moving violation.",
"additionalProperties": true
},
"HeldPolicyInput": {
"type": "object",
"title": "HeldPolicyInput",
"required": [
"line"
],
"properties": {
"line": {
"type": "string",
"title": "Line",
"maxLength": 200,
"description": "What the policy insures: \"home\", \"renters\", \"condo\", \"auto\", \"life\", \"umbrella\"…"
},
"carrier": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Carrier",
"default": null,
"description": "Who writes it, e.g. \"State Farm\""
},
"in_force": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "In Force",
"default": null
}
},
"description": "A policy the household already holds.",
"additionalProperties": true
},
"WalkDriverInput": {
"type": "object",
"title": "WalkDriverInput",
"properties": {
"dob": {
"type": "string",
"title": "Dob",
"format": "date",
"default": null,
"description": "YYYY-MM-DD"
},
"gender": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Gender",
"default": null
},
"status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Status",
"default": null,
"description": "'licensed' (default) / 'permit' / 'not licensed' / 'excluded'"
},
"industry": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Industry",
"default": null
},
"relation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Relation",
"default": null,
"description": "\"self\" / \"spouse\" / \"child\" / \"parent\" / \"other\""
},
"accidents": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/AccidentInput"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Accidents",
"default": null,
"description": "Accidents, one entry each, e.g. [{\"on\": \"2023-06-15\", \"at_fault\": true, \"amount\": 4200}] — every entry needs `on`. An empty list means none."
},
"education": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Education",
"default": null,
"description": "Highest education level: 'No High School' / 'High School' / 'Vocational' / 'Some College' / 'Associate' / 'Bachelors' / 'Masters' / 'Doctorate'"
},
"last_name": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Last Name",
"default": null
},
"first_name": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "First Name",
"default": null
},
"occupation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupation",
"default": null
},
"violations": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/ViolationInput"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Violations",
"default": null,
"description": "Moving violations, one entry each, e.g. [{\"on\": \"2025-01\", \"kind\": \"speeding\"}] — every entry needs `kind` and `on`. An empty list means a clean record."
},
"good_student": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Good Student",
"default": null,
"description": "Grades that earn a good-student discount (usually a B average or better)"
},
"student_away": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Student Away",
"default": null,
"description": "A student living away at school, without any of the policy's cars"
},
"license_state": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "License State",
"default": null,
"description": "Two-letter code of the licensing state"
},
"rideshare_use": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Rideshare Use",
"default": null,
"description": "Drives for ride-share or delivery"
},
"sr22_required": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Sr22 Required",
"default": null
},
"marital_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Marital Status",
"default": null
},
"years_licensed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Years Licensed",
"default": null,
"description": "Years since first licensed"
},
"exclusion_reason": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Exclusion Reason",
"default": null
},
"employment_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Employment Status",
"default": null,
"description": "'Employed' / 'Self-Employed' / 'Retired' / 'Student' / 'Unemployed'"
},
"full_time_student": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Full Time Student",
"default": null,
"description": "Enrolled full time in high school, college or university"
},
"years_licensed_us": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Years Licensed Us",
"default": null,
"description": "Years licensed in the US"
},
"age_first_licensed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Age First Licensed",
"default": null,
"description": "Age when first licensed"
},
"date_first_licensed": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date First Licensed",
"default": null,
"description": "YYYY-MM-DD; alternative to age_first_licensed"
},
"military_affiliation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Military Affiliation",
"default": null,
"description": "'active' / 'veteran' / 'family' / 'none'"
},
"drivers_license_number": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Drivers License Number",
"default": null
},
"defensive_driving_course": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Defensive Driving Course",
"default": null,
"description": "Completed a defensive-driving course in the last 3 years"
},
"years_licensed_outside_us": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Years Licensed Outside Us",
"default": null,
"description": "Years licensed outside the US"
}
},
"description": "One driver on the policy. The applicant is the driver with relation\n\"self\"; any of their details restated here must match the profile's top\nlevel.",
"additionalProperties": true
},
"LiveQuoteProfile": {
"type": "object",
"anyOf": [
{
"required": [
"age"
]
},
{
"required": [
"dob"
]
}
],
"title": "LiveQuoteProfile",
"required": [
"zip_code"
],
"properties": {
"age": {
"anyOf": [
{
"type": "integer",
"maximum": 120,
"minimum": 16
},
{
"type": "null"
}
],
"title": "Age",
"default": null,
"description": "REQUIRED unless dob is passed. If the user was vague ('mid-20s'), pass a concrete age and present it as your assumption."
},
"dob": {
"type": "string",
"title": "Dob",
"format": "date",
"default": null,
"description": "YYYY-MM-DD; alternative to age"
},
"auto": {
"anyOf": [
{
"$ref": "#/$defs/WalkAutoBlock"
},
{
"type": "null"
}
],
"default": null
},
"city": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "City",
"default": null
},
"unit": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"state": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "State",
"default": null,
"description": "Two-letter code; derived from zip_code when omitted"
},
"gender": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Gender",
"default": null
},
"industry": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Industry",
"default": null
},
"property": {
"anyOf": [
{
"$ref": "#/$defs/WalkPropertyBlock"
},
{
"type": "null"
}
],
"default": null
},
"zip_code": {
"type": "string",
"title": "Zip Code",
"maxLength": 200,
"description": "REQUIRED — 5-digit garaging/home ZIP. ALWAYS pass the ZIP here, never under another key. If the user named only a city, pass that city's best-known ZIP and tell them the assumption."
},
"education": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Education",
"default": null,
"description": "Highest education level: 'No High School' / 'High School' / 'Vocational' / 'Some College' / 'Associate' / 'Bachelors' / 'Masters' / 'Doctorate'"
},
"occupation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupation",
"default": null
},
"memberships": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
{
"type": "null"
}
],
"title": "Memberships",
"default": null,
"description": "Organizations the applicant belongs to, e.g. ['Costco', 'AAA']"
},
"credit_range": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Credit Range",
"default": null,
"description": "'Excellent' / 'Good' / 'Fair' / 'Poor' — omit it in CA, HI, MA and MI"
},
"effective_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Effective Date",
"default": null,
"description": "Policy start date, YYYY-MM-DD"
},
"marital_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Marital Status",
"default": null,
"description": "'Single' / 'Married' / …"
},
"residence_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Residence Type",
"default": null,
"description": "'House' / 'Apartment' / 'Condominium' / 'Manufactured Home' / …"
},
"street_address": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Street Address",
"default": null
},
"military_branch": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Military Branch",
"default": null
},
"prior_insurance": {
"anyOf": [
{
"$ref": "#/$defs/WalkPriorInsuranceInput"
},
{
"type": "null"
}
],
"default": null
},
"employment_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Employment Status",
"default": null,
"description": "'Employed' / 'Self-Employed' / 'Retired' / 'Student' / 'Unemployed'"
},
"companion_policies": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/HeldPolicyInput"
}
},
{
"type": "null"
}
],
"title": "Companion Policies",
"default": null,
"description": "Policies the household already holds, e.g. [{\"line\": \"home\", \"carrier\": \"State Farm\"}]"
},
"months_at_residence": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Months At Residence",
"default": null
},
"military_affiliation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Military Affiliation",
"default": null,
"description": "'active' / 'veteran' / 'family' / 'none'"
},
"home_ownership_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Home Ownership Status",
"default": null,
"description": "'rent' / 'own with mortgage' / 'own outright' — bare 'own' is accepted"
},
"military_rank_paygrade": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Military Rank Paygrade",
"default": null,
"description": "e.g. 'E-5'"
},
"military_service_end_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Military Service End Year",
"default": null
},
"military_service_start_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Military Service Start Year",
"default": null
}
},
"description": "The household being quoted: the people and where they live, plus an\n`auto` block (drivers and vehicles) and a `property` block (the\ndwelling). REQUIRED: the ZIP, the applicant's age (or dob) and, for auto,\neach vehicle's year/make/model — when the user was vague, pass a concrete\nvalue and tell them. Everything else is optional; omissions come back as\n`assumptions`.",
"additionalProperties": true
},
"ApplicantIdentity": {
"type": "object",
"title": "ApplicantIdentity",
"required": [
"first_name",
"last_name",
"dob",
"street",
"city",
"email"
],
"properties": {
"dob": {
"type": "string",
"title": "Dob",
"format": "date",
"description": "YYYY-MM-DD"
},
"city": {
"type": "string",
"title": "City"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"email": {
"type": "string",
"title": "Email"
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Phone",
"default": null
},
"street": {
"type": "string",
"title": "Street"
},
"zip_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Zip Code",
"default": null,
"description": "Only when it differs from the profile's"
},
"last_name": {
"type": "string",
"title": "Last Name"
},
"first_name": {
"type": "string",
"title": "First Name"
}
},
"description": "The applicant's name, date of birth, address and contact details."
},
"WalkPropertyBlock": {
"type": "object",
"title": "WalkPropertyBlock",
"properties": {
"hoa": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Hoa",
"default": null,
"description": "In a homeowners association"
},
"pets": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Pets",
"default": null
},
"units": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Units",
"default": null,
"description": "Number of families the building holds"
},
"garage": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Garage",
"default": null,
"description": "'attached 2 car' / 'detached 1 car' / 'carport' / 'none'…"
},
"losses": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/LossInput"
}
},
{
"type": "null"
}
],
"title": "Losses",
"default": null,
"description": "Prior property losses, each dated. [] means none; omit if unknown"
},
"devices": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
{
"type": "null"
}
],
"title": "Devices",
"default": null,
"description": "Protective devices in the home: 'smoke alarm', 'deadbolts', 'fire extinguisher', 'central burglar alarm', 'sprinklers'… ['None'] means asked-and-none; omit the field if never asked"
},
"stories": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stories",
"default": null
},
"in_trust": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "In Trust",
"default": null,
"description": "The home is held in a trust"
},
"bathrooms": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Bathrooms",
"default": null
},
"employees": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Employees",
"default": null,
"description": "Anyone employed at the property (nanny, housekeeper…)"
},
"household": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Household",
"default": null,
"description": "Number of people living in the home"
},
"occupancy": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupancy",
"default": null,
"description": "'owner occupied' / 'tenant occupied' / 'seasonal' / 'vacant'"
},
"purchased": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Purchased",
"default": null,
"description": "When the home was bought: YYYY, YYYY-MM or YYYY-MM-DD"
},
"roof_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Roof Type",
"default": null,
"description": "'composition shingle' / 'tile' / 'metal'…"
},
"roof_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Roof Year",
"default": null,
"description": "Year the roof was last replaced"
},
"foundation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Foundation",
"default": null,
"description": "'slab' / 'raised' / 'basement' / 'crawlspace'…"
},
"year_built": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Year Built",
"default": null
},
"roof_layers": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Roof Layers",
"default": null
},
"square_feet": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Square Feet",
"default": null
},
"home_sharing": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Home Sharing",
"default": null,
"description": "Rented out short-term (Airbnb, VRBO…)"
},
"hydrant_feet": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Hydrant Feet",
"default": null,
"description": "Distance to the nearest fire hydrant, feet"
},
"solar_panels": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Solar Panels",
"default": null
},
"swimming_pool": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Swimming Pool",
"default": null
},
"replacement_cost": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Replacement Cost",
"default": null,
"description": "Dwelling replacement cost estimate, dollars"
},
"seismic_retrofit": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Seismic Retrofit",
"default": null,
"description": "Whether the home has been seismically retrofitted"
},
"construction_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Construction Type",
"default": null,
"description": "'frame' / 'masonry' / 'masonry veneer'…"
},
"miles_to_fire_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Miles To Fire Station",
"default": null
},
"renovation_permit_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Renovation Permit Year",
"default": null,
"description": "Year of the last permitted plumbing, electrical, heating or roof work"
}
},
"description": "The dwelling, for home and renters.",
"additionalProperties": true
},
"WalkPriorInsuranceInput": {
"type": "object",
"title": "WalkPriorInsuranceInput",
"properties": {
"lapse": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Lapse",
"default": null,
"description": "Any lapse in coverage in the last 12 months"
},
"since": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Since",
"default": null,
"description": "Start date: YYYY, YYYY-MM or YYYY-MM-DD"
},
"until": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Until",
"default": null,
"description": "End date: YYYY, YYYY-MM or YYYY-MM-DD; omit while in force"
},
"limits": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Limits",
"default": null,
"description": "Bodily-injury limits held, e.g. \"100/300\""
},
"carrier": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Carrier",
"default": null
},
"insured": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Insured",
"default": null
}
},
"description": "The insurance carried now.",
"additionalProperties": true
}
},
"title": "live_carrier_quotesArguments",
"required": [
"profile"
],
"properties": {
"lines": {
"anyOf": [
{
"$ref": "#/$defs/LinesInput"
},
{
"type": "null"
}
],
"default": null
},
"profile": {
"$ref": "#/$defs/LiveQuoteProfile",
"type": "object"
},
"carriers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Carriers",
"default": null
},
"identity": {
"anyOf": [
{
"$ref": "#/$defs/ApplicantIdentity"
},
{
"type": "null"
}
],
"default": null
},
"user_authorization": {
"type": "string",
"title": "User Authorization",
"default": ""
},
"dispatch_ready_only": {
"type": "boolean",
"title": "Dispatch Ready Only",
"default": false
}
}
}Purpose: generate instant, itemized quote estimates from the carriers Foresee supports, across the lines and states Foresee currently serves, in one call — the LIVE TODAY line at the end of this description names today's set. `lines` is REQUIRED and is ONE map: each key names a line to price (e.g. "auto", "renters", "home" — plain words are fine), each value is that line's coverage ask as actual numbers. A line Foresee doesn't quote in the user's state comes back under `skipped`: `lines` names each one and `message` is one sentence, written to be relayed to the user as-is, naming what Foresee does quote in that state. For auto the ask has four axes — `bi` (bodily-injury liability, per-person/ per-accident in $000s, e.g. "100/300"), `pd` (property-damage liability in $000s, e.g. 100), `coll_deductible` (collision deductible in dollars, e.g. 500) and `comp_deductible` (comprehensive deductible in dollars, e.g. 500); `um` and `medpay` are optional. A renters ask has four axes — `coverage_c` (personal-property/contents limit in dollars, e.g. 30000), `coverage_e` (personal liability in dollars, e.g. 100000), `coverage_f` (guest medical in dollars, e.g. 1000) and `deductible` (all-perils, in dollars, e.g. 500); `coverage_d` is optional. A home ask: `coverage_a` (the dwelling's replacement cost in dollars), `coverage_e` (e.g. 300000), `coverage_f` (e.g. 1000) and `aop_deductible` (all-other-perils deductible in dollars, e.g. 1000). There are no named coverage levels and the server never defaults: pass exact numbers. An omitted OPTIONAL axis (`um`, `medpay`, `coverage_d`) keeps each carrier's own default — the quote's per-coverage lines show what was rated. Any numbers at or above the state's legal minimum work as the ask (an auto `bi`/`pd` below it prices nothing — no carrier may sell that policy — and comes back under `coverage_required` naming the minimum); each carrier's `price_ladder` prices every other rung, so a starting selection is easy to refine after the fact. An incomplete ask on a live line prices nothing and answers with `coverage_required` naming that line's own axes; an axis supplied with a value no carrier offers (`bi` "banana", a negative deductible) is refused the same way, naming the bad value and the format the axis takes. Each supported carrier is priced at the selection given; a carrier that doesn't offer an asked rung is priced at its nearest offered one and says so: its entry carries `rated_vs_asked` (per axis: `asked`, `rated`, and `coverage` "less"/"more" than asked; the dense text puts it on the `C` row as `rated`). That price is NOT like-for-like — state the rated limits next to it every time you show it (e.g. "$255/mo — 30/60 BI / $25k PD, the most this carrier offers, not the 100/300 / $100k you asked for"), and never let it headline or anchor a cheapest/spread claim without saying so. A carrier Foresee can't price appears in `failures` with the reason, as does one Foresee can't price for a line it was asked on (no program served there yet, or the carrier doesn't sell that line in the state) — a carrier never silently vanishes from a line's results. Priced results come back per line under `by_line`. Profile requirements: ZIP code, age (or dob) and — for auto — each vehicle's year/make/model are REQUIRED; they have no server-side fallback. A missing or mistyped one errors at the schema with guidance; a value that fits the schema but cannot rate ("not-a-zip", a negative age) comes back in `profile_required` naming it, with guidance on what the field takes. Use the profile schema's exact field names: a key the schema doesn't name is carried but never rated. A complete call — a 25-year-old in Oakland with a 2021 Civic, a January 2025 speeding ticket and a 2023 at-fault accident, asking for 100/300 BI, $100k PD and $500 collision/comprehensive deductibles: {"profile": {"zip_code": "94621", "age": 25, "auto": {"drivers": [{"violations": [{"on": "2025-01", "kind": "speeding"}], "accidents": [{"on": "2023-06-15", "at_fault": true, "amount": 4200}]}], "vehicles": [{"year": 2021, "make": "Honda", "model": "Civic"}]}}, "lines": {"auto": {"bi": "100/300", "pd": 100, "coll_deductible": 500, "comp_deductible": 500}}} Every violation needs `kind` and `on`, every accident `on`; an incomplete entry is refused naming its path, never assumed away. Each carrier returns a **point estimate** (`monthly`) plus a `confidence_interval` that reflects only what's genuinely unresolvable (irreducible), NOT missing profile fields. A field the caller omits is filled with ONE declared value and reported in `assumptions` / `tighten_by` (the reducible "tell us X and we sharpen" gap) — the response is built to be presented early and refined, never widened into a vague range. Each entry's `field` is the exact profile path to send the user's real answer under (e.g. `auto.drivers[].violations`), and `tighten_by` lists those same paths. The one exception is `incident_details`: it is answered by completing the incident entries already sent (dates, fault, BI split), not under a fresh key. Each carrier's `quote` carries every sub-coverage line (BI/PD/collision/ comprehensive/UM…) with its monthly price, at the selection you passed (echoed as `coverage_selection`). Most carriers also carry a `price_ladder`: for each coverage lever of the line (auto: BI limit, PD limit, collision/comprehensive deductible; renters: deductible and the C/E/F limits; home: AOP deductible and the A/E/F limits) the exact price at every rung, one lever moved at a time with everything else held at the user's selection — the ladder is anchored at the selection you passed, so its `anchor.monthly` is the carrier's `monthly`. It answers limit/deductible what-ifs with real marginal prices. Every ladder number IS an exact re-rate; a combined change or an unlisted rung has no derivable price (rating is not linear), so those price only through a re-call with the new `coverage_selection`. A profile what-if (a cleaner record, another vehicle, a different ZIP) prices the same way: re-call with the changed profile. RESULT FORMAT: compact machine text on `dense`, one section per line. Each section opens Q <state> <line> sel=<the coverage_selection priced, as JSON>. assumptions:, tighten_by:, input_flags: and not_rated: carry those fields; each entry's `field` (and each tighten_by item) is the profile path to send the user's answer under, and `incident_details` is answered by completing the incident entries already sent. not_priced: <carrier>,…:<reason> ; … is the line's `failures`, grouped by reason. skipped <line>,…: <message> names the lines not quoted in this state. Row types — C: carrier|entity|monthly|ci lo-hi, then |rated <axis>=<rung>(asked <X>,less|more);… when the price is for a rung other than the ask (`rated_vs_asked`). W: a warning on the carrier above. L: monthly $ per coverage line (already monthly, every carrier), under codes that mean the same coverage at every carrier: BI PD UMBI UIMBI UMPD MEDPAY PIP COLL COMP RENTAL TOWING GAP; A+B is one premium covering both (BI+PD); FEE is a flat fee; any other code is a coverage only that carrier sells. D <lever> <selected>=option:±$: the change in the carrier's monthly for each option of that lever, everything else held at the selection; <selected>(asked <X>) means X is not an option and the price sits at the selected rung — answer deductible/limit what-ifs from D without another call (new monthly = monthly + delta). Only state numbers that appear in the result or follow from monthly + a D delta; if a rung is not in D for a carrier, say the carrier has no such option rather than guessing. When the user wants firm numbers straight from the carriers, offer live carrier quotes: Foresee agents complete the carriers' real quote flows via live_carrier_quotes (which explains the required disclosure + consent affirmation; no sign-in is needed). Instant quotes stay the first answer; live quotes are the follow-up. LIVE TODAY: Foresee quotes auto in CA today.
| Argument | Type | Description |
|---|---|---|
| lines* | object | |
| profile* | object | |
| carriers | any | Price only these carriers, named by the `carrier_key` results carry (e.g. ["geico", "statefarm"]). Omit to price every carrier Foresee supports; a named carrier Foresee can't price comes back in `failures`. |
| include_failures | boolean | Report each carrier Foresee couldn't price under `failures`, with the reason. Leave true unless the user asked to see priced carriers only. |
{
"type": "object",
"$defs": {
"AutoAsk": {
"type": "object",
"title": "AutoAsk",
"properties": {
"bi": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Bi",
"default": null,
"description": "Bodily-injury liability limit, per-person/per-accident in $000s, e.g. \"100/300\""
},
"pd": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Pd",
"default": null,
"description": "Property-damage liability limit in $000s, e.g. 100"
},
"um": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Um",
"default": null,
"description": "Uninsured/underinsured-motorist BI limit in $000s, e.g. \"100/300\""
},
"medpay": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Medpay",
"default": null,
"description": "Medical-payments limit in dollars, e.g. 5000"
},
"coll_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coll Deductible",
"default": null,
"description": "Collision deductible in dollars, e.g. 500"
},
"comp_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Comp Deductible",
"default": null,
"description": "Comprehensive deductible in dollars, e.g. 500"
}
},
"additionalProperties": true
},
"HomeAsk": {
"type": "object",
"title": "HomeAsk",
"properties": {
"coverage_a": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage A",
"default": null,
"description": "Dwelling limit in dollars — the dwelling's replacement cost"
},
"coverage_e": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage E",
"default": null,
"description": "Personal liability limit in dollars, e.g. 300000"
},
"coverage_f": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage F",
"default": null,
"description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000"
},
"aop_deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Aop Deductible",
"default": null,
"description": "All-other-perils deductible in dollars, e.g. 1000"
}
},
"additionalProperties": true
},
"AutoBlock": {
"type": "object",
"title": "AutoBlock",
"properties": {
"drivers": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/DriverInput"
},
"maxItems": 10
},
{
"type": "null"
}
],
"title": "Drivers",
"default": null
},
"vehicles": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/VehicleInput"
},
"maxItems": 10
},
{
"type": "null"
}
],
"title": "Vehicles",
"default": null
}
},
"description": "Omit it for a household without a car.",
"additionalProperties": true
},
"LossInput": {
"type": "object",
"title": "LossInput",
"properties": {
"on": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "On",
"default": null,
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"kind": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Kind",
"default": null,
"description": "\"water\", \"fire\", \"theft\", \"wind/hail\", \"liability\"…"
},
"amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount",
"default": null,
"description": "Paid out, dollars"
}
},
"description": "One prior property loss.",
"additionalProperties": true
},
"LinesInput": {
"type": "object",
"title": "LinesInput",
"properties": {
"auto": {
"anyOf": [
{
"$ref": "#/$defs/AutoAsk"
},
{
"type": "null"
}
],
"default": null
},
"home": {
"anyOf": [
{
"$ref": "#/$defs/HomeAsk"
},
{
"type": "null"
}
],
"default": null
},
"renters": {
"anyOf": [
{
"$ref": "#/$defs/RentersAsk"
},
{
"type": "null"
}
],
"default": null
}
},
"description": "The coverage to price, one entry per line.",
"additionalProperties": true
},
"RentersAsk": {
"type": "object",
"title": "RentersAsk",
"properties": {
"coverage_c": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage C",
"default": null,
"description": "Personal-property (contents) limit in dollars, e.g. 30000"
},
"coverage_d": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage D",
"default": null,
"description": "Loss-of-use limit in dollars"
},
"coverage_e": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage E",
"default": null,
"description": "Personal liability limit in dollars, e.g. 100000"
},
"coverage_f": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Coverage F",
"default": null,
"description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000"
},
"deductible": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Deductible",
"default": null,
"description": "All-perils deductible in dollars, e.g. 500"
}
},
"additionalProperties": true
},
"DriverInput": {
"type": "object",
"title": "DriverInput",
"properties": {
"dob": {
"type": "string",
"title": "Dob",
"format": "date",
"default": null,
"description": "YYYY-MM-DD"
},
"gender": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Gender",
"default": null
},
"status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Status",
"default": null,
"description": "'licensed' (default) / 'permit' / 'not licensed' / 'excluded'"
},
"industry": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Industry",
"default": null
},
"relation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Relation",
"default": null,
"description": "\"self\" / \"spouse\" / \"child\" / \"parent\" / \"other\""
},
"accidents": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/AccidentInput"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Accidents",
"default": null,
"description": "Accidents, one entry each, e.g. [{\"on\": \"2023-06-15\", \"at_fault\": true, \"amount\": 4200}] — every entry needs `on`. An empty list means none."
},
"education": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Education",
"default": null,
"description": "Highest education level: 'No High School' / 'High School' / 'Vocational' / 'Some College' / 'Associate' / 'Bachelors' / 'Masters' / 'Doctorate'"
},
"occupation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupation",
"default": null
},
"violations": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/ViolationInput"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Violations",
"default": null,
"description": "Moving violations, one entry each, e.g. [{\"on\": \"2025-01\", \"kind\": \"speeding\"}] — every entry needs `kind` and `on`. An empty list means a clean record."
},
"good_student": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Good Student",
"default": null,
"description": "Grades that earn a good-student discount (usually a B average or better)"
},
"student_away": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Student Away",
"default": null,
"description": "A student living away at school, without any of the policy's cars"
},
"rideshare_use": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Rideshare Use",
"default": null,
"description": "Drives for ride-share or delivery"
},
"sr22_required": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Sr22 Required",
"default": null
},
"marital_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Marital Status",
"default": null
},
"years_licensed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Years Licensed",
"default": null,
"description": "Years since first licensed"
},
"exclusion_reason": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Exclusion Reason",
"default": null
},
"employment_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Employment Status",
"default": null,
"description": "'Employed' / 'Self-Employed' / 'Retired' / 'Student' / 'Unemployed'"
},
"full_time_student": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Full Time Student",
"default": null,
"description": "Enrolled full time in high school, college or university"
},
"age_first_licensed": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Age First Licensed",
"default": null,
"description": "Age when first licensed"
},
"date_first_licensed": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date First Licensed",
"default": null,
"description": "YYYY-MM-DD; alternative to age_first_licensed"
},
"defensive_driving_course": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Defensive Driving Course",
"default": null,
"description": "Completed a defensive-driving course in the last 3 years"
}
},
"description": "One driver on the policy. The applicant is the driver with relation\n\"self\"; any of their details restated here must match the profile's top\nlevel.",
"additionalProperties": true
},
"QuoteProfile": {
"type": "object",
"anyOf": [
{
"required": [
"age"
]
},
{
"required": [
"dob"
]
}
],
"title": "QuoteProfile",
"required": [
"zip_code"
],
"properties": {
"age": {
"anyOf": [
{
"type": "integer",
"maximum": 120,
"minimum": 16
},
{
"type": "null"
}
],
"title": "Age",
"default": null,
"description": "REQUIRED unless dob is passed. If the user was vague ('mid-20s'), pass a concrete age and present it as your assumption."
},
"dob": {
"type": "string",
"title": "Dob",
"format": "date",
"default": null,
"description": "YYYY-MM-DD; alternative to age"
},
"auto": {
"anyOf": [
{
"$ref": "#/$defs/AutoBlock"
},
{
"type": "null"
}
],
"default": null
},
"city": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "City",
"default": null
},
"unit": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"state": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "State",
"default": null,
"description": "Two-letter code; derived from zip_code when omitted"
},
"gender": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Gender",
"default": null
},
"industry": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Industry",
"default": null
},
"property": {
"anyOf": [
{
"$ref": "#/$defs/PropertyBlock"
},
{
"type": "null"
}
],
"default": null
},
"zip_code": {
"type": "string",
"title": "Zip Code",
"maxLength": 200,
"description": "REQUIRED — 5-digit garaging/home ZIP. ALWAYS pass the ZIP here, never under another key. If the user named only a city, pass that city's best-known ZIP and tell them the assumption."
},
"education": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Education",
"default": null,
"description": "Highest education level: 'No High School' / 'High School' / 'Vocational' / 'Some College' / 'Associate' / 'Bachelors' / 'Masters' / 'Doctorate'"
},
"occupation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupation",
"default": null
},
"memberships": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
{
"type": "null"
}
],
"title": "Memberships",
"default": null,
"description": "Organizations the applicant belongs to, e.g. ['Costco', 'AAA']"
},
"credit_range": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Credit Range",
"default": null,
"description": "'Excellent' / 'Good' / 'Fair' / 'Poor' — omit it in CA, HI, MA and MI"
},
"effective_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Effective Date",
"default": null,
"description": "Policy start date, YYYY-MM-DD"
},
"marital_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Marital Status",
"default": null,
"description": "'Single' / 'Married' / …"
},
"residence_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Residence Type",
"default": null,
"description": "'House' / 'Apartment' / 'Condominium' / 'Manufactured Home' / …"
},
"street_address": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Street Address",
"default": null
},
"prior_insurance": {
"anyOf": [
{
"$ref": "#/$defs/PriorInsuranceInput"
},
{
"type": "null"
}
],
"default": null
},
"employment_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Employment Status",
"default": null,
"description": "'Employed' / 'Self-Employed' / 'Retired' / 'Student' / 'Unemployed'"
},
"companion_policies": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/HeldPolicyInput"
}
},
{
"type": "null"
}
],
"title": "Companion Policies",
"default": null,
"description": "Policies the household already holds, e.g. [{\"line\": \"home\", \"carrier\": \"State Farm\"}]"
},
"months_at_residence": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Months At Residence",
"default": null
},
"military_affiliation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Military Affiliation",
"default": null,
"description": "'active' / 'veteran' / 'family' / 'none'"
},
"home_ownership_status": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Home Ownership Status",
"default": null,
"description": "'rent' / 'own with mortgage' / 'own outright' — bare 'own' is accepted"
}
},
"description": "The household being quoted: the people and where they live, plus an\n`auto` block (drivers and vehicles) and a `property` block (the\ndwelling). REQUIRED: the ZIP, the applicant's age (or dob) and, for auto,\neach vehicle's year/make/model — when the user was vague, pass a concrete\nvalue and tell them. Everything else is optional; omissions come back as\n`assumptions`.",
"additionalProperties": true
},
"VehicleInput": {
"type": "object",
"title": "VehicleInput",
"properties": {
"vin": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Vin",
"default": null
},
"cost": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Cost",
"default": null,
"description": "Cost new, whole dollars"
},
"make": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Make",
"default": null
},
"trim": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Trim",
"default": null
},
"year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Year",
"default": null
},
"model": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Model",
"default": null
},
"owner": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Owner",
"default": null,
"description": "Whose car it is, by relation to the applicant: 'self' / 'spouse' / 'domestic partner' / 'child' / 'parent' / 'sibling' / 'other'"
},
"ownership": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Ownership",
"default": null,
"description": "'owned' / 'financed' / 'leased'"
},
"anti_theft": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Anti Theft",
"default": null,
"description": "'alarm' / 'active_disable' / 'passive_disable' / 'recovery_device'"
},
"body_style": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Body Style",
"default": null,
"description": "Trim / body style, e.g. \"XLT AWD 4D GAS\""
},
"bought_new": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Bought New",
"default": null
},
"primary_use": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Primary Use",
"default": null,
"description": "'Personal' / 'Commute' / 'Business'"
},
"commute_days": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Commute Days",
"default": null,
"description": "Commute days per week"
},
"garaging_zip": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Garaging Zip",
"default": null,
"description": "ZIP where this vehicle is kept, when different from zip_code"
},
"one_way_miles": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "One Way Miles",
"default": null,
"description": "One-way commute distance, miles"
},
"purchase_date": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Purchase Date",
"default": null,
"description": "When bought: YYYY, YYYY-MM or YYYY-MM-DD"
},
"annual_mileage": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Annual Mileage",
"default": null
},
"anti_lock_brakes": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Anti Lock Brakes",
"default": null
},
"principal_driver": {
"anyOf": [
{
"type": "integer",
"minimum": 1
},
{
"type": "null"
}
],
"title": "Principal Driver",
"default": null,
"description": "Who mainly drives it: the driver's place in auto.drivers, 1 = first listed"
},
"daytime_running_lights": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Daytime Running Lights",
"default": null
}
},
"description": "One vehicle on the policy.",
"additionalProperties": true
},
"AccidentInput": {
"type": "object",
"title": "AccidentInput",
"required": [
"on"
],
"properties": {
"on": {
"type": "string",
"title": "On",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"amount": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Amount",
"default": null,
"description": "Damage paid out, dollars"
},
"at_fault": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "At Fault",
"default": null
}
},
"additionalProperties": true
},
"PropertyBlock": {
"type": "object",
"title": "PropertyBlock",
"properties": {
"units": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Units",
"default": null,
"description": "Number of families the building holds"
},
"garage": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Garage",
"default": null,
"description": "'attached 2 car' / 'detached 1 car' / 'carport' / 'none'…"
},
"losses": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/LossInput"
}
},
{
"type": "null"
}
],
"title": "Losses",
"default": null,
"description": "Prior property losses, each dated. [] means none; omit if unknown"
},
"devices": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
{
"type": "null"
}
],
"title": "Devices",
"default": null,
"description": "Protective devices in the home: 'smoke alarm', 'deadbolts', 'fire extinguisher', 'central burglar alarm', 'sprinklers'… ['None'] means asked-and-none; omit the field if never asked"
},
"stories": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Stories",
"default": null
},
"bathrooms": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Bathrooms",
"default": null
},
"household": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Household",
"default": null,
"description": "Number of people living in the home"
},
"occupancy": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Occupancy",
"default": null,
"description": "'owner occupied' / 'tenant occupied' / 'seasonal' / 'vacant'"
},
"purchased": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Purchased",
"default": null,
"description": "When the home was bought: YYYY, YYYY-MM or YYYY-MM-DD"
},
"roof_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Roof Type",
"default": null,
"description": "'composition shingle' / 'tile' / 'metal'…"
},
"roof_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Roof Year",
"default": null,
"description": "Year the roof was last replaced"
},
"foundation": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Foundation",
"default": null,
"description": "'slab' / 'raised' / 'basement' / 'crawlspace'…"
},
"year_built": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Year Built",
"default": null
},
"roof_layers": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Roof Layers",
"default": null
},
"square_feet": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Square Feet",
"default": null
},
"swimming_pool": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Swimming Pool",
"default": null
},
"replacement_cost": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Replacement Cost",
"default": null,
"description": "Dwelling replacement cost estimate, dollars"
},
"seismic_retrofit": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Seismic Retrofit",
"default": null,
"description": "Whether the home has been seismically retrofitted"
},
"construction_type": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Construction Type",
"default": null,
"description": "'frame' / 'masonry' / 'masonry veneer'…"
},
"miles_to_fire_station": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Miles To Fire Station",
"default": null
},
"renovation_permit_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Renovation Permit Year",
"default": null,
"description": "Year of the last permitted plumbing, electrical, heating or roof work"
}
},
"description": "The dwelling, for home and renters.",
"additionalProperties": true
},
"ViolationInput": {
"type": "object",
"title": "ViolationInput",
"required": [
"on",
"kind"
],
"properties": {
"on": {
"type": "string",
"title": "On",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
"description": "When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
},
"kind": {
"type": "string",
"title": "Kind",
"maxLength": 200,
"minLength": 1,
"description": "The violation in plain words: \"speeding\", \"DUI\", \"reckless driving\", \"running a red light\"…"
}
},
"description": "One moving violation.",
"additionalProperties": true
},
"HeldPolicyInput": {
"type": "object",
"title": "HeldPolicyInput",
"required": [
"line"
],
"properties": {
"line": {
"type": "string",
"title": "Line",
"maxLength": 200,
"description": "What the policy insures: \"home\", \"renters\", \"condo\", \"auto\", \"life\", \"umbrella\"…"
},
"carrier": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Carrier",
"default": null,
"description": "Who writes it, e.g. \"State Farm\""
},
"in_force": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "In Force",
"default": null
}
},
"description": "A policy the household already holds.",
"additionalProperties": true
},
"PriorInsuranceInput": {
"type": "object",
"title": "PriorInsuranceInput",
"properties": {
"since": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Since",
"default": null,
"description": "Start date: YYYY, YYYY-MM or YYYY-MM-DD"
},
"until": {
"anyOf": [
{
"type": "string",
"pattern": "^\\d{4}(?:-\\d{2}){0,2}$"
},
{
"type": "null"
}
],
"title": "Until",
"default": null,
"description": "End date: YYYY, YYYY-MM or YYYY-MM-DD; omit while in force"
},
"carrier": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Carrier",
"default": null
},
"insured": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Insured",
"default": null
}
},
"description": "The insurance carried now.",
"additionalProperties": true
}
},
"title": "quote_insuranceArguments",
"required": [
"profile",
"lines"
],
"properties": {
"lines": {
"$ref": "#/$defs/LinesInput",
"type": "object"
},
"profile": {
"$ref": "#/$defs/QuoteProfile",
"type": "object"
},
"carriers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Carriers",
"default": null,
"description": "Price only these carriers, named by the `carrier_key` results carry (e.g. [\"geico\", \"statefarm\"]). Omit to price every carrier Foresee supports; a named carrier Foresee can't price comes back in `failures`."
},
"include_failures": {
"type": "boolean",
"title": "Include Failures",
"default": true,
"description": "Report each carrier Foresee couldn't price under `failures`, with the reason. Leave true unless the user asked to see priced carriers only."
}
}
}