Agent Skills

Foresee

Foresee enables AI assistants to compare home and auto insurance across every carrier and coverage option, by providing instant, accurate, detailed quote estimates.

Install

npx cmdssi mcp 'https://agents.go-foresee.com/mcp'
README

Docs

For AI agents: the site index is /llms.txt and the full text is /llms-full.txt.

Foresee enables AI assistants to compare home and auto insurance across every carrier and coverage option, by providing instant, accurate, detailed quote estimates.

Using Foresee

Foresee hosts two MCP servers:

Users who want a simple, low-friction quote estimate without giving up their PII use:

https://mcp.go-foresee.com/mcp

Users who also want to confirm quotes estimates directly with carriers can dispatch Foresee's computer use agents via:

https://agents.go-foresee.com/mcp

Neither server requires authentication.

Tools

Foresee publishes two tools on the MCP servers:

ToolPurposeagents.mcp.
quote_insuranceGenerate instant, accurate, detailed quote estimates✅✅
live_carrier_quotesConfirm quote estimates with carriers✅❌

Tool 1: quote_insurance

Purpose: generate instant, itemized quote estimates from the carriers Foresee supports, across the lines and states Foresee currently serves, in one call.

Input Parameters

ParameterTypeRequiredDetails
profileobjectyessee Profile
linesobjectyesKeys are the lines to price (auto, home, renters); values are that line's coverage options (see Coverage options)
carriersstring[]noDefaults to "all carriers"
include_failuresbooleannotrue

Profile

Core Profile

There is a core input profile, plus additional blocks for auto and home/renters insurance. The only required fields are age (or dob), ZIP, and (for auto insurance) vehicle details.

Omitted optional fields become declared assumptions: we choose a conservative stand-in, reported back as assumptions — e.g. auto.vehicles[].annual_mileage = 12000, with a tighten_by entry listing the assumptions which would move the price the most. prior_insurance means insurance for the same line; companion_policies means insurance for a different line

FieldTypeRequired
zip_codestringyes
ageintegeryes
dobstring, YYYY-MM-DDaccepted alternative to age
citystringno
genderstringno
marital_statusstringno
educationstringno
employment_statusstringno
occupationstringno
credit_rangestringno
home_ownership_statusstringno
residence_typestringno
military_affiliationstringno
membershipsstring[]no
effective_datestringno
prior_insuranceobjectno
companion_policiesobject[] — {line, carrier}no

companion_policies lists policies the household already holds, each with the carrier that writes it — {"line": "home", "carrier": "State Farm"}. A carrier's multi-policy discount applies only to a policy it writes, so a held policy with no carrier earns none, and the quote asks for the carrier under tighten_by.

Auto Insurance Profile

FieldTypeRequired
auto.vehicles[].yearintegeryes
auto.vehicles[].makestringyes
auto.vehicles[].modelstringyes
auto.vehicles[].ownershipstringno
auto.vehicles[].annual_mileageintegerno
auto.vehicles[].primary_usestringno
auto.vehicles[].garaging_zipstringno
auto.drivers[].relationstringno (self for the first)
auto.drivers[].dobstringno
auto.drivers[].years_licensedintegerno
auto.drivers[].accidentsobject[]no
auto.drivers[].violationsobject[]no
auto.drivers[].sr22_requiredbooleanno

accidents and violations are lists of dated entries — {"on": "2025-01", "kind": "speeding"}, {"on": "2023-06-15", "at_fault": true} — where an empty list is a clean record. An entry missing on (or a violation missing kind) is refused, naming its path.

Home & Renters Insurance Profile

FieldTypeRequired
property.year_builtintegerno
property.construction_typestringno
property.roof_typestringno
property.square_feetintegerno
property.protection_classstringno
property.replacement_costintegerno
property.devicesstring[]no
property.lossesobject[]no

Coverage options

Each key in lines takes that line's coverage options. Nothing is priced at a server default: the options you pass are the ones priced.

Auto

