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 home and auto insurance quotes — Demandez des devis instantanés et détaillés auprès de plusieurs assureurs et options de couverture en un seul appel via quote_insurance.

  • Get live carrier confirmations — Demandez une vérification de devis en temps réel directement sur les sites des assureurs, avec consentement, à l’aide de live_carrier_quotes.

  • Price auto coverage with specific limits — Précisez les montants pour les dommages corporels, les dommages matériels et les franchises (p. ex., bi, coll_deductible) pour voir les coûts mensuels détaillés par assureur.

  • Estimate home or renters policies — Fournissez les détails du bien et les montants de couverture (p. ex., coverage_a, deductible) pour recevoir une tarification du logement, de la responsabilité civile et des biens personnels.

  • Identify missing facts that move prices — Demandez quels champs de profil omis (p. ex., annual_mileage, prior_insurance) influent le plus sur les devis, via tighten_by et assumptions dans les réponses.

Serveur MCP hébergé

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

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

Documentation

Docs

Pour les agents IA : l'index du site se trouve sur /llms.txt et le texte intégral sur /llms-full.txt.

Foresee permet aux assistants IA de comparer les assurances habitation et automobile auprès de chaque assureur et option 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 détaillées et instantané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_failuresbooléennontrue

Profil

Profil de base

Il existe une entrée de base profile, plus des blocs supplémentaires pour l'assurance automobile et 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, rapportée sous forme de assumptions — par exemple auto.vehicles[].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_policiesobjet[] — {line, carrier}non

companion_policies liste les polices que le foyer détient déjà, chacune avec l'assureur qui l'émet — {"line": "home", "carrier": "State Farm"}. La remise multi-polices d'un assureur ne s'applique qu'à une police qu'il émet, donc une police détenue sans assureur n'en bénéficie pas, et le devis demande l'assureur sous tighten_by.

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'entrées datées — {"on": "2025-01", "kind": "speeding"}, {"on": "2023-06-15", "at_fault": true} — où une liste vide signifie un dossier vierge. Une entrée sans on (ou une infraction sans kind) est refusée, en indiquant son chemin.

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 responsabilité. La franchise que vous payez par sinistre, en dollars
comp_deductibleentierouiComprehensive : dommages à votre propre véhicule autres qu'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 fautif n'a pas ou trop peu d'assurance. Limite par personne/par accident en milliers de dollars, ex. "100/300"
medpayentiernonPaiements médicaux : frais médicaux pour vous et vos passagers, quelle que soit la responsabilité. 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_fentierouiPaiements médicaux à autrui : frais médicaux d'un invité après une blessure sur votre propriété, quelle que soit la responsabilité. Limite en dollars
aop_deductibleentierouiFranchise tous autres risques : ce que vous payez par sinistre pour tout sauf les risques avec franchise dédiée (comme le tremblement 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_fentierouiPaiements médicaux à autrui : frais médicaux d'un invité après une blessure dans votre logement, quelle que soit la responsabilité. 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

Un résultat tarifé arrive entièrement dans structuredContent ; content est vide. Le détail de tarification est le champ dense : texte machine compact, une section par ligne, affiché dans les blocs response ci-dessous. À côté se trouvent les champs principaux par ligne sous by_line (assureurs avec monthly, confidence_interval, carrier_quote_url, warnings, rated_vs_asked ; plus assumptions, tighten_by, failures), et presentation (comment présenter les prix), bundle et skipped en haut. Les refus (profile_required, coverage_required) sont du JSON simple sans dense.

PréfixeFréquenceSignification
Qune fois par ligneCe qui a été tarifé : état, ligne d'activité, sélection de couverture
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 chemins de profil des 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 besoinsUne note sur l'assureur ci-dessus, ex. pas de page de devis en ligne
Lune fois par assureurCoût mensuel par couverture, sous des codes qui signifient la même couverture chez chaque assureur (BI, PD, UMBI, MEDPAY, COMP, COLL…) ; A+B est une prime couvrant les deux, FEE des frais fixes
Dpar assureurÉchelons de prix : pour chaque levier de couverture, chaque palier proposé en ±$/mois par rapport au mensuel coté, tout le reste maintenu à la sélection. +0.00 marque le palier sélectionné ; (asked X) = X n'est pas proposé et le prix se situe au palier proposé le plus proche. Re-tarifer à partir de D ; ne pas rappeler

Exemple : automobile

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

Mercury affiche la cellule d'assureur simple ; Travelers tarifie via deux entités émettrices possibles, donc sa cellule porte un segment ci (la plage de placement). USAA se retrouve 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 neuf réponses qui feraient le plus varier le prix. Mercury affiche la cellule d'assureur simple ; Travelers tarifie via deux entités émettrices possibles, donc sa cellule porte un segment ci (la plage de placement). USAA se retrouve dans not_priced avec la raison propre à l'assureur.

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

Exemple : habitation

La même personne de 41 ans que ci-dessus, assurant une maison à ossature bois 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 les ratios de la couverture A qui ont été tarifés. Le L de chaque assureur est sa prime de base (HO_BASE) plus les frais. Les faits sur le bâtiment sont 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}
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

