Foresee

officiel

Foresee permet aux assistants IA de comparer les assurances habitation et automobile auprès de tous les assureurs et options de couverture, en fournissant des estimations de devis instantanées, précises et détaillées.

Que pouvez-vous faire avec Foresee MCP ?

  • Compare auto insurance quotes — Demandez des estimations instantanées et détaillées auprès de plusieurs assureurs à l’aide de quote_insurance avec les détails de votre véhicule et de votre couverture.
  • Price home or renters coverage — Obtenez des devis détaillés pour une habitation ou une location en précisant les caractéristiques du bien et les limites de couverture comme coverage_a ou coverage_c.
  • Explore coverage trade-offs — Voyez comment la modification des franchises ou des limites affecte les primes mensuelles grâce aux échelles de prix dans la réponse.
  • Identify missing factors — Demandez quels détails omis (comme annual_mileage ou le dossier de conduite) feraient le plus varier votre devis, en vous basant sur les suggestions de tighten_by.
  • Confirm estimates with carriers — Utilisez live_carrier_quotes sur le serveur des agents pour vérifier les estimations de devis directement auprès des compagnies d’assurance.

Serveur MCP hébergé

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

S’installe dans Claude Code, Codex, Cursor et plus

Documentation

Documentation

Foresee permet aux assistants IA de comparer les assurances habitation et automobile auprès de tous les assureurs et pour toutes les options de couverture, en fournissant des estimations de devis instantanées, précises et détaillées.

Utilisation de Foresee

Foresee héberge deux serveurs MCP :

Les utilisateurs qui souhaitent une estimation de devis simple et sans friction sans divulguer leurs informations personnelles identifiables (PII) utilisent :

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

Les utilisateurs qui souhaitent également confirmer les estimations de devis directement auprès des assureurs peuvent déployer les agents d'utilisation informatique de Foresee via :

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

Aucun des deux serveurs ne nécessite d'authentification.

Outils

Foresee publie deux outils sur les serveurs MCP :

OutilObjectifagents.mcp.
quote_insuranceGénérer des estimations de devis instantanées, précises et détaillées✅✅
live_carrier_quotesConfirmer les estimations de devis auprès des assureurs✅❌

Outil 1 : quote_insurance

Objectif : générer des estimations de devis instantanées et détaillées auprès des assureurs pris en charge par Foresee, pour les lignes et les États actuellement desservis, en un seul appel.

Paramètres d'entrée

ParamètreTypeRequisDétails
profileobjetouivoir Profil
linesobjetouiLes clés sont les lignes à tarifer (auto, home, renters) ; les valeurs sont les options de couverture de cette ligne (voir Options de couverture)
carrierschaîne[]nonPar défaut : « tous les assureurs »
include_partialbooléennonfalse
include_failuresbooléennontrue

Profil

Profil de base

Il existe une entrée de base profile, plus des blocs supplémentaires pour l'assurance automobile et l'assurance habitation/locataire. Les seuls champs requis sont l'âge (ou dob), le code postal, et (pour l'assurance automobile) les détails du véhicule.

Les champs facultatifs omis deviennent des hypothèses déclarées : nous choisissons une valeur de substitution prudente, signalée comme assumptions — par exemple annual_mileage = 12000, avec une entrée tighten_by listant les hypothèses qui feraient le plus varier le prix. prior_insurance signifie une assurance pour la même ligne ; companion_policies signifie une assurance pour une ligne différente.

ChampTypeRequis
zip_codechaîneoui
ageentieroui
dobchaîne, YYYY-MM-DDalternative acceptée à age
citychaînenon
genderchaînenon
marital_statuschaînenon
educationchaînenon
employment_statuschaînenon
occupationchaînenon
credit_rangechaînenon
home_ownership_statuschaînenon
residence_typechaînenon
military_affiliationchaînenon
membershipschaîne[]non
effective_datechaînenon
prior_insuranceobjetnon
companion_policieschaîne[]non

Profil d'assurance automobile