OptionTypeRequiredWhat it covers
bistringyesBodily injury liability: injuries you cause to other people. Per-person/per-accident limit in $000s, e.g. "100/300"
pdintegeryesProperty damage liability: damage you cause to other people's cars and property. Limit in $000s, e.g. 100
coll_deductibleintegeryesCollision: damage to your own car from a crash, whoever is at fault. The deductible you pay per claim, in dollars
comp_deductibleintegeryesComprehensive: damage to your own car from anything other than a crash — theft, fire, hail, vandalism, hitting an animal. The deductible you pay per claim, in dollars
umstringnoUninsured/underinsured motorist: your injuries when the at-fault driver has no or too little insurance. Per-person/per-accident limit in $000s, e.g. "100/300"
medpayintegernoMedical payments: medical bills for you and your passengers, whoever is at fault. Limit in dollars, e.g. 5000

Home

OptionTypeRequiredWhat it covers
coverage_aintegeryesDwelling: rebuilding the house itself. Limit in dollars, usually the replacement cost
coverage_eintegeryesPersonal liability: injuries or damage you're legally responsible for, on or off the property. Limit in dollars
coverage_fintegeryesMedical payments to others: a guest's medical bills after an injury on your property, whoever is at fault. Limit in dollars
aop_deductibleintegeryesAll-other-perils deductible: what you pay per claim for everything except perils with their own deductible (such as earthquake). In dollars

Coverages B (other structures, such as a detached garage or fence), C (personal property — your belongings), and D (loss of use — living costs while the house can't be lived in) are not asked in dollars — they come back in sel as ratios of Coverage A that were priced.

Renters

OptionTypeRequiredWhat it covers
coverage_cintegeryesPersonal property: your belongings. Limit in dollars
coverage_eintegeryesPersonal liability: injuries or damage you're legally responsible for. Limit in dollars
coverage_fintegeryesMedical payments to others: a guest's medical bills after an injury in your home, whoever is at fault. Limit in dollars
deductibleintegeryesWhat you pay per claim before coverage starts. In dollars
coverage_dintegernoLoss of use: extra living costs if you have to move out while the place is repaired. Limit in dollars

Response format

A priced result arrives entirely in structuredContent; content is empty. The rating detail is the dense field: compact machine text, one section per line, shown in the response blocks below. Beside it sit the headline fields per line under by_line (carriers with monthly, confidence_interval, carrier_quote_url, warnings, rated_vs_asked; plus assumptions, tighten_by, failures), and presentation (how to present the prices), bundle and skipped at the top. Refusals (profile_required, coverage_required) are plain JSON with no dense.

PrefixFrequencyMeaning
Qonce per lineWhat was priced: state, line of business, coverage selection
assumptions:once per lineAssumptions made by Foresee; high_impact: true means that this field materially moves the quote estimate
tighten_by:once per lineThe profile paths of the missing facts that would most move the price
not_priced:when applicableCarriers excluded, with the reason
Conce per carrierCarrier, writing entity, monthly premium (point estimate and confidence interval)
Was neededA note on the carrier above, e.g. no online quote page
Lonce per carrierMonthly cost per coverage, under codes that mean the same coverage at every carrier (BI, PD, UMBI, MEDPAY, COMP, COLL…); A+B is one premium covering both, FEE a flat fee
Dper carrierPrice ladders: for each coverage lever, every offered rung as ±$/mo against the quoted monthly, everything else held at the selection. +0.00 marks the selected rung; (asked X) = X isn't offered and the price sits at the nearest offered rung. Re-price from D; don't re-call

Example: auto

A 41-year-old in ZIP 90066 with a 2021 Honda Civic.

Mercury shows the plain carrier cell; Travelers rates through two possible writing entities, so its cell carries a ci segment (the placement span). USAA lands in not_priced with the carrier's own reason.

{
  "profile": {
    "zip_code": "90066",
    "age": 41,
    "auto": {"vehicles": [{"year": 2021, "make": "Honda", "model": "Civic"}]}
  },
  "lines": {"auto": {"bi": "100/300", "pd": 100, "coll_deductible": 500, "comp_deductible": 500}},
  "carriers": ["mercury", "travelers", "usaa"]
}

Every omitted profile field comes back as a declared assumption — the fat assumptions: block below is caused by the thin request above, and tighten_by: lists the nine answers that would most move the price. Mercury shows the plain carrier cell; Travelers rates through two possible writing entities, so its cell carries a ci segment (the placement span). USAA lands in not_priced with the carrier's own reason.

Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
assumptions: [{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":12000,"field":"auto.vehicles[].annual_mileage","high_impact":true},{"assumed":"Commute","field":"auto.vehicles[].primary_use","high_impact":true},{"assumed":15,"field":"auto.vehicles[].one_way_miles","high_impact":true},{"assumed":5,"field":"auto.vehicles[].commute_days","high_impact":false},{"assumed":16,"field":"auto.drivers[].age_first_licensed","high_impact":true,"note":"CA Good Driver discount (at least 20% off every CA price here, INS §1861.025) is granted on this assumption: it rates the applicant as licensed 3+ years. If they were first licensed less than 3 years ago, these prices are understated — send auto.drivers[].age_first_licensed (or date_first_licensed / years_licensed on the same driver) and re-quote."},{"assumed":[],"field":"auto.drivers[].accidents","high_impact":true},{"assumed":[],"field":"auto.drivers[].violations","high_impact":true},{"assumed":false,"field":"prior_insurance.insured","high_impact":true},{"assumed":null,"field":"home_ownership_status","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: auto.vehicles[].annual_mileage,auto.vehicles[].primary_use,auto.vehicles[].one_way_miles,auto.drivers[].age_first_licensed,auto.drivers[].accidents,auto.drivers[].violations,prior_insurance.insured,occupation,memberships
not_priced: usaa:USAA: military families only — set military_affiliation to quote.
C mercury|Mercury Insurance Company|235.11
L BI:56.33,PD:44.10,UMBI:16.85,MEDPAY:0.97,COMP:17.49,COLL:99.38
D bi 100/300=30/60:-9.70,50/100:-6.72,100/300:+0.00,250/500:+12.31,300/300:+12.68,500/500:+23.13
D pd 100=15:-7.99,25:-6.39,50:-2.88,100:+0.00,250:+2.56,300:+3.83
D coll_deductible 500=100:+19.87,200:+14.91,250:+12.42,500:+0.00,1000:-9.94,2000:-29.81,2500:-39.75
D comp_deductible 500=25:+25.74,50:+17.88,100:+11.00,200:+6.09,250:+2.75,500:+0.00,1000:-2.75,2000:-5.70,2500:-8.06
C travelers|Travelers Commercial Insurance Company|368.50|ci 327.21-415.00
L BI:149.00,PD:70.17,COMP:15.50,COLL:114.33,UMBI:19.50
D bi 100/300=15/30:-61.67,25/50:-39.33,30/60:-32.83,50/100:-13.50,100/300:+0.00,250/500:+12.50,500/500:+16.67,1000/1000:+52.67
D pd 100=5:-21.50,10:-10.50,15:-6.67,25:-2.83,50:-0.67,100:+0.00,250:+0.50,300:+0.83,500:+1.17
D coll_deductible 500=100:+22.17,250:+13.17,500:+0.00,1000:-19.33,1500:-34.50,2500:-56.50,5000:-86.00
D comp_deductible 500=0:+11.17,50:+9.67,100:+8.00,250:+2.17,500:+0.00,1000:-1.67,1500:-3.67,2500:-6.50,5000:-10.50

Example: home

The same 41-year-old as above, insuring a frame house built in 1998 with a replacement cost of $450,000:

{
  "profile": {
    "zip_code": "90066",
    "age": 41,
    "property": {"year_built": 1998, "construction_type": "frame", "replacement_cost": 450000}
  },
  "lines": {"home": {"coverage_a": 450000, "coverage_e": 300000, "coverage_f": 1000, "aop_deductible": 1000}},
  "carriers": ["mercury", "autoclub"]
}

sel echoes B/C/D as the ratios of Coverage A that were priced. Each carrier's L is its base premium (HO_BASE) plus fees. Dwelling facts are in assumptions:/tighten_by: — here roof type, protection class, and a clean loss history.

Q CA home sel={"aop_deductible":1000,"coverage_a":450000,"coverage_b_pct":0.1,"coverage_c_pct":0.5,"coverage_d_pct":0.2,"coverage_e":300000,"coverage_f":1000}
assumptions: [{"assumed":"Asphalt Shingle","field":"property.roof_type","high_impact":false},{"assumed":1,"field":"property.stories","high_impact":false},{"assumed":2,"field":"property.bathrooms","high_impact":false},{"assumed":1,"field":"property.units","high_impact":false},{"assumed":"owner occupied","field":"property.occupancy","high_impact":false},{"assumed":5,"field":"property.protection_class","high_impact":true},{"assumed":"Attached","field":"property.garage","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"property.losses","high_impact":true}]
tighten_by: property.protection_class,property.losses
C mercury|CALIFORNIA AUTOMOBILE INS CO|123.67
L HO_BASE:118.76,FEE:3.75,FEE:1.16,FEE:0.01
D aop_deductible 1000=500:+13.38,1000:+0.00,1500:-5.38,2500:-21.45,3500:-26.58,5000:-37.01,10000:-48.28,25000:-63.01,50000:-72.51
D coverage_a 450000=30000:-90.60,65000:-82.94,95000:-76.38,130000:-68.81,165000:-61.24,195000:-54.76,230000:-47.27,265000:-39.79,295000:-33.39,330000:-25.82,365000:-18.34,395000:-11.94,430000:-4.37,445000:-1.17,450000:+0.00,455000:+1.01,465000:+3.20,500000:+10.86,570000:+26.34,630000:+39.88,700000:+56.03,770000:+72.77,830000:+87.49,900000:+105.41,970000:+124.09,2500000:+523.01,6000000:+1464.79
D coverage_e 300000=100000:-1.34,200000:-0.58,300000:+0.00,500000:+0.68,1000000:+4.04
D coverage_f 1000=1000:+0.00,2000:+0.17,5000:+0.42
C autoclub|Interinsurance Exchange of the Automobile Club|146.10
L HO_BASE:144.50,FEE:1.60
D aop_deductible 1000=500:+20.98,750:+7.59,1000:+0.00,1500:-11.45,2000:-16.93,3000:-21.06,5000:-25.36,10000:-28.73,15000:-51.90,20000:-63.44,25000:-71.53,30000:-77.34,50000:-90.49
D coverage_a 450000=60000:-120.65,90000:-115.51,110000:-110.96,130000:-105.66,150000:-99.59,170000:-92.85,190000:-86.53,220000:-76.17,250000:-64.54,280000:-54.09,320000:-40.02,350000:-29.15,360000:-26.54,400000:-16.00,440000:-3.62,450000:+0.00,460000:+2.45,480000:+9.44,550000:+32.95,650000:+77.19,750000:+98.00,850000:+116.62,950000:+147.71,2000000:+475.47,4000000:+1099.41,10000000:+2982.24

Example: renters

A different household at the same ZIP: a 27-year-old renter:

{
  "profile": {"zip_code": "90066", "dob": "1998-11-11"},
  "lines": {"renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}},
  "carriers": ["farmers", "usaa"]
}
Q CA renters sel={"coverage_c":30000,"coverage_e":100000,"coverage_f":1000,"deductible":500}
assumptions: [{"assumed":2000,"field":"property.year_built","high_impact":false},{"assumed":5,"field":"property.protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"property.losses","high_impact":true}]
tighten_by: property.losses
not_priced: usaa:USAA: military families only — set military_affiliation to quote.
C farmers|Fire Insurance Exchange|29.88
L RENTERS_BASE:29.17,FEE:0.42,FEE:0.30
D deductible 500=100:+5.89,250:+1.85,500:+0.00,1000:-2.61,1500:-4.29,2500:-6.73
D coverage_c 30000=4000:-16.33,10000:-11.95,17000:-7.15,23000:-3.87,29000:-0.59,30000:+0.00,31000:+0.51,37000:+3.79,43000:+7.07,49000:+10.36,55000:+13.64,62000:+17.43,68000:+20.71,74000:+23.99,81000:+27.78,87000:+31.06,93000:+34.35,100000:+38.14,106000:+41.42,112000:+44.70,118000:+47.99,125000:+51.77,131000:+55.06,137000:+58.34,144000:+62.13,150000:+65.41
D coverage_e 100000=100000:+0.00,300000:+3.28,500000:+5.56,1000000:+10.69

Example: auto + renters

The same 27-year-old renter, now with a car. Empty violations and accidents lists mean a clean record, so the driving-record questions leave assumptions: entirely.

{
  "profile": {
    "zip_code": "90066",
    "age": 27,
    "prior_insurance": {"insured": true, "carrier": "GEICO", "since": "2019"},
    "auto": {"drivers": [{"violations": [], "accidents": []}],
             "vehicles": [{"year": 2021, "make": "Honda", "model": "Civic", "annual_mileage": 9000}]},
    "property": {"year_built": 1978, "square_feet": 850}
  },
  "lines": {
    "auto": {"bi": "100/300", "pd": 100, "coll_deductible": 500, "comp_deductible": 500},
    "renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}
  },
  "carriers": ["farmers", "mercury"]
}

Since we now provide record, mileage, and insurance history,the auto assumptions: shrink to eight entries and its tighten_by: to five. The renters section declares its own dwelling stand-ins. Mercury prices auto only; Farmers prices both lines.

Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
assumptions: [{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":"Commute","field":"auto.vehicles[].primary_use","high_impact":true},{"assumed":15,"field":"auto.vehicles[].one_way_miles","high_impact":true},{"assumed":5,"field":"auto.vehicles[].commute_days","high_impact":false},{"assumed":16,"field":"auto.drivers[].age_first_licensed","high_impact":true,"note":"CA Good Driver discount (at least 20% off every CA price here, INS §1861.025) is granted on this assumption: it rates the applicant as licensed 3+ years. If they were first licensed less than 3 years ago, these prices are understated — send auto.drivers[].age_first_licensed (or date_first_licensed / years_licensed on the same driver) and re-quote."},{"assumed":null,"field":"home_ownership_status","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: auto.vehicles[].primary_use,auto.vehicles[].one_way_miles,auto.drivers[].age_first_licensed,occupation,memberships
C mercury|Mercury Insurance Company|289.94
L BI:66.80,PD:52.55,UMBI:17.38,MEDPAY:1.05,COMP:23.50,COLL:128.67
D bi 100/300=30/60:-11.50,50/100:-7.96,100/300:+0.00,250/500:+14.60,300/300:+15.04,500/500:+27.43
D pd 100=15:-9.52,25:-7.61,50:-3.43,100:+0.00,250:+3.05,300:+4.57
D coll_deductible 500=100:+25.74,200:+19.30,250:+16.09,500:+0.00,1000:-12.87,2000:-38.60,2500:-51.47
D comp_deductible 500=25:+34.59,50:+24.03,100:+14.79,200:+8.19,250:+3.70,500:+0.00,1000:-3.70,2000:-7.66,2500:-10.83
C farmers|Farmers Insurance Exchange|398.00
L BI:111.83,PD:73.33,UMBI:28.33,UMPD:1.50,MEDPAY:13.33,COMP:34.00,COLL:133.17,FEE:2.50
D bi 100/300=30/60:-23.83,50/100:-14.67,100/300:+0.00,250/500:+9.83,500/500:+23.83,500/1000:+29.83
D pd 100=15:-8.83,25:-5.00,50:-1.50,100:+0.00,250:+1.33,500:+3.17
D coll_deductible 500=250:+30.67,500:+0.00,750:-13.67,1000:-23.50,1500:-37.50,2500:-56.33,5000:-87.00
D comp_deductible 500=100:+23.67,250:+9.17,500:+0.00,750:-7.17,1000:-10.67,1500:-13.50,2500:-18.83,5000:-21.17
Q CA renters sel={"coverage_c":30000,"coverage_e":100000,"coverage_f":1000,"deductible":500}
assumptions: [{"assumed":5,"field":"property.protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"property.losses","high_impact":true}]
tighten_by: property.losses
not_priced: mercury:no filed-rate renters program served in CA yet
C farmers|Fire Insurance Exchange|29.88
L RENTERS_BASE:29.17,FEE:0.42,FEE:0.30
D deductible 500=100:+5.89,250:+1.85,500:+0.00,1000:-2.61,1500:-4.29,2500:-6.73
D coverage_c 30000=4000:-16.33,10000:-11.95,17000:-7.15,23000:-3.87,29000:-0.59,30000:+0.00,31000:+0.51,37000:+3.79,43000:+7.07,49000:+10.36,55000:+13.64,62000:+17.43,68000:+20.71,74000:+23.99,81000:+27.78,87000:+31.06,93000:+34.35,100000:+38.14,106000:+41.42,112000:+44.70,118000:+47.99,125000:+51.77,131000:+55.06,137000:+58.34,144000:+62.13,150000:+65.41
D coverage_e 100000=100000:+0.00,300000:+3.28,500000:+5.56,1000000:+10.69

Tool 2: live_carrier_quotes

Purpose: confirm quote estimates on the carriers' own quote sites.

This tool is idempotent: the first call commissions the computer use agents; calling again with the same arguments collects progress and results from the first call.

A live dispatch submits the user's real details to the carriers, who may perform a soft credit check. User's consent is gathered before the tool is called.

Foresee only collects quotes; it does not take payment or bind insurance.

Input Parameters

ParameterTypeRequiredDetails
profileobjectyesSame fields as quote_insurance — the rating facts
linesobjectyesOne key per line to walk, each value that line's ask (see below); several keys commission bundled walks
user_authorizationstringyesThe user's in-chat affirmation, verbatim (e.g. yes, go ahead)
identityobjectusuallyThe user's details.
carriersstring[]noRestrict the fan; defaults to every carrier with a validated walk for the lines + state

lines

LineAskWhy
autorequired — the same four axes as quote_insurance (bi, pd, coll_deductible, comp_deductible), as actual numbersThe limits and deductibles the agents ask the carriers' forms for
homenone — {"home": null}The carrier's own form prices its package (dwelling amount from its replacement-cost estimate); the agents report what it chose. A supplied ask is refused loudly, not silently ignored
rentersrequired — coverage_c, coverage_e, coverage_f, deductible, as actual dollarsThe agents type the user's numbers on the form instead of accepting its defaults; Foresee never invents them

Several keys at once commission bundled walks: each carrier that writes all the named lines is driven through its own multi-line quote flow and reports per-line premiums plus its own bundle total; a carrier writing only some of the lines is walked for those alone. Per-line ask rules are unchanged by bundling.

identity

FieldTypeRequiredDetails
first_namestringyesLegal first name
last_namestringyesLegal last name
dobstring, YYYY-MM-DDyes
streetstringyesStreet address (line 1)
unitstringnoApartment/unit (line 2)
citystringyes
zip_codestringnoOnly when it differs from the profile's
emailstringyesCarriers send the quote here
phonestringno

Response

FieldMeaning
statusin_progress / partial / complete — re-call with the same arguments to collect
agentsOne entry per carrier (see below)
noteWhat to do next, e.g. re-call timing, or that a prior run's results were returned
authorization_recordedOn the receipt: the consent record was stored before any carrier saw the risk
skippedCarriers NOT dispatched, each with the reason (no_deterministic_walk, missing_facts with the facts named)
not_dispatchedEngine-priced carriers this dispatch will not walk, with why (held: …, no_walk, not_walked, offline, not_sold) — a recommendation the walk lane cannot confirm never silently vanishes
needsOn a missing_facts refusal: per-carrier facts to collect from the user, with exact schema paths — and, for closed-vocabulary fields, the accepted values
assumptionsUnasserted minor form facts the walks resolved to declared no-claim answers: the profile path (field) and the value submitted (assumed) — relay every one with the results
error / detailEvery refusal is a structured {"error", "detail"} dict

Each agents entry:

FieldWhenMeaning
carrier_key, carrieralwaysRoster key + display name
statusalwaysin_progress / complete / failed
linesalwaysThe lines this walk covers — several on a bundled walk
stage, eta_seconds_remainingin progressWhere the walk is; time left against the carrier's typical flow
quote.premiumquotedVerbatim as the carrier's page printed it ("$857.80") — never parsed, rounded, or derived
quote.term_monthsquotedThe term the printed premium covers
quote.premium_by_linequoted, bundled walkEach line's premium as the page printed it, beside the bundle total in quote.premium
quote.breakdownquotedThe page's own line items, its own labels
quote.boundquoted, newer walksCover read off the priced page — what the form actually bound, vs what was asked
quote.variantsquotedAdditional priced packages the page offered
quote.quote_numberquotedThe carrier's retrieval number, when the page shows one
quote.evidence_recordedquotedScreenshot evidence exists server-side (internal URIs never ride the wire)
declined: true + detaildeclinedThe carrier reviewed the details and refused to quote. An answer, not an error — relay it
detailfailedThe walk's own words for where and why it stopped

Refusals

Every refusal is a structured {"error", "detail"} object — nothing was submitted to any carrier unless the row below says otherwise.

CodeWhenWhat to do
profile_requiredHousehold facts sent at the top level, no profile wrapperRe-call with the facts wrapped as shown in the refusal's example_arguments
authorization_requiredCalled without the user's go-aheadExplain the consent facts, get a yes, pass it verbatim in user_authorization
bad_identityA drivers_license_number shaped like an SSNSSNs are never collected; send the licence number as printed on the licence
bad_profileA profile field fails validationdetail names the field
one_line_per_dispatchAn empty lines mapName at least one line to walk
unknown_lineA line with no walk (e.g. umbrella)detail lists the lines live dispatch knows
coverage_selection_requiredAn auto or renters walk without full limits and deductiblesRe-call with the numbers — the walks type real values, never defaults
bad_askA home walk given a coverage askSend {"home": null} — the carrier's own form prices its package
missing_factsNo requested carrier's form can be filled from the profileAsk the user for the needs[].fields[] facts (using their values where served) and re-call — see below
no_carriersNo carrier has a validated walk for that line + stateFall back to quote_insurance
launch_failedThe agents couldn't startNothing reached any carrier — retrying is safe

Example: auto

A Fresno household confirming GEICO's own number. The profile carries the facts GEICO's form insists on (ownership, purchase timing, prior insurance, age first licensed…); identity is the real applicant; the ask is the same four axes as quote_insurance.

{
  "profile": {
    "zip_code": "93722",
    "dob": "1954-07-02",
    "gender": "Male",
    "marital_status": "Married",
    "education": "Bachelors",
    "employment_status": "Employed",
    "occupation": "Accountant or CPA",
    "home_ownership_status": "Own",
    "prior_insurance": {"insured": true, "limits": "not sure"},
    "auto": {
      "vehicles": [{
        "year": 2024, "make": "Ford", "model": "Maverick",
        "ownership": "Financed", "annual_mileage": 11000,
        "primary_use": "pleasure", "purchase_date": "2026-08"
      }],
      "drivers": [{
        "relation": "self", "age_first_licensed": 16,
        "years_licensed_outside_us": 0, "defensive_driving_course": true,
        "accidents": [], "violations": []
      }]
    }
  },
  "identity": {
    "first_name": "Cornelius", "last_name": "Beaumont", "dob": "1954-07-02",
    "street": "4381 W Spruce Ave", "city": "Fresno", "zip_code": "93722",
    "email": "cornelius.beaumont@example.com", "phone": "559-555-0164"
  },
  "lines": {"auto": {"bi": "100/300", "pd": 100, "coll_deductible": 500, "comp_deductible": 500}},
  "carriers": ["geico"],
  "user_authorization": "yes, go ahead and get me GEICO's real quote"
}
{
  "status": "in_progress",
  "authorization_recorded": true,
  "agents": [
    {
      "carrier_key": "geico",
      "carrier": "GEICO",
      "method": "browser_agent",
      "detail": "deterministic Foresee agent completing the carrier's own quote flow with the user's details",
      "eta_seconds": 480
    }
  ],
  "skipped": [],
  "note": "1 carrier(s) are being quoted live. Collect results by calling this tool again with the same arguments after a few minutes."
}

Re-calling with the same arguments later collects the finished walk. The premium is the page's own string; breakdown is the page's own labels (GEICO printed two packages side by side); term_months says what the number covers — $857.80 per 6 months, not per month.

{
  "status": "complete",
  "agents": [
    {
      "carrier_key": "geico",
      "carrier": "GEICO",
      "method": "browser_agent",
      "status": "complete",
      "quote": {
        "premium": "$857.80",
        "currency": "USD",
        "term_months": 6,
        "quote_number": null,
        "breakdown": {
          "Less Coverage": "$857.80",
          "More Coverage": "$870.70"
        },
        "evidence_recorded": true
      }
    }
  ]
}

Search skills and MCP servers

Search across 31,816 skills and MCPs