Exemple : locataire

Un autre foyer 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}
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

Exemple : automobile + locataire

Le même locataire de 27 ans, maintenant avec une voiture. Les listes vides violations et accidents signifient un dossier vierge, donc les questions sur l'historique de conduite laissent assumptions: entièrement.

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

Puisque nous fournissons maintenant l'historique, le kilométrage et l'historique d'assurance, les assumptions: automobile se réduisent à huit entrées et ses tighten_by: à cinq. La section locataire déclare ses propres valeurs de substitution pour le bâtiment. Mercury tarifie uniquement l'automobile ; Farmers tarifie les deux lignes.

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

Outil 2 : live_carrier_quotes

Objectif : confirmer les estimations de devis sur les sites de devis propres aux assureurs.

Cet outil est idempotent : le premier appel mandate 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 détails 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 de contrat 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 commandent des parcours groupés
user_authorizationchaîneouiL'affirmation de l'utilisateur dans la conversation, textuellement (par ex. yes, go ahead)
identityobjetgénéralementLes détails de l'utilisateur.
carrierschaîne[]nonRestreindre le panel ; par défaut, chaque assureur disposant d'un parcours validé pour les lignes + l'État

lines

LigneDemandePourquoi
autorequise — 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 demandent aux formulaires des assureurs
homeaucune — {"home": null}Le formulaire de l'assureur fixe lui-même le prix de son package (montant de l'habitation issu de son estimation de coût de remplacement) ; les agents rapportent ce qu'il a choisi. Une demande fournie est refusée bruyamment, pas ignorée silencieusement
rentersrequise — 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 à la fois commandent 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 de package ; un assureur ne couvrant que certaines lignes est parcouru pour celles-ci uniquement. Les règles de demande par ligne restent inchangées par le regroupement.

identity

ChampTypeRequisDétails
first_namechaîneouiPrénom légal
last_namechaîneouiNom légal
dobchaîne, YYYY-MM-DDoui
streetchaîneouiAdresse (ligne 1)
unitchaînenonAppartement/unité (ligne 2)
citychaîneoui
zip_codechaînenonUniquement si elle diffère de celle du profil
emailchaîneouiLes assureurs envoient le devis ici
phonechaînenon

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 de 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 pourquoi (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) — transmettez chacun avec les résultats
error / detailChaque refus est un dictionnaire {"error", "detail"} structuré

Chaque entrée agents :

ChampQuandSignification
carrier_key, carriertoujoursClé du registre + nom d'affichage
statustoujoursin_progress / complete / failed
linestoujoursLes lignes couvertes par ce parcours — plusieurs sur 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 du package 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 était 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éDes preuves par capture d'écran existent 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 — transmettez-la
detailéchouéLes propres mots du parcours pour 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 foyer 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 passer 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 de l'assureur demandé ne peut être rempli à partir du profilDemander à l'utilisateur les faits needs[].fields[] (en utilisant son values là où il est servi) et rappeler — voir ci-dessous
no_carriersAucun assureur n'a de parcours validé pour cette ligne + cet É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 foyer de Fresno confirmant le propre chiffre de GEICO. Le profil porte les faits que le formulaire de GEICO exige (propriété, moment de l'achat, assurance antérieure, âge au 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 nombre 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
      }
    }
  ]
}