ChampTypeRequis
auto.vehicles[].yearentieroui
auto.vehicles[].makechaîneoui
auto.vehicles[].modelchaîneoui
auto.vehicles[].ownershipchaînenon
auto.vehicles[].annual_mileageentiernon
auto.vehicles[].primary_usechaînenon
auto.vehicles[].garaging_zipchaînenon
auto.drivers[].relationchaînenon (self pour le premier)
auto.drivers[].dobchaînenon
auto.drivers[].years_licensedentiernon
auto.drivers[].accidentsobjet[]non
auto.drivers[].violationsobjet[]non
auto.drivers[].sr22_requiredbooléennon

accidents et violations sont des listes d'objets structurés, où une liste vide correspond à un dossier vierge.

Profil d'assurance habitation et locataire

ChampTypeRequis
property.year_builtentiernon
property.construction_typechaînenon
property.roof_typechaînenon
property.square_feetentiernon
property.protection_classchaînenon
property.replacement_costentiernon
property.deviceschaîne[]non
property.lossesobjet[]non

Options de couverture

Chaque clé dans lines prend les options de couverture de cette ligne. Rien n'est tarifé selon une valeur par défaut du serveur : les options que vous transmettez sont celles qui sont tarifées.

Automobile

OptionTypeRequisCe qu'elle couvre
bichaîneouiResponsabilité civile pour dommages corporels : blessures que vous causez à autrui. Limite par personne/par accident en milliers de dollars, ex. "100/300"
pdentierouiResponsabilité civile pour dommages matériels : dommages que vous causez aux véhicules et biens d'autrui. Limite en milliers de dollars, ex. 100
coll_deductibleentierouiCollision : dommages à votre propre véhicule lors d'un accident, quelle que soit la personne responsable. La franchise que vous payez par sinistre, en dollars
comp_deductibleentierouiTous risques (hors collision) : dommages à votre propre véhicule autres que ceux d'un accident — vol, incendie, grêle, vandalisme, collision avec un animal. La franchise que vous payez par sinistre, en dollars
umchaînenonConducteur non assuré/sous-assuré : vos blessures lorsque le conducteur responsable n'a pas ou trop peu d'assurance. Limite par personne/par accident en milliers de dollars, ex. "100/300"
medpayentiernonFrais médicaux : factures médicales pour vous et vos passagers, quelle que soit la personne responsable. Limite en dollars, ex. 5000

Habitation

OptionTypeRequisCe qu'elle couvre
coverage_aentierouiBâtiment : reconstruction de la maison elle-même. Limite en dollars, généralement le coût de remplacement
coverage_eentierouiResponsabilité civile personnelle : blessures ou dommages dont vous êtes légalement responsable, sur ou hors de la propriété. Limite en dollars
coverage_fentierouiFrais médicaux pour autrui : factures médicales d'un invité après une blessure sur votre propriété, quelle que soit la personne responsable. Limite en dollars
aop_deductibleentierouiFranchise pour tous autres périls : ce que vous payez par sinistre pour tout sauf les périls ayant leur propre franchise (comme les tremblements de terre). En dollars

