Skip to main content
Glama

Instant insurance quotes

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. PRIMARY tool.

`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 that isn't live yet comes
back under `skipped` with honest copy saying where Foresee IS live,
written to be relayed to the user as-is. 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 work as the ask; the response carries the state's legal minimum,
and 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
exactly the selection given; a carrier with no such option 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.

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. An entry that carries `path` names the exact profile
field to send the user's real answer under — never guess a key from the
fact's name. A path-less entry (`incident_details`) is answered by
completing the incident entries already sent (dates, fault, BI split), not
under a fresh key. A `tighten_by` fact answers at its matching
`assumptions` entry's path — or, for a flagged given value, its
`input_flags` entry's path.

Each carrier's `quote` carries every sub-coverage line (BI/PD/collision/
comprehensive/UM…) with its rating steps, 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`.

RESULT FORMAT: a compact machine text, not JSON. Its first line is Q sel=<the coverage_selection priced, as JSON>; then a legend and a factor dictionary (f0= …). Row types — C: carrier|entity|monthly|ci lo-hi. L: monthly $ per coverage line (already monthly, every carrier). F ()=v,v,…: one rating factor, one value per coverage in the L order; blank = not applied, one value = all coverages; suffix ? = estimated, ~ = derived, none = exact. D =option:±$: the change in the carrier's monthly for each option of that lever, everything else held at the selection — 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

TableJSON Schema
NameRequiredDescriptionDefault
linesNo
profileYes
carriersNo
include_partialNo
include_failuresNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNo
stateNo
bundleNoPer-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
detailNo
by_lineNoEach priced line's carriers, cheapest first
messageNo
skippedNoLines not priced, with the honest reason — relay it
serviceableNo
presentationNoHow to present priced results — rides with them
profile_requiredNoRequired 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
coverage_requiredNoLines needing a coverage ask, each naming its own axes
example_argumentsNoOn a profile_required refusal: a correctly-wrapped call to imitate — re-call with the user's facts in this shape

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint/destructiveHint annotations, the description discloses a great deal: the result is 'a compact machine text, not JSON', errors surface via coverage_required/profile_required/failures, carriers never silently vanish, omitted fields become declared assumptions in assumptions/tighten_by, and price_ladder numbers are exact re-rates rather than derivable estimates. None of this contradicts the annotations.

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

Conciseness4/5

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

The description is long but organized with clear sections (purpose, `lines`, profile, result format, live-carrier follow-up, LIVE TODAY) and front-loads the primary purpose. Some density and repetition around path/tighten_by/price_ladder mechanics could be tightened, but most sentences earn their place given the unusual non-JSON result format.

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

Completeness4/5

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

For a complex tool it is remarkably complete: scope, error surfaces, assumptions semantics, result format, and the sibling relationship are all covered. The gaps are that `carriers`/`include_partial`/`include_failures` are undocumented, and the description calls `lines` REQUIRED while the schema lists only `profile` as required — an inconsistency an agent could trip on.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate — and it does extensively for the two central parameters: `lines` (per-line axes, required vs optional fields, defaults, refusal behavior) and `profile` (required ZIP/age/vehicle facts, exact field names, error handling). However, it never describes the `carriers`, `include_partial`, or `include_failures` parameters, leaving those semantically undefined.

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?

The opening sentence states a specific verb and resource: 'generate instant, itemized quote estimates from the carriers Foresee supports, across the lines and states Foresee currently serves, in one call.' It also labels itself 'PRIMARY tool' and explicitly distinguishes itself from live_carrier_quotes, so an agent can separate it from its sibling without inspecting schemas.

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?

The description is explicit about when to use this tool ('Instant quotes stay the first answer') and when to switch to the sibling ('When the user wants firm numbers straight from the carriers, offer live carrier quotes'). It also names the sibling directly and notes that live quotes do not require sign-in, giving clear routing guidance.

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.