Skip to main content
Glama

Instant insurance quote estimates

quote_insurance
Read-only

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 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: ,…: ; … is the line's failures, grouped by reason. skipped ,…: names the lines not quoted in this state. Row types — C: carrier|entity|monthly|ci lo-hi, then |rated =(asked ,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 =option:±$: the change in the carrier's monthly for each option of that lever, everything else held at the selection; (asked ) 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.

Input Schema

NameRequiredDescriptionDefault
linesYes
profileYes
carriersNoPrice 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_failuresNoReport each carrier Foresee couldn't price under `failures`, with the reason. Leave true unless the user asked to see priced carriers only.

Output Schema

NameRequiredDescriptionDefault
denseNo
errorNo
stateNo
bundleNo
detailNo
by_lineNo
messageNo
skippedNo
serviceableNo
presentationNo
profile_requiredNo
coverage_requiredNo
example_argumentsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / $defs / PropertyBlock / properties / protection_class
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "ISO fire protection class, 1-10",
      -  "title": "Protection Class"
      -}
  2. Changed5 schema fields changed
    • addedInput schema / $defs / DriverInput / properties / full_time_student
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Enrolled full time in high school, college or university",
      +  "title": "Full Time Student"
      +}
    • addedInput schema / $defs / DriverInput / properties / good_student
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Grades that earn a good-student discount (usually a B average or better)",
      +  "title": "Good Student"
      +}
    • addedInput schema / $defs / DriverInput / properties / student_away
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "A student living away at school, without any of the policy's cars",
      +  "title": "Student Away"
      +}
    • addedInput schema / $defs / VehicleInput / properties / owner
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Whose car it is, by relation to the applicant: 'self' / 'spouse' / 'domestic partner' / 'child' / 'parent' / 'sibling' / 'other'",
      +  "title": "Owner"
      +}
    • addedInput schema / $defs / VehicleInput / properties / principal_driver
      Added value: +{
      +  "anyOf": [
      +    {
      +      "minimum": 1,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Who mainly drives it: the driver's place in auto.drivers, 1 = first listed",
      +  "title": "Principal Driver"
      +}
  3. Changed8 schema fields changed
    • removedInput schema / $defs / DriverInput / properties / dob / anyOf
      Removed value: -[
      -  {
      -    "format": "date",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / $defs / DriverInput / properties / dob / format
      Added value: +"date"
    • addedInput schema / $defs / DriverInput / properties / dob / type
      Added value: +"string"
    • addedInput schema / $defs / QuoteProfile / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "age"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "dob"
      +    ]
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / age / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 120,
      +    "minimum": 16,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / $defs / QuoteProfile / properties / dob / anyOf
      Removed value: -[
      -  {
      -    "format": "date",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / $defs / QuoteProfile / properties / dob / format
      Added value: +"date"
    • addedInput schema / $defs / QuoteProfile / properties / dob / type
      Added value: +"string"
  4. Changed8 schema fields changed
    • addedInput schema / properties / carriers / description
      Added value: +"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`."
    • addedInput schema / properties / include_failures / description
      Added value: +"Report each carrier Foresee couldn't price under `failures`, with the reason. Leave true unless the user asked to see priced carriers only."
    • removedInput schema / properties / include_partial
      Removed value: -{
      -  "default": false,
      -  "title": "Include Partial",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / lines / $ref
      Added value: +"#/$defs/LinesInput"
    • removedInput schema / properties / lines / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/LinesInput"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / lines / default
      Removed value: -null
    • addedInput schema / properties / lines / type
      Added value: +"object"
    • changedInput schema / required
      Previous value: -[
      -  "profile"
      -]New value: +[
      +  "profile",
      +  "lines"
      +]
  5. Changed100 schema fields changed
    • removedInput schema / $defs / AccidentInput / description
      Removed value: -"One accident, dated, on the driver who had it."
    • changedInput schema / $defs / AccidentInput / properties / amount / description
      Previous value: -"Total damage paid out in dollars, if known"New value: +"Damage paid out, dollars"
    • removedInput schema / $defs / AccidentInput / properties / at_fault / description
      Removed value: -"Whether this driver was at fault"
    • changedInput schema / $defs / AccidentInput / properties / on / description
      Previous value: -"When it happened — ISO 8601, reduced precision welcome (\"2023\")."New value: +"When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
    • addedInput schema / $defs / AccidentInput / properties / on / pattern
      Added value: +"^\\d{4}(?:-\\d{2}){0,2}$"
    • addedInput schema / $defs / AutoAsk
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "bi": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Bodily-injury liability limit, per-person/per-accident in $000s, e.g. \"100/300\"",
      +      "title": "Bi"
      +    },
      +    "coll_deductible": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Collision deductible in dollars, e.g. 500",
      +      "title": "Coll Deductible"
      +    },
      +    "comp_deductible": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Comprehensive deductible in dollars, e.g. 500",
      +      "title": "Comp Deductible"
      +    },
      +    "medpay": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Medical-payments limit in dollars, e.g. 5000",
      +      "title": "Medpay"
      +    },
      +    "pd": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Property-damage liability limit in $000s, e.g. 100",
      +      "title": "Pd"
      +    },
      +    "um": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Uninsured/underinsured-motorist BI limit in $000s, e.g. \"100/300\"",
      +      "title": "Um"
      +    }
      +  },
      +  "title": "AutoAsk",
      +  "type": "object"
      +}
    • changedInput schema / $defs / AutoBlock / description
      Previous value: -"The auto line's facts: who drives, and what. Omit the whole block for a\nhousehold that isn't asking about a car — nothing about a vehicle is ever\nassumed for a profile without one."New value: +"Omit it for a household without a car."
    • changedInput schema / $defs / AutoBlock / properties / drivers / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/DriverInput"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "$ref": "#/$defs/DriverInput"
      +    },
      +    "maxItems": 10,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / AutoBlock / properties / vehicles / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/VehicleInput"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "$ref": "#/$defs/VehicleInput"
      +    },
      +    "maxItems": 10,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / $defs / CoverageSelectionInput
      Removed value: -{
      -  "additionalProperties": true,
      -  "description": "The coverage to price, as actual numbers on named axes — the value of\neach entry in the `lines` map. Each line reads only its own axes; the map\nkey says which apply.",
      -  "properties": {
      -    "aop_deductible": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "HOME: all-other-perils deductible in dollars, e.g. 1000",
      -      "title": "Aop Deductible"
      -    },
      -    "bi": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Bodily-injury liability limit, per-person/per-accident in $000s, e.g. \"100/300\"",
      -      "title": "Bi"
      -    },
      -    "coll_deductible": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Collision deductible in dollars, e.g. 500",
      -      "title": "Coll Deductible"
      -    },
      -    "comp_deductible": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Comprehensive deductible in dollars, e.g. 500",
      -      "title": "Comp Deductible"
      -    },
      -    "coverage_a": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "HOME: dwelling limit in dollars — set it to the dwelling's replacement cost (the profile's property.replacement_cost when known)",
      -      "title": "Coverage A"
      -    },
      -    "coverage_c": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "RENTERS: personal-property (contents) limit in dollars, e.g. 30000 — the anchor an HO-4 rates off",
      -      "title": "Coverage C"
      -    },
      -    "coverage_d": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "RENTERS: loss-of-use limit in dollars — omit to keep the engine's carrier default (commonly a fixed ratio of the contents limit)",
      -      "title": "Coverage D"
      -    },
      -    "coverage_e": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "RENTERS/HOME: personal liability limit in dollars, e.g. 100000 (renters) / 300000 (home)",
      -      "title": "Coverage E"
      -    },
      -    "coverage_f": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "RENTERS/HOME: guest medical (medical payments to others) limit in dollars, e.g. 1000",
      -      "title": "Coverage F"
      -    },
      -    "deductible": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "RENTERS: all-perils deductible in dollars, e.g. 500",
      -      "title": "Deductible"
      -    },
      -    "medpay": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Medical-payments limit in dollars, e.g. 5000 — omit to keep the carrier's default",
      -      "title": "Medpay"
      -    },
      -    "pd": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Property-damage liability limit in $000s (NOT dollars), e.g. 100",
      -      "title": "Pd"
      -    },
      -    "um": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null,
      -      "description": "Uninsured/underinsured-motorist BI limit in $000s, e.g. \"100/300\" — omit to keep the carrier's default",
      -      "title": "Um"
      -    }
      -  },
      -  "title": "CoverageSelectionInput",
      -  "type": "object"
      -}
    • changedInput schema / $defs / DriverInput / description
      Previous value: -"One driver on the policy. Exactly one driver is the applicant\n(`relation` omitted or \"self\") and takes their demographics from the\nprofile's top level — restating them here is fine when they agree,\nan error when they don't."New value: +"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."
    • changedInput schema / $defs / DriverInput / properties / accidents / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/AccidentInput"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "$ref": "#/$defs/AccidentInput"
      +    },
      +    "maxItems": 20,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / age_first_licensed / description
      Previous value: -"Age when first licensed, typically 16-18 (Liberty Mutual asks)"New value: +"Age when first licensed"
    • changedInput schema / $defs / DriverInput / properties / date_first_licensed / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "date",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / date_first_licensed / description
      Previous value: -"Date first licensed, YYYY-MM-DD (alternative to age_first_licensed)"New value: +"YYYY-MM-DD; alternative to age_first_licensed"
    • changedInput schema / $defs / DriverInput / properties / defensive_driving_course / description
      Previous value: -"Completed a defensive-driving / accident-prevention course, last 3 years"New value: +"Completed a defensive-driving course in the last 3 years"
    • changedInput schema / $defs / DriverInput / properties / dob / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "date",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / dob / description
      Previous value: -"Date of birth, YYYY-MM-DD"New value: +"YYYY-MM-DD"
    • removedInput schema / $defs / DriverInput / properties / drivers_license_number
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Driver's license number — identity like the name, supplied only when a carrier's needs entry asks for it (some carrier forms insist on one for every rated driver before quoting). This entry is every driver's ONE home for it, the applicant's included",
      -  "title": "Drivers License Number"
      -}
    • removedInput schema / $defs / DriverInput / properties / exclusion_reason / description
      Removed value: -"Why an excluded driver doesn't drive, e.g. 'never had a license' — carriers (Allstate) require it for an excluded spouse"
    • removedInput schema / $defs / DriverInput / properties / first_name
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legal first name — live carrier forms insist on naming every listed driver (a married applicant's spouse especially); the applicant's own name rides in `identity` instead (logged as PII, never echoed)",
      -  "title": "First Name"
      -}
    • removedInput schema / $defs / DriverInput / properties / last_name
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Legal last name (see first_name)",
      -  "title": "Last Name"
      -}
    • removedInput schema / $defs / DriverInput / properties / license_state
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Two-letter state that issued this driver's license",
      -  "title": "License State"
      -}
    • changedInput schema / $defs / DriverInput / properties / relation / description
      Previous value: -"\"self\" (default for the first driver), \"spouse\", \"child\", \"parent\", \"other\""New value: +"\"self\" / \"spouse\" / \"child\" / \"parent\" / \"other\""
    • changedInput schema / $defs / DriverInput / properties / rideshare_use / description
      Previous value: -"Drives for ride-share or delivery (Uber, Lyft…) — personal policies exclude livery use, so this changes eligibility and rate"New value: +"Drives for ride-share or delivery"
    • removedInput schema / $defs / DriverInput / properties / sr22_required / description
      Removed value: -"Needs an SR-22 / financial-responsibility filing"
    • changedInput schema / $defs / DriverInput / properties / status / description
      Previous value: -"'licensed' (default) / 'permit' / 'not licensed' / 'excluded' — an excluded driver is listed on the household but not rated"New value: +"'licensed' (default) / 'permit' / 'not licensed' / 'excluded'"
    • changedInput schema / $defs / DriverInput / properties / violations / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/ViolationInput"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "$ref": "#/$defs/ViolationInput"
      +    },
      +    "maxItems": 20,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / $defs / DriverInput / properties / years_licensed / description
      Added value: +"Years since first licensed"
    • removedInput schema / $defs / DriverInput / properties / years_licensed_outside_us
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Years licensed outside the US; 0 = never held a licence abroad — GEICO, The General and Dairyland's live quote forms require the answer",
      -  "title": "Years Licensed Outside Us"
      -}
    • removedInput schema / $defs / DriverInput / properties / years_licensed_us
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Years licensed in the US, when it differs from years_licensed",
      -  "title": "Years Licensed Us"
      -}
    • changedInput schema / $defs / HeldPolicyInput / description
      Previous value: -"A policy the household already holds. A carrier's bundle discount\napplies only to a policy THAT carrier's group writes, so the writer is\nhalf the fact: name it, or no carrier's discount applies."New value: +"A policy the household already holds."
    • changedInput schema / $defs / HeldPolicyInput / properties / carrier / description
      Previous value: -"Who writes it, as the household would say it: \"State Farm\", \"Farmers\", \"AAA\". Without it no carrier gives a multi-policy discount"New value: +"Who writes it, e.g. \"State Farm\""
    • removedInput schema / $defs / HeldPolicyInput / properties / in_force / description
      Removed value: -"False for a policy that has lapsed or been cancelled"
    • addedInput schema / $defs / HomeAsk
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "aop_deductible": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "All-other-perils deductible in dollars, e.g. 1000",
      +      "title": "Aop Deductible"
      +    },
      +    "coverage_a": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Dwelling limit in dollars — the dwelling's replacement cost",
      +      "title": "Coverage A"
      +    },
      +    "coverage_e": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Personal liability limit in dollars, e.g. 300000",
      +      "title": "Coverage E"
      +    },
      +    "coverage_f": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000",
      +      "title": "Coverage F"
      +    }
      +  },
      +  "title": "HomeAsk",
      +  "type": "object"
      +}
    • addedInput schema / $defs / LinesInput
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "The coverage to price, one entry per line.",
      +  "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
      +    }
      +  },
      +  "title": "LinesInput",
      +  "type": "object"
      +}
    • changedInput schema / $defs / LossInput / description
      Previous value: -"One prior property loss, dated."New value: +"One prior property loss."
    • changedInput schema / $defs / LossInput / properties / amount / description
      Previous value: -"Amount paid out in dollars, if known"New value: +"Paid out, dollars"
    • changedInput schema / $defs / LossInput / properties / on / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / LossInput / properties / on / description
      Previous value: -"When it happened — ISO 8601, reduced precision welcome"New value: +"When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
    • changedInput schema / $defs / PriorInsuranceInput / description
      Previous value: -"The insurance carried now. `since`/`until` are the fact behind every way\na form asks how long it ran — tenure is derived from the dates, never sent\nas its own number."New value: +"The insurance carried now."
    • removedInput schema / $defs / PriorInsuranceInput / properties / carrier / description
      Removed value: -"Current carrier's name"
    • removedInput schema / $defs / PriorInsuranceInput / properties / insured / description
      Removed value: -"Currently insured?"
    • removedInput schema / $defs / PriorInsuranceInput / properties / lapse
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "boolean"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Any lapse in coverage in the last 12 months",
      -  "title": "Lapse"
      -}
    • removedInput schema / $defs / PriorInsuranceInput / properties / limits
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Bodily-injury limits carried now, e.g. \"100/300\" — carriers ask it of the insured",
      -  "title": "Limits"
      -}
    • changedInput schema / $defs / PriorInsuranceInput / properties / since / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PriorInsuranceInput / properties / since / description
      Previous value: -"When this coverage started — ISO 8601, reduced precision welcome (\"2019\")"New value: +"Start date: YYYY, YYYY-MM or YYYY-MM-DD"
    • changedInput schema / $defs / PriorInsuranceInput / properties / until / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PriorInsuranceInput / properties / until / description
      Previous value: -"When it ends/ended — ISO 8601, reduced precision welcome; omit while the cover is still in force"New value: +"End date: YYYY, YYYY-MM or YYYY-MM-DD; omit while in force"
    • changedInput schema / $defs / PropertyBlock / description
      Previous value: -"The dwelling's facts — used by home AND renters. Accepted and recorded\ntoday; priced once a property line launches."New value: +"The dwelling, for home and renters."
    • changedInput schema / $defs / PropertyBlock / properties / household / description
      Previous value: -"How many people live in the home"New value: +"Number of people living in the home"
    • changedInput schema / $defs / PropertyBlock / properties / losses / description
      Previous value: -"Prior property losses, each DATED (carrier forms ask when). [] means asked-and-loss-free; omit the field if never asked"New value: +"Prior property losses, each dated. [] means none; omit if unknown"
    • removedInput schema / $defs / PropertyBlock / properties / miles_to_fire_station / description
      Removed value: -"Road miles to the responding fire station — a rating axis at several carriers"
    • changedInput schema / $defs / PropertyBlock / properties / purchased / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / purchased / description
      Previous value: -"When the home was purchased — ISO 8601, reduced precision welcome (\"2021\" / \"2021-06\"). Carrier forms ask it outright."New value: +"When the home was bought: YYYY, YYYY-MM or YYYY-MM-DD"
    • changedInput schema / $defs / PropertyBlock / properties / renovation_permit_year / description
      Previous value: -"Year of the last permitted renovation (plumbing/electrical/heating/roof)"New value: +"Year of the last permitted plumbing, electrical, heating or roof work"
    • changedInput schema / $defs / PropertyBlock / properties / replacement_cost / description
      Previous value: -"Estimated dwelling replacement cost in dollars, if the user has one"New value: +"Dwelling replacement cost estimate, dollars"
    • removedInput schema / $defs / PropertyBlock / properties / roof_layers / description
      Removed value: -"How many layers of roofing are on the house"
    • changedInput schema / $defs / PropertyBlock / properties / roof_year / description
      Previous value: -"Year the roof was last fully replaced"New value: +"Year the roof was last replaced"
    • changedInput schema / $defs / PropertyBlock / properties / seismic_retrofit / description
      Previous value: -"Whether an older home has been seismically retrofitted (asked in CA)"New value: +"Whether the home has been seismically retrofitted"
    • changedInput schema / $defs / PropertyBlock / properties / units / description
      Previous value: -"How many families the building holds"New value: +"Number of families the building holds"
    • changedInput schema / $defs / QuoteProfile / description
      Previous value: -"The household being quoted: a line-neutral core plus per-line blocks.\nA few facts are REQUIRED — the ZIP, the applicant's age (or dob), and,\nwhen quoting auto, each vehicle's year/make/model — because they have no\nneutral rateable value; YOU supply those, inventing a concrete value from\ncontext when the user was vague and telling them so. Everything else is\noptional: omissions become explicit, priced assumptions (`assumptions` /\n`tighten_by`), never a refusal.\n\nThe core carries facts about the people and where they live; the `auto`\nblock carries `drivers[]` and `vehicles[]`; the `property` block carries\nthe dwelling (home AND renters). A household that will only ever buy\nrenters simply has no `auto` block, and nothing about a car is assumed\nfor it."New value: +"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`."
    • removedInput schema / $defs / QuoteProfile / properties / auto / description
      Removed value: -"The auto line's facts: drivers[] and vehicles[]"
    • changedInput schema / $defs / QuoteProfile / properties / companion_policies / description
      Previous value: -"Policies the household already holds, each with who writes it, e.g. [{\"line\": \"home\", \"carrier\": \"State Farm\"}] — only the carrier writing a policy gives a multi-policy discount for it"New value: +"Policies the household already holds, e.g. [{\"line\": \"home\", \"carrier\": \"State Farm\"}]"
    • changedInput schema / $defs / QuoteProfile / properties / credit_range / description
      Previous value: -"'Excellent' / 'Good' / 'Fair' / 'Poor'. Not a rating input in CA, HI, MA, or MI (credit-based auto rating is banned there) — omit it and don't ask shoppers in those states."New value: +"'Excellent' / 'Good' / 'Fair' / 'Poor' — omit it in CA, HI, MA and MI"
    • changedInput schema / $defs / QuoteProfile / properties / dob / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "date",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / dob / description
      Previous value: -"Date of birth, YYYY-MM-DD (alternative to age)"New value: +"YYYY-MM-DD; alternative to age"
    • changedInput schema / $defs / QuoteProfile / properties / effective_date / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "format": "date",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / effective_date / description
      Previous value: -"Desired start date for the new policy, YYYY-MM-DD"New value: +"Policy start date, YYYY-MM-DD"
    • changedInput schema / $defs / QuoteProfile / properties / home_ownership_status / description
      Previous value: -"'rent' / 'own with mortgage' / 'own outright' — bare 'own' is accepted; carrier forms ask which"New value: +"'rent' / 'own with mortgage' / 'own outright' — bare 'own' is accepted"
    • removedInput schema / $defs / QuoteProfile / properties / industry / description
      Removed value: -"Industry beside the occupation, e.g. 'Finance and Insurance' — GEICO's live quote form insists on it"
    • changedInput schema / $defs / QuoteProfile / properties / memberships / description
      Previous value: -"Organizations the applicant belongs to, e.g. ['Costco', 'AAA'] — group/affinity plans (CA §1861.12) discount on them"New value: +"Organizations the applicant belongs to, e.g. ['Costco', 'AAA']"
    • changedInput schema / $defs / QuoteProfile / properties / military_affiliation / description
      Previous value: -"'active' / 'veteran' / 'family' / 'none' — USAA quotes only military-affiliated households"New value: +"'active' / 'veteran' / 'family' / 'none'"
    • removedInput schema / $defs / QuoteProfile / properties / military_branch
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Branch of service, e.g. 'Army', 'Navy' (USAA asks)",
      -  "title": "Military Branch"
      -}
    • removedInput schema / $defs / QuoteProfile / properties / military_rank_paygrade
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "maxLength": 200,
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "Rank / pay grade, e.g. 'E-5' (USAA asks)",
      -  "title": "Military Rank Paygrade"
      -}
    • removedInput schema / $defs / QuoteProfile / properties / military_service_end_year
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Military Service End Year"
      -}
    • removedInput schema / $defs / QuoteProfile / properties / military_service_start_year
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Military Service Start Year"
      -}
    • removedInput schema / $defs / QuoteProfile / properties / months_at_residence / description
      Removed value: -"How long at the current address, in months"
    • removedInput schema / $defs / QuoteProfile / properties / occupation / description
      Removed value: -"Occupation as carriers collect it, e.g. 'Accountant'"
    • removedInput schema / $defs / QuoteProfile / properties / prior_insurance / description
      Removed value: -"The insurance carried now — carrier, dates, limits held"
    • removedInput schema / $defs / QuoteProfile / properties / property / description
      Removed value: -"The dwelling's facts — home and renters alike"
    • changedInput schema / $defs / QuoteProfile / properties / state / description
      Previous value: -"Two-letter state code, e.g. 'CA' (derived from zip_code when omitted)"New value: +"Two-letter code; derived from zip_code when omitted"
    • removedInput schema / $defs / QuoteProfile / properties / street_address / description
      Removed value: -"Street address (line 1) — sharpens territory rating and is required for live carrier submissions (logged as PII, never echoed)"
    • removedInput schema / $defs / QuoteProfile / properties / unit / description
      Removed value: -"Apartment/unit number (address line 2) — a renter or condo dweller in a multi-unit building needs it for live carrier submissions"
    • addedInput schema / $defs / RentersAsk
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "coverage_c": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Personal-property (contents) limit in dollars, e.g. 30000",
      +      "title": "Coverage C"
      +    },
      +    "coverage_d": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Loss-of-use limit in dollars",
      +      "title": "Coverage D"
      +    },
      +    "coverage_e": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Personal liability limit in dollars, e.g. 100000",
      +      "title": "Coverage E"
      +    },
      +    "coverage_f": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Guest medical (medical payments to others) limit in dollars, e.g. 1000",
      +      "title": "Coverage F"
      +    },
      +    "deductible": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "All-perils deductible in dollars, e.g. 500",
      +      "title": "Deductible"
      +    }
      +  },
      +  "title": "RentersAsk",
      +  "type": "object"
      +}
    • changedInput schema / $defs / VehicleInput / properties / body_style / description
      Previous value: -"Trim / body style as the carrier lists it, e.g. \"XLT AWD 4D GAS\""New value: +"Trim / body style, e.g. \"XLT AWD 4D GAS\""
    • removedInput schema / $defs / VehicleInput / properties / bought_new / description
      Removed value: -"Whether the vehicle was new when bought (Allstate asks)"
    • changedInput schema / $defs / VehicleInput / properties / cost / description
      Previous value: -"What the vehicle cost new, whole dollars — some carriers' live quote forms (Kemper) insist on it"New value: +"Cost new, whole dollars"
    • changedInput schema / $defs / VehicleInput / properties / garaging_zip / description
      Previous value: -"ZIP where THIS vehicle is garaged, when it differs from the household's zip_code — auto rating keys on the garaging territory, so a stated garaging ZIP is what gets rated"New value: +"ZIP where this vehicle is kept, when different from zip_code"
    • changedInput schema / $defs / VehicleInput / properties / purchase_date / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^\\d{4}(?:-\\d{2}){0,2}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / purchase_date / description
      Previous value: -"When the vehicle was bought — ISO 8601, \"2021-06\" or \"2021\" welcome"New value: +"When bought: YYYY, YYYY-MM or YYYY-MM-DD"
    • removedInput schema / $defs / VehicleInput / properties / vin / description
      Removed value: -"17-character VIN — live carrier forms prefer it over year/make/model"
    • changedInput schema / $defs / ViolationInput / description
      Previous value: -"One citation, as it will be declared. Dated, because carriers\nprice WHEN it happened — counts and windows are derived, never sent."New value: +"One moving violation."
    • changedInput schema / $defs / ViolationInput / properties / on / description
      Previous value: -"When it happened — ISO 8601, reduced precision welcome: \"2024\", \"2024-06\", or \"2024-06-15\". A year IS a date."New value: +"When it happened: YYYY, YYYY-MM or YYYY-MM-DD"
    • addedInput schema / $defs / ViolationInput / properties / on / pattern
      Added value: +"^\\d{4}(?:-\\d{2}){0,2}$"
    • changedInput schema / properties / lines / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {
      -      "$ref": "#/$defs/CoverageSelectionInput"
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/LinesInput"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / lines / title
      Removed value: -"Lines"
    • addedOutput schema / $defs / SkippedLines
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "lines": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "title": "Lines",
      +      "type": "array"
      +    },
      +    "message": {
      +      "title": "Message",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "lines",
      +    "message"
      +  ],
      +  "title": "SkippedLines",
      +  "type": "object"
      +}
    • changedOutput schema / properties / skipped / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {
      -      "type": "string"
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/SkippedLines"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / skipped / title
      Removed value: -"Skipped"
  6. Changed97 schema fields changed
    • removedInput schema / $defs / AccidentInput / properties / on / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / $defs / AccidentInput / properties / on / default
      Removed value: -null
    • addedInput schema / $defs / AccidentInput / properties / on / type
      Added value: +"string"
    • addedInput schema / $defs / AccidentInput / required
      Added value: +[
      +  "on"
      +]
    • changedInput schema / $defs / CoverageSelectionInput / description
      Previous value: -"The coverage to price, as actual numbers on named axes — the value type\nof every entry in the ``lines`` map, so it publishes each line's axes side\nby side (a line reads only its own; the map key says which apply).\n\nTyped for the same reason as ``QuoteProfile``: with a bare dict the schema\npublished ``additionalProperties: true`` and nothing else, so callers\nguessed key names (\"bodily_injury\") and burned a round trip on the\nselection-required refusal before learning the real ones. The fields are\nall optional HERE because completeness is judged server-side\n(``coverage_ask``, per line): an incomplete selection must reach the\nengines' rich ``coverage_selection_required`` payload — which names the\nmissing axes, a common choice, and (auto) the state's legal minimum — not\ndie as a generic schema validation error. ``extra=\"allow\"`` keeps the\nparser's accepted aliases (``bi_limit``, ``collision_deductible``,\n``uim``…), the rarer home axes (B/C/D ratios, hurricane/water deductibles,\n``endorsements``), and wider overrides working."New value: +"The coverage to price, as actual numbers on named axes — the value of\neach entry in the `lines` map. Each line reads only its own axes; the map\nkey says which apply."
    • changedInput schema / $defs / DriverInput / properties / accidents / description
      Previous value: -"Accidents, each dated. An empty list means none."New value: +"Accidents, one entry each, e.g. [{\"on\": \"2023-06-15\", \"at_fault\": true, \"amount\": 4200}] — every entry needs `on`. An empty list means none."
    • changedInput schema / $defs / DriverInput / properties / drivers_license_number / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / education / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / employment_status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / exclusion_reason / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / first_name / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / gender / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / industry / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / last_name / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / license_state / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / marital_status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / occupation / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / relation / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / DriverInput / properties / violations / description
      Previous value: -"Moving violations, each dated. An empty list means a clean record."New value: +"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."
    • addedInput schema / $defs / HeldPolicyInput
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "A policy the household already holds. A carrier's bundle discount\napplies only to a policy THAT carrier's group writes, so the writer is\nhalf the fact: name it, or no carrier's discount applies.",
      +  "properties": {
      +    "carrier": {
      +      "anyOf": [
      +        {
      +          "maxLength": 200,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "Who writes it, as the household would say it: \"State Farm\", \"Farmers\", \"AAA\". Without it no carrier gives a multi-policy discount",
      +      "title": "Carrier"
      +    },
      +    "in_force": {
      +      "anyOf": [
      +        {
      +          "type": "boolean"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "description": "False for a policy that has lapsed or been cancelled",
      +      "title": "In Force"
      +    },
      +    "line": {
      +      "description": "What the policy insures: \"home\", \"renters\", \"condo\", \"auto\", \"life\", \"umbrella\"…",
      +      "maxLength": 200,
      +      "title": "Line",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "line"
      +  ],
      +  "title": "HeldPolicyInput",
      +  "type": "object"
      +}
    • changedInput schema / $defs / LossInput / properties / kind / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PriorInsuranceInput / properties / carrier / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PriorInsuranceInput / properties / limits / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / construction_type / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / devices / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / foundation / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / garage / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / occupancy / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / protection_class / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / PropertyBlock / properties / roof_type / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / description
      Previous value: -"The household being quoted: a line-neutral core plus per-line blocks\n(#1106). Every fact has a declared posture (`foresee.postures`): a few\nare REQUIRED — the ZIP, the applicant's age (or dob), and, when quoting\nauto, each vehicle's year/make/model — because they have no neutral\nrateable value; YOU supply those, inventing a concrete value from context\nwhen the user was vague and telling them so. Everything else is optional:\nomissions become explicit, priced assumptions (`assumptions` /\n`tighten_by`), never a refusal.\n\nThe core carries facts about the people and where they live; the `auto`\nblock carries `drivers[]` and `vehicles[]`; the `property` block carries\nthe dwelling (home AND renters). A household that will only ever buy\nrenters simply has no `auto` block, and nothing about a car is assumed\nfor it.\n\nTyped (rather than a bare dict) so the connector schema tells the model the\nexact field names: an untyped profile made models guess keys (\"zip\"), the\nvalue was silently ignored, and the engines rated a default location.\n``extra=\"allow\"`` keeps two things working unadvertised: the legacy flat\nspellings (``vehicle_year``, ``spouse_dob``, ``currently_insured``,\n3-year incident counts…), which fold onto the blocks — a flat key\ndisagreeing with a block is a hard error naming both — and richer keys\nflowing through to the engines unchanged."New value: +"The household being quoted: a line-neutral core plus per-line blocks.\nA few facts are REQUIRED — the ZIP, the applicant's age (or dob), and,\nwhen quoting auto, each vehicle's year/make/model — because they have no\nneutral rateable value; YOU supply those, inventing a concrete value from\ncontext when the user was vague and telling them so. Everything else is\noptional: omissions become explicit, priced assumptions (`assumptions` /\n`tighten_by`), never a refusal.\n\nThe core carries facts about the people and where they live; the `auto`\nblock carries `drivers[]` and `vehicles[]`; the `property` block carries\nthe dwelling (home AND renters). A household that will only ever buy\nrenters simply has no `auto` block, and nothing about a car is assumed\nfor it."
    • changedInput schema / $defs / QuoteProfile / properties / city / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / companion_policies / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "$ref": "#/$defs/HeldPolicyInput"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / companion_policies / description
      Previous value: -"Lines the household already HOLDS elsewhere, e.g. [\"home\"] — a held companion policy applies each carrier's multi-policy factor"New value: +"Policies the household already holds, each with who writes it, e.g. [{\"line\": \"home\", \"carrier\": \"State Farm\"}] — only the carrier writing a policy gives a multi-policy discount for it"
    • changedInput schema / $defs / QuoteProfile / properties / credit_range / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / education / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / employment_status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / gender / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / home_ownership_status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / industry / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / marital_status / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / memberships / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "maxLength": 200,
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / military_affiliation / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / military_branch / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / military_rank_paygrade / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / occupation / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / residence_type / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / state / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / street_address / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / QuoteProfile / properties / unit / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / $defs / QuoteProfile / properties / zip_code / maxLength
      Added value: +200
    • changedInput schema / $defs / VehicleInput / properties / anti_theft / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / body_style / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / garaging_zip / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / make / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / model / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / ownership / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / primary_use / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / trim / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / $defs / VehicleInput / properties / vin / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / $defs / ViolationInput / properties / kind / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / $defs / ViolationInput / properties / kind / default
      Removed value: -null
    • changedInput schema / $defs / ViolationInput / properties / kind / description
      Previous value: -"The violation in plain words: \"speeding\", \"DUI\", \"reckless \"\"driving\", \"running a red light\"…"New value: +"The violation in plain words: \"speeding\", \"DUI\", \"reckless driving\", \"running a red light\"…"
    • addedInput schema / $defs / ViolationInput / properties / kind / maxLength
      Added value: +200
    • addedInput schema / $defs / ViolationInput / properties / kind / minLength
      Added value: +1
    • addedInput schema / $defs / ViolationInput / properties / kind / type
      Added value: +"string"
    • removedInput schema / $defs / ViolationInput / properties / on / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / $defs / ViolationInput / properties / on / default
      Removed value: -null
    • addedInput schema / $defs / ViolationInput / properties / on / type
      Added value: +"string"
    • addedInput schema / $defs / ViolationInput / required
      Added value: +[
      +  "on",
      +  "kind"
      +]
    • removedOutput schema / $defs / BundleSummary / description
      Removed value: -"One carrier's bundle arithmetic when a call prices several lines\ntogether. Totals are two REAL ratings of the same profile — the carrier's\nmulti-policy factors applied and cleared — never a percentage: the\nfactors apply per line and per coverage, and each shows in that line's\nown quote cell like any other applied factor. This block only adds the\ncross-line sums those cells cannot carry."
    • removedOutput schema / $defs / BundleSummary / properties / bundle_total / description
      Removed value: -"Monthly total across those lines rated together — the sum of this carrier's headline `monthly` in each line's by_line cell"
    • removedOutput schema / $defs / BundleSummary / properties / lines / description
      Removed value: -"The lines this carrier priced together"
    • removedOutput schema / $defs / BundleSummary / properties / savings / description
      Removed value: -"standalone_total − bundle_total, USD per month"
    • removedOutput schema / $defs / BundleSummary / properties / standalone_total / description
      Removed value: -"Monthly total for the same lines each rated alone"
    • removedOutput schema / $defs / CarrierQuoteSummary / description
      Removed value: -"One carrier's headline in a quote result's structuredContent."
    • removedOutput schema / $defs / CarrierQuoteSummary / properties / carrier_quote_url / description
      Removed value: -"The carrier's own quoting portal — where a purchase completes"
    • removedOutput schema / $defs / CarrierQuoteSummary / properties / monthly / description
      Removed value: -"Point-estimate monthly premium, USD"
    • addedOutput schema / $defs / CarrierQuoteSummary / properties / rated_vs_asked
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": true,
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Rated Vs Asked"
      +}
    • removedOutput schema / $defs / CarrierQuoteSummary / properties / warnings / description
      Removed value: -"Per-carrier honesty notes — off-ladder-ask divergence, unconfirmed eligibility, no direct purchase path — relay them with the price"
    • removedOutput schema / $defs / LineQuoteSummary / description
      Removed value: -"One priced line's headline block inside ``by_line``: the ask, the\nprices, and the declared honesty blocks — what was assumed, what to ask\nthe user to sharpen it, who couldn't price the ask and why, and which\ngiven inputs these rates don't price. Surface all of them."
    • removedOutput schema / $defs / LineQuoteSummary / properties / assumptions / description
      Removed value: -"Omitted facts priced at a declared stand-in value — relay them with the prices; never present an assumed price as a measured one. An entry carrying `path` names the exact profile field to send the user's real answer under; a path-less entry is answered by completing the incident entries already sent"
    • removedOutput schema / $defs / LineQuoteSummary / properties / coverage_selection / description
      Removed value: -"The ask this line was priced at, echoed verbatim"
    • removedOutput schema / $defs / LineQuoteSummary / properties / failures / description
      Removed value: -"Carriers that could not price this exact ask, each with the reason (limit not offered, eligibility…) — they dropped out, they are not cheap or missing"
    • removedOutput schema / $defs / LineQuoteSummary / properties / input_flags / description
      Removed value: -"Given inputs that look wrong (e.g. an odometer reading sent as annual mileage)"
    • removedOutput schema / $defs / LineQuoteSummary / properties / not_rated / description
      Removed value: -"Inputs the caller GAVE that these rates do not price (a second vehicle, rideshare use…) — relay each note verbatim"
    • removedOutput schema / $defs / LineQuoteSummary / properties / tighten_by / description
      Removed value: -"The missing facts that most move the price — offer to re-quote with the user's answers, each sent under its matching assumptions (or input_flags) entry's `path`"
    • removedOutput schema / description
      Removed value: -"structuredContent of the quote tools: headline numbers only, keyed by\nline from the first scan (#1106) so a second line's launch never diffs\nthis schema.\n\nThe content channel carries the full sub-coverage/ladder detail; this stays\nconcise on purpose, and carries no internal identifiers (GHI #1101)."
    • removedOutput schema / properties / bundle / description
      Removed value: -"Per-carrier bundle totals, keyed like by_line's carrier_key, when one carrier priced several of the asked lines together. Absent means no bundle pricing was computed — never present multi-line prices as bundled unless this block says so"
    • removedOutput schema / properties / by_line / description
      Removed value: -"Each priced line's carriers, cheapest first"
    • removedOutput schema / properties / coverage_required / description
      Removed value: -"Lines needing a coverage ask, each naming its own axes"
    • addedOutput schema / properties / dense
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Dense"
      +}
    • removedOutput schema / properties / example_arguments / description
      Removed value: -"On a profile_required refusal: a correctly-wrapped call to imitate — re-call with the user's facts in this shape"
    • removedOutput schema / properties / presentation / description
      Removed value: -"How to present priced results — rides with them"
    • removedOutput schema / properties / profile_required / description
      Removed value: -"Required profile facts still missing (field → what to pass). Nothing is priced while any is open: supply each — if the user didn't state one, pass your best concrete value and present it to them as your assumption"
    • removedOutput schema / properties / skipped / description
      Removed value: -"Lines not priced, with the honest reason — relay it"
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare a safe read (readOnlyHint/destructiveHint=false), and the description adds substantial context beyond that: what comes back under skipped/coverage_required/failures, that carriers never silently vanish, how rated_vs_asked works and that rated prices are not like-for-like, and that assumptions/tighten_by reflect a single declared fill value. This is far more than the annotations carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the content is mostly substantive, but the description is enormous and overladen with repeated explanation (rated_vs_asked, price_ladder, and the dense output format are each unpacked at length). For a complex tool some detail is earned, but several sentences restate the same behavior, hurting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (nested objects, 4 params, output schema present) the description is complete: it explains required profile fields, per-line asks, error/refusal shapes, and refinement semantics, and since an output schema/result format exists it needn't restate return structure further. Nothing needed to invoke correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, the description compensates heavily: it enumerates the required axes per line (auto bi/pd/coll/comp, renters C/E/F/deductible, home A/E/F/aop), names optional axes and their default behavior, and specifies the profile requirements (ZIP, age/dob, vehicle year/make/model). This meaning goes well beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('generate instant, itemized quote estimates from the carriers Foresee supports') and scopes it (lines/states served). It explicitly distinguishes itself from its sibling by positioning instant quotes as the first answer and live_carrier_quotes as the follow-up, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and alternative routing: 'When the user wants firm numbers straight from the carriers, offer live carrier quotes... Instant quotes stay the first answer; live quotes are the follow-up.' It also names the condition that selects the sibling tool, plus guidance on when to omit carriers/include_failures.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.