Les couvertures B (autres structures, comme un garage détaché ou une clôture), C (biens personnels — vos effets personnels) et D (perte d'usage — frais de subsistance pendant que la maison est inhabitable) ne sont pas demandées en dollars — elles reviennent dans sel sous forme de ratios de la couverture A qui ont été tarifés.

Locataire

OptionTypeRequisCe qu'elle couvre
coverage_centierouiBiens personnels : vos effets personnels. Limite en dollars
coverage_eentierouiResponsabilité civile personnelle : blessures ou dommages dont vous êtes légalement responsable. Limite en dollars
coverage_fentierouiFrais médicaux pour autrui : factures médicales d'un invité après une blessure dans votre logement, quelle que soit la personne responsable. Limite en dollars
deductibleentierouiCe que vous payez par sinistre avant le début de la couverture. En dollars
coverage_dentiernonPerte d'usage : frais de subsistance supplémentaires si vous devez déménager pendant les réparations. Limite en dollars

Format de réponse

PréfixeFréquenceSignification
Qune fois par ligneCe qui a été tarifé : État, ligne d'activité, sélection de couverture
format: factors:une fois par ligneLégende auto-descriptive pour tout ce qui suit
assumptions:une fois par ligneHypothèses faites par Foresee ; high_impact: true signifie que ce champ fait varier matériellement l'estimation du devis
tighten_by:une fois par ligneLes hypothèses/faits manquants qui feraient le plus varier le prix
not_priced:lorsque applicableAssureurs exclus, avec la raison
Cune fois par assureurAssureur, entité émettrice, prime mensuelle (estimation ponctuelle et intervalle de confiance)
Wselon les besoinsAvertissement attaché à l'assureur ci-dessus — ex. « Ne souscrit pas la responsabilité civile minimale de l'État (BI/PD) »
Lune fois par assureurCoût mensuel par couverture ou péril
Fplusieurs par assureurUn facteur de tarification par ligne, nommé dans la légende factors:. Les valeurs correspondent une à une aux codes L : vide = ne touche pas cette couverture, une valeur unique = s'applique à toutes les couvertures. La parenthèse indique la ligne sur laquelle le profil a atterri (un échelon comme 100/300, un fait comme 90066, ou applied / not applied). Suffixe de valeur : aucun = exact, ~ = dérivé, ? = estimé
Dpar assureurÉchelles de prix : pour chaque levier de couverture, chaque échelon proposé en ±$/mois par rapport au mensuel cité, tout le reste maintenu à la sélection. +0.00 marque l'échelon sélectionné ; (asked X) = X n'est pas proposé et le prix se situe à l'échelon proposé le plus proche. Re-tarifer à partir de D ; ne pas rappeler

Exemple : automobile

Une personne de 41 ans dans le code postal 90066 avec une Honda Civic de 2021.

Mercury affiche la cellule d'assureur simple ; Travelers tarifie via deux entités émettrice possibles, donc sa cellule comporte un segment ci (la plage de placement). USAA se trouve dans not_priced avec la raison propre à l'assureur.

{
  "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"]
}

Chaque champ de profil omis revient comme une hypothèse déclarée — le gros bloc assumptions: ci-dessous est causé par la demande mince ci-dessus, et tighten_by: liste les sept réponses qui feraient le plus varier le prix. Mercury affiche la cellule d'assureur simple ; Travelers tarifie via deux entités émettrice possibles, donc sa cellule comporte un segment ci (la plage de placement). USAA se trouve dans not_priced avec la raison propre à l'assureur.

Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=BI Limit f1=Good Driver f2=Group Placement (Rule G) f3=PD Limit f4=UMBI Limit f5=Medical Payments Limit f6=Comprehensive Deductible f7=Collision Deductible f8=Vehicle Symbol f9=ca_good_driver_pri f10=group f11=UM Limit
assumptions: [{"assumed":"Male","field":"gender","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":12000,"field":"annual_mileage","high_impact":true},{"assumed":0,"field":"accidents_3yr","high_impact":true},{"assumed":0,"field":"violations_3yr","high_impact":true},{"assumed":false,"field":"dui","high_impact":true},{"assumed":false,"field":"currently_insured","high_impact":true},{"assumed":null,"field":"homeowner","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: annual_mileage,accidents_3yr,violations_3yr,dui,currently_insured,occupation,memberships
not_priced: usaa:USAA sells only to military members, veterans, and their fam
C mercury|Mercury Insurance Company|235.11
L BI:56.33,PD:44.10,UMBI:16.85,MP:0.97,COMP:17.49,COLL:99.38
F f0(100/300)=1.51,,,,,
F f1(applied)=0.8
F f2(not applied)=1.0
F f3(100)=,1.38,,,,
F f4(30/60)=,,1.65,,,
F f5(1000)=,,,1.0,,
F f6(500)=,,,,0.89,
F f7(500)=,,,,,1.0
D bi 100/300=15/30 *available through December 31, 2024:-19.03,25/50 *available through December 31, 2024:-14.18,30/60 *available on or after January 1, 2025:-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=5:-15.34,10:-12.14,15:-9.27,25:-7.99,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,CP:15.50,CL:114.33,UMBI:19.50
F f0(100000/300000)=1.649,,,,
F f8(symbol AA)=1.009?,1.003?,,,
F f9(applied)=0.8
F f10(not applied)=1.0
F f3(100000)=,1.443,,,
F f6(500)=,,0.627,,
F f8(symbol 12)=,,0.941?,,
F f7(500)=,,,0.801,
F f8(symbol 17)=,,,1.013?,
F f11(30000/60000)=,,,,1.5
F f8(symbol 1)=,,,,1.0?
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
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.

Les codes L automobile sont les couvertures que l'assureur tarifie (BIPD combiné, ou réparti BI/PD, plus collision, tous risques, conducteur non assuré, frais). Ils ne sont pas normalisés entre les assureurs du panel.


Exemple : habitation

La même personne de 41 ans que ci-dessus, assurant une maison à ossature construite en 1998 avec un coût de remplacement de 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 renvoie B/C/D comme ratios de la couverture A qui ont été tarifés. Le L de Mercury est une décomposition par péril (incendie, eau, feu de forêt, frais) ; AAA dépose une prime groupée à la place. Les faits relatifs au bâtiment figurent dans assumptions:/tighten_by: — ici le type de toiture, la classe de protection et un historique de sinistres vierge.

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}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=Deductible f1=Coverage A f2=Multiple Policy Discount (Automobile) f3=Personal Property Replacement Cost f4=Additional Replacement Cost f5=Ordinance or Law f6=Reduced Coverage Endorsement f7=Coverage E f8=Coverage F f9=Enhanced Home Package f10=Water Backup Limit f11=Other Perils Deductible (Table 5 relativity, additive) f12=Water Deductible (Table 5 relativity, additive) f13=Coverage A / Amount of Insurance Relativity (Table 5) f14=Package Discount (Exchange auto policy)
assumptions: [{"assumed":"Asphalt Shingle","field":"roof_type","high_impact":false},{"assumed":1,"field":"stories","high_impact":false},{"assumed":2,"field":"bathrooms","high_impact":false},{"assumed":1,"field":"families","high_impact":false},{"assumed":"Primary","field":"residency_type","high_impact":false},{"assumed":5,"field":"protection_class","high_impact":true},{"assumed":"Attached","field":"garage_type","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: protection_class,home_losses
C mercury|CALIFORNIA AUTOMOBILE INS CO|123.67
L P1_FIRE:34.69,P2_LIABILITY:6.39,P3_THEFT:6.40,P4_WIND:2.68,P5_WATER:61.56,P6_OTHER:3.57,P7_CAT_WIND:0.97,P10_CAT_WATER:0.04,P12_WILDFIRE:0.43,P13_FFEQ:1.36,WC_RESIDENCE_EMPLOYEES_910:0.67,FEE:3.75,FEE:1.16,FEE:0.01
F f0(1000)=0.95,,0.887,0.963,1.0,0.909,0.963,1.0,0.95,0.95,,,,
F f1(450000)=1.895,1.206,1.142,0.901,2.519,1.176,0.901,2.519,1.518,2.313,,,,
F f2(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f3(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f4(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f5(0.1)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f6(No)=1.0,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f7(300000)=,1.5,,,,1.0,,,,,,,,
F f8(1000)=,1.5,,,,,,,,,,,,
F f9(No)=,,1.0,1.0,1.0,1.0,1.0,1.0,,,,,,
F f10(No)=,,,,1.0,,,1.0,,,,,,
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 Package:139.00,MedPayIL:0.00,LiabilityIL:2.08,BrushFire:0.00,FireFollowingEQ:3.42,FEE:1.60
F f11(1000)=0.393,,,,,
F f12(1000)=1.092,,,,,
F f13(450000)=1.485,,,,,
F f14(No)=1.0,,,,,
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
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.

Exemple : locataire

Un autre ménage au même code postal : un locataire de 27 ans :

{
  "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}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=Coverage C - Personal Property f1=Deductible f2=Coverage D - Loss of Use (% of C) f3=Additional Living Expense Term (months) f4=Contents Loss Settlement (ACV) f5=Enhanced Personal Property Coverage f6=Claims Free Discount f7=Multi-Policy Discount - Renter/auto f8=Multi-Policy Discount - Renter/life f9=Multi-Policy Discount - Renter/umbrella f10=Multi-Policy Discount - Renter/business f11=Multi-Policy Discount - Renter/boat f12=Multi-Policy Discount - Renter/motorhome f13=Multi-Policy Discount - Renter/recreational_vehicle f14=Multi-Policy Discount - Renter/cea f15=ZIP Code f16=Fireline Score f17=Experience Rating (points) f18=Coverage E - Personal Liability f19=Premises Rented to Others Solely Used as a Private Residence
assumptions: [{"assumed":2000,"field":"year_built","high_impact":false},{"assumed":5,"field":"protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: home_losses
not_priced: usaa:USAA sells only to military members, veterans, and their fam
C farmers|Fire Insurance Exchange|29.88
L PC1_PROPERTY:21.00,PC2_LIABILITY:8.17,FEE:0.42,FEE:0.30
F f0(30000)=1.087,,,
F f1(500)=1.0,,,
F f2(20)=1.0,,,
F f3(12)=1.0,,,
F f4(N)=1.0,,,
F f5(N)=1.0,,,
F f6(Y)=0.9,,,
F f7(N)=1.0,1.0,,
F f8(N)=1.0,1.0,,
F f9(N)=1.0,1.0,,
F f10(N)=1.0,1.0,,
F f11(N)=1.0,1.0,,
F f12(N)=1.0,1.0,,
F f13(N)=1.0,1.0,,
F f14(N)=1.0,1.0,,
F f15(90066)=1.423,,,
F f16(0)=1.0,,,
F f17(0)=1.0,,,
F f18(100000)=,1.0,,
F f19({})=,1.0,,
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
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.

Exemple : forfait automobile + locataire

Le même locataire de 27 ans, désormais avec une voiture. "incidents": [] signifie un dossier vierge, donc les questions sur l'historique de conduite laissent assumptions: entièrement vide.

{
  "profile": {
    "zip_code": "90066",
    "age": 27,
    "incidents": [],
    "prior_insurance": {"insured": true, "carrier": "GEICO", "since": "2019"},
    "auto": {"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"]
}

Puisque nous fournissons désormais l'historique, le kilométrage et l'historique d'assurance, les assumptions: automobile se réduisent à cinq entrées et son tighten_by: à deux. Cependant, la section locataire déclare ses propres valeurs de substitution pour le logement ; Mercury tarifie uniquement l'automobile — autonome, sans forfait. Farmers tarifie les deux, offrant une remise de 20 %, documentée dans le B. Le même résumé accompagne structuredContent sous forme de bundle: {farmers: {lines, bundle_total, standalone_total, savings}}.

Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead ; B carrier|bundled $/mo|standalone $/mo|saves $/mo = this carrier priced the asked lines together; the per-line C prices ARE the bundled prices
factors: f0=BI Limit f1=Good Driver f2=Group Placement (Rule G) f3=PD Limit f4=UMBI Limit f5=Medical Payments Limit f6=Comprehensive Deductible f7=Collision Deductible f8=Business & Professional Group f9=UM Limit
assumptions: [{"assumed":"Male","field":"gender","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":null,"field":"homeowner","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: occupation,memberships
C mercury|Mercury Insurance Company|289.94
L BI:66.80,PD:52.55,UMBI:17.38,MP:1.05,COMP:23.50,COLL:128.67
F f0(100/300)=1.51,,,,,
F f1(applied)=0.8
F f2(not applied)=1.0
F f3(100)=,1.38,,,,
F f4(30/60)=,,1.65,,,
F f5(1000)=,,,1.0,,
F f6(500)=,,,,0.89,
F f7(500)=,,,,,1.0
D bi 100/300=15/30 *available through December 31, 2024:-22.56,25/50 *available through December 31, 2024:-16.81,30/60 *available on or after January 1, 2025:-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=5:-18.28,10:-14.47,15:-11.04,25:-9.52,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,MED:13.33,COMP:34.00,COLL:133.17,FEE:2.50
F f0(100000/300000)=1.46,,,,,,,
F f1(applied)=0.8,0.8,0.8,0.8,0.8,0.8,0.8,
F f8(not applied)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,
F f3(100000)=,1.2674,,,,,,
F f9(30000/60000)=,,1.2788,,,,,
F f6(500)=,,,,,1.0009,,
F f7(500)=,,,,,,1.1986,
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}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead ; B carrier|bundled $/mo|standalone $/mo|saves $/mo = this carrier priced the asked lines together; the per-line C prices ARE the bundled prices
factors: f0=Coverage C - Personal Property f1=Deductible f2=Coverage D - Loss of Use (% of C) f3=Additional Living Expense Term (months) f4=Contents Loss Settlement (ACV) f5=Enhanced Personal Property Coverage f6=Claims Free Discount f7=Multi-Policy Discount - Renter/auto f8=Multi-Policy Discount - Renter/life f9=Multi-Policy Discount - Renter/umbrella f10=Multi-Policy Discount - Renter/business f11=Multi-Policy Discount - Renter/boat f12=Multi-Policy Discount - Renter/motorhome f13=Multi-Policy Discount - Renter/recreational_vehicle f14=Multi-Policy Discount - Renter/cea f15=ZIP Code f16=Fireline Score f17=Experience Rating (points) f18=Coverage E - Personal Liability f19=Premises Rented to Others Solely Used as a Private Residence
assumptions: [{"assumed":5,"field":"protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: home_losses
C farmers|Fire Insurance Exchange|24.06
L PC1_PROPERTY:16.80,PC2_LIABILITY:6.54,FEE:0.42,FEE:0.30
F f0(30000)=1.087,,,
F f1(500)=1.0,,,
F f2(20)=1.0,,,
F f3(12)=1.0,,,
F f4(N)=1.0,,,
F f5(N)=1.0,,,
F f6(Y)=0.9,,,
F f7(Y - Farmers)=0.8,0.8,,
F f8(N)=1.0,1.0,,
F f9(N)=1.0,1.0,,
F f10(N)=1.0,1.0,,
F f11(N)=1.0,1.0,,
F f12(N)=1.0,1.0,,
F f13(N)=1.0,1.0,,
F f14(N)=1.0,1.0,,
F f15(90066)=1.423,,,
F f16(0)=1.0,,,
F f17(0)=1.0,,,
F f18(100000)=,1.0,,
F f19({})=,1.0,,
D deductible 500=100:+4.71,250:+1.48,500:+0.00,1000:-2.09,1500:-3.43,2500:-5.38
D coverage_c 30000=4000:-13.06,10000:-9.56,17000:-5.72,23000:-3.10,29000:-0.47,30000:+0.00,31000:+0.41,37000:+3.03,43000:+5.66,49000:+8.29,55000:+10.91,62000:+13.94,68000:+16.57,74000:+19.19,81000:+22.22,87000:+24.85,93000:+27.48,100000:+30.51,106000:+33.14,112000:+35.76,118000:+38.39,125000:+41.42,131000:+44.05,137000:+46.67,144000:+49.70,150000:+52.33
D coverage_e 100000=100000:+0.00,300000:+2.62,500000:+4.45,1000000:+8.55
B farmers|422.06|427.88|5.82
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. A B row's per-line prices assume every bundled line is placed with that carrier; for a cross-carrier mix, compare standalone totals. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.

Outil 2 : live_carrier_quotes

Objectif : confirmer les estimations de devis sur les sites de devis des assureurs eux-mêmes.

Cet outil est idempotent : le premier appel commissionne les agents d'utilisation informatique ; rappeler avec les mêmes arguments collecte la progression et les résultats du premier appel.

Un envoi en direct soumet les véritables informations de l'utilisateur aux assureurs, qui peuvent effectuer une vérification de crédit douce. Le consentement de l'utilisateur est recueilli avant l'appel de l'outil.

Foresee ne collecte que des devis ; il ne prend pas de paiement et ne lie pas d'assurance.

Paramètres d'entrée

ParamètreTypeRequisDétails
profileobjetouiMêmes champs que quote_insurance — les faits de tarification
linesobjetouiUne clé par ligne à parcourir, chaque valeur étant la demande de cette ligne (voir ci-dessous) ; plusieurs clés commissionnent des parcours groupés
user_authorizationchaîneouiL'affirmation de l'utilisateur dans la conversation, textuellement (ex. yes, go ahead)
identityobjetgénéralementLes informations de l'utilisateur.
carrierschaîne[]nonRestreindre l'éventail ; par défaut, chaque assureur avec un parcours validé pour les lignes + l'État

lines

LigneDemandePourquoi
autorequis — les mêmes quatre axes que quote_insurance (bi, pd, coll_deductible, comp_deductible), sous forme de nombres réelsLes limites et franchises que les agents saisissent dans les formulaires des assureurs
homeaucun — {"home": null}Le formulaire de l'assureur fixe lui-même le prix de son package (montant de l'habitation issu de son estimation du coût de remplacement) ; les agents rapportent ce qu'il a choisi. Une demande fournie est refusée explicitement, pas ignorée silencieusement
rentersrequis — coverage_c, coverage_e, coverage_f, deductible, sous forme de dollars réelsLes agents saisissent les chiffres de l'utilisateur sur le formulaire au lieu d'accepter les valeurs par défaut ; Foresee ne les invente jamais

Plusieurs clés déclenchent d'un coup des parcours groupés : chaque assureur qui couvre toutes les lignes nommées est piloté à travers son propre flux de devis multi-lignes et rapporte les primes par ligne plus son propre total groupé ; un assureur ne couvrant que certaines lignes est parcouru pour celles-ci uniquement. Les règles de demande par ligne sont inchangées par le groupement.

identity

ChampTypeRequisDétails
first_namestringouiPrénom légal
last_namestringouiNom légal
dobstring, YYYY-MM-DDoui
streetstringouiAdresse (ligne 1)
unitstringnonAppartement/unité (ligne 2)
citystringoui
zip_codestringnonUniquement si elle diffère de celle du profil
emailstringouiLes assureurs envoient le devis ici
phonestringnon

Réponse

ChampSignification
statusin_progress / partial / complete — rappeler avec les mêmes arguments pour collecter
agentsUne entrée par assureur (voir ci-dessous)
noteQue faire ensuite, par ex. le moment du rappel, ou que les résultats d'une exécution précédente ont été renvoyés
authorization_recordedSur le reçu : l'enregistrement du consentement a été stocké avant que tout assureur ne voie le risque
skippedAssureurs NON envoyés, chacun avec la raison (no_deterministic_walk, missing_facts avec les faits nommés)
not_dispatchedAssureurs tarifés par moteur que cet envoi ne parcourra pas, avec la raison (held: …, no_walk, not_walked, offline, not_sold) — une recommandation que le parcours ne peut pas confirmer ne disparaît jamais silencieusement
needsEn cas de refus missing_facts : faits par assureur à collecter auprès de l'utilisateur, avec chemins de schéma exacts — et, pour les champs à vocabulaire fermé, les values acceptés
assumptionsFaits mineurs de formulaire non affirmés que les parcours ont résolus en réponses de non-réclamation déclarées : le chemin du profil (field) et la valeur soumise (assumed) — les relayer tous avec les résultats
confirmationPar assureur : l'estimation instantanée du moteur à côté de la prime imprimée sur la page — l'estimation groupée lorsque plusieurs lignes ont été parcourues
error / detailChaque refus est un dict {"error", "detail"} structuré

Chaque entrée agents :

ChampQuandSignification
carrier_key, carriertoujoursClé du registre + nom affiché
statustoujoursin_progress / complete / failed
linestoujoursLes lignes couvertes par ce parcours — plusieurs lors d'un parcours groupé
stage, eta_seconds_remainingen coursOù en est le parcours ; temps restant par rapport au flux typique de l'assureur
quote.premiumdeviséTextuellement tel que la page de l'assureur l'a imprimé ("$857.80") — jamais analysé, arrondi ou dérivé
quote.term_monthsdeviséLa durée couverte par la prime imprimée
quote.premium_by_linedevisé, parcours groupéLa prime de chaque ligne telle que la page l'a imprimée, à côté du total groupé dans quote.premium
quote.breakdowndeviséLes postes de la page elle-même, ses propres libellés
quote.bounddevisé, parcours plus récentsCouverture lue sur la page tarifée — ce que le formulaire a réellement lié, par rapport à ce qui a été demandé
quote.variantsdeviséPackages tarifés supplémentaires proposés par la page
quote.quote_numberdeviséLe numéro de récupération de l'assureur, lorsque la page en affiche un
quote.evidence_recordeddeviséUne preuve par capture d'écran existe côté serveur (les URI internes ne transitent jamais sur le fil)
declined: true + detailrefuséL'assureur a examiné les détails et a refusé de deviser. Une réponse, pas une erreur — la relayer
detailéchouéLes propres mots du parcours pour indiquer où et pourquoi il s'est arrêté

Refus

Chaque refus est un objet {"error", "detail"} structuré — rien n'a été soumis à un assureur sauf si la ligne ci-dessous dit le contraire.

CodeQuandQue faire
profile_requiredFaits du ménage envoyés au niveau supérieur, sans wrapper profileRappeler avec les faits enveloppés comme indiqué dans le example_arguments du refus
authorization_requiredAppelé sans l'accord de l'utilisateurExpliquer les faits de consentement, obtenir un oui, le transmettre textuellement dans user_authorization
bad_identityUn drivers_license_number en forme de SSNLes SSN ne sont jamais collectés ; envoyer le numéro de permis tel qu'imprimé sur le permis
bad_profileUn champ du profil échoue à la validationdetail nomme le champ
one_line_per_dispatchUne carte lines videNommer au moins une ligne à parcourir
unknown_lineUne ligne sans parcours (par ex. umbrella)detail liste les lignes connues de l'envoi en direct
coverage_selection_requiredUn parcours auto ou locataire sans limites et franchises complètesRappeler avec les chiffres — les parcours saisissent des valeurs réelles, jamais des valeurs par défaut
bad_askUn parcours habitation avec une demande de couvertureEnvoyer {"home": null} — le formulaire de l'assureur fixe lui-même le prix de son package
missing_factsAucun formulaire d'assureur demandé ne peut être rempli à partir du profilDemander à l'utilisateur les faits needs[].fields[] (en utilisant leur values là où il est servi) et rappeler — voir ci-dessous
no_carriersAucun assureur n'a de parcours validé pour cette ligne + étatReplier sur quote_insurance
launch_failedLes agents n'ont pas pu démarrerRien n'a atteint un assureur — réessayer est sûr

Exemple : auto

Un ménage de Fresno confirmant le propre chiffre de GEICO. Le profil contient les faits que le formulaire de GEICO exige (propriété, moment de l'achat, assurance antérieure, âge du premier permis…) ; identity est le vrai demandeur ; la demande est les mêmes quatre axes que 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."
}

Rappeler avec les mêmes arguments plus tard collecte le parcours terminé. La prime est la propre chaîne de la page ; breakdown sont les propres libellés de la page (GEICO a imprimé deux packages côte à côte) ; term_months indique ce que le chiffre couvre — 857,80 $ par 6 mois, pas par mois.

{
  "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
      }
    }
  ]
}