Foresee
officielForesee 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, viatighten_byetassumptionsdans 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 :
| Outil | Objectif | agents. | mcp. |
|---|---|---|---|
quote_insurance | Générer des estimations de devis instantanées, précises et détaillées | ✅ | ✅ |
live_carrier_quotes | Confirmer 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ètre | Type | Requis | Détails |
|---|---|---|---|
profile | objet | oui | voir Profil |
lines | objet | oui | Les clés sont les lignes à tarifer (auto, home, renters) ; les valeurs sont les options de couverture de cette ligne (voir Options de couverture) |
carriers | chaîne[] | non | Par défaut, « tous les assureurs » |
include_failures | booléen | non | true |
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.
| Champ | Type | Requis |
|---|---|---|
zip_code | chaîne | oui |
age | entier | oui |
dob | chaîne, YYYY-MM-DD | alternative acceptée à age |
city | chaîne | non |
gender | chaîne | non |
marital_status | chaîne | non |
education | chaîne | non |
employment_status | chaîne | non |
occupation | chaîne | non |
credit_range | chaîne | non |
home_ownership_status | chaîne | non |
residence_type | chaîne | non |
military_affiliation | chaîne | non |
memberships | chaîne[] | non |
effective_date | chaîne | non |
prior_insurance | objet | non |
companion_policies | objet[] — {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
| Champ | Type | Requis |
|---|---|---|
auto.vehicles[].year | entier | oui |
auto.vehicles[].make | chaîne | oui |
auto.vehicles[].model | chaîne | oui |
auto.vehicles[].ownership | chaîne | non |
auto.vehicles[].annual_mileage | entier | non |
auto.vehicles[].primary_use | chaîne | non |
auto.vehicles[].garaging_zip | chaîne | non |
auto.drivers[].relation | chaîne | non (self pour le premier) |
auto.drivers[].dob | chaîne | non |
auto.drivers[].years_licensed | entier | non |
auto.drivers[].accidents | objet[] | non |
auto.drivers[].violations | objet[] | non |
auto.drivers[].sr22_required | booléen | non |
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
| Champ | Type | Requis |
|---|---|---|
property.year_built | entier | non |
property.construction_type | chaîne | non |
property.roof_type | chaîne | non |
property.square_feet | entier | non |
property.protection_class | chaîne | non |
property.replacement_cost | entier | non |
property.devices | chaîne[] | non |
property.losses | objet[] | 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
| Option | Type | Requis | Ce qu'elle couvre |
|---|---|---|---|
bi | chaîne | oui | Responsabilité civile pour dommages corporels : blessures que vous causez à autrui. Limite par personne/par accident en milliers de dollars, ex. "100/300" |
pd | entier | oui | Responsabilité civile pour dommages matériels : dommages que vous causez aux véhicules et biens d'autrui. Limite en milliers de dollars, ex. 100 |
coll_deductible | entier | oui | Collision : dommages à votre propre véhicule lors d'un accident, quelle que soit la responsabilité. La franchise que vous payez par sinistre, en dollars |
comp_deductible | entier | oui | Comprehensive : 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 |
um | chaîne | non | Conducteur 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" |
medpay | entier | non | Paiements médicaux : frais médicaux pour vous et vos passagers, quelle que soit la responsabilité. Limite en dollars, ex. 5000 |
Habitation
| Option | Type | Requis | Ce qu'elle couvre |
|---|---|---|---|
coverage_a | entier | oui | Bâtiment : reconstruction de la maison elle-même. Limite en dollars, généralement le coût de remplacement |
coverage_e | entier | oui | Responsabilité civile personnelle : blessures ou dommages dont vous êtes légalement responsable, sur ou hors de la propriété. Limite en dollars |
coverage_f | entier | oui | Paiements 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_deductible | entier | oui | Franchise 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
| Option | Type | Requis | Ce qu'elle couvre |
|---|---|---|---|
coverage_c | entier | oui | Biens personnels : vos effets personnels. Limite en dollars |
coverage_e | entier | oui | Responsabilité civile personnelle : blessures ou dommages dont vous êtes légalement responsable. Limite en dollars |
coverage_f | entier | oui | Paiements médicaux à autrui : frais médicaux d'un invité après une blessure dans votre logement, quelle que soit la responsabilité. Limite en dollars |
deductible | entier | oui | Ce que vous payez par sinistre avant le début de la couverture. En dollars |
coverage_d | entier | non | Perte 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éfixe | Fréquence | Signification |
|---|---|---|
Q | une fois par ligne | Ce qui a été tarifé : état, ligne d'activité, sélection de couverture |
assumptions: | une fois par ligne | Hypothèses faites par Foresee ; high_impact: true signifie que ce champ fait varier matériellement l'estimation du devis |
tighten_by: | une fois par ligne | Les chemins de profil des faits manquants qui feraient le plus varier le prix |
not_priced: | lorsque applicable | Assureurs exclus, avec la raison |
C | une fois par assureur | Assureur, entité émettrice, prime mensuelle (estimation ponctuelle et intervalle de confiance) |
W | selon les besoins | Une note sur l'assureur ci-dessus, ex. pas de page de devis en ligne |
L | une fois par assureur | Coû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 |
D | par 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ètre | Type | Requis | Détails |
|---|---|---|---|
profile | objet | oui | Mêmes champs que quote_insurance — les faits de tarification |
lines | objet | oui | Une clé par ligne à parcourir, chaque valeur étant la demande de cette ligne (voir ci-dessous) ; plusieurs clés commandent des parcours groupés |
user_authorization | chaîne | oui | L'affirmation de l'utilisateur dans la conversation, textuellement (par ex. yes, go ahead) |
identity | objet | généralement | Les détails de l'utilisateur. |
carriers | chaîne[] | non | Restreindre le panel ; par défaut, chaque assureur disposant d'un parcours validé pour les lignes + l'État |
lines
| Ligne | Demande | Pourquoi |
|---|---|---|
auto | requise — les mêmes quatre axes que quote_insurance (bi, pd, coll_deductible, comp_deductible), sous forme de nombres réels | Les limites et franchises que les agents demandent aux formulaires des assureurs |
home | aucune — {"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 |
renters | requise — coverage_c, coverage_e, coverage_f, deductible, sous forme de dollars réels | Les 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
| Champ | Type | Requis | Détails |
|---|---|---|---|
first_name | chaîne | oui | Prénom légal |
last_name | chaîne | oui | Nom légal |
dob | chaîne, YYYY-MM-DD | oui | |
street | chaîne | oui | Adresse (ligne 1) |
unit | chaîne | non | Appartement/unité (ligne 2) |
city | chaîne | oui | |
zip_code | chaîne | non | Uniquement si elle diffère de celle du profil |
email | chaîne | oui | Les assureurs envoient le devis ici |
phone | chaîne | non |
Réponse
| Champ | Signification |
|---|---|
status | in_progress / partial / complete — rappeler avec les mêmes arguments pour collecter |
agents | Une entrée par assureur (voir ci-dessous) |
note | Que 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_recorded | Sur le reçu : l'enregistrement de consentement a été stocké avant que tout assureur ne voie le risque |
skipped | Assureurs NON envoyés, chacun avec la raison (no_deterministic_walk, missing_facts avec les faits nommés) |
not_dispatched | Assureurs 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 |
needs | En 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 |
assumptions | Faits 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 / detail | Chaque refus est un dictionnaire {"error", "detail"} structuré |
Chaque entrée agents :
| Champ | Quand | Signification |
|---|---|---|
carrier_key, carrier | toujours | Clé du registre + nom d'affichage |
status | toujours | in_progress / complete / failed |
lines | toujours | Les lignes couvertes par ce parcours — plusieurs sur un parcours groupé |
stage, eta_seconds_remaining | en cours | Où en est le parcours ; temps restant par rapport au flux typique de l'assureur |
quote.premium | devisé | Textuellement tel que la page de l'assureur l'a imprimé ("$857.80") — jamais analysé, arrondi ou dérivé |
quote.term_months | devisé | La durée couverte par la prime imprimée |
quote.premium_by_line | devisé, 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.breakdown | devisé | Les postes de la page elle-même, ses propres libellés |
quote.bound | devisé, parcours plus récents | Couverture lue sur la page tarifée — ce que le formulaire a réellement lié, par rapport à ce qui était demandé |
quote.variants | devisé | Packages tarifés supplémentaires proposés par la page |
quote.quote_number | devisé | Le numéro de récupération de l'assureur, lorsque la page en affiche un |
quote.evidence_recorded | devisé | Des preuves par capture d'écran existent côté serveur (les URI internes ne transitent jamais sur le fil) |
declined: true + detail | refusé | 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.
| Code | Quand | Que faire |
|---|---|---|
profile_required | Faits du foyer envoyés au niveau supérieur, sans wrapper profile | Rappeler avec les faits enveloppés comme indiqué dans le example_arguments du refus |
authorization_required | Appelé sans l'accord de l'utilisateur | Expliquer les faits de consentement, obtenir un oui, le passer textuellement dans user_authorization |
bad_identity | Un drivers_license_number en forme de SSN | Les SSN ne sont jamais collectés ; envoyer le numéro de permis tel qu'imprimé sur le permis |
bad_profile | Un champ du profil échoue à la validation | detail nomme le champ |
one_line_per_dispatch | Une carte lines vide | Nommer au moins une ligne à parcourir |
unknown_line | Une ligne sans parcours (par ex. umbrella) | detail liste les lignes connues de l'envoi en direct |
coverage_selection_required | Un parcours auto ou locataire sans limites et franchises complètes | Rappeler avec les chiffres — les parcours saisissent des valeurs réelles, jamais des valeurs par défaut |
bad_ask | Un parcours habitation avec une demande de couverture | Envoyer {"home": null} — le formulaire de l'assureur fixe lui-même le prix de son package |
missing_facts | Aucun formulaire de l'assureur demandé ne peut être rempli à partir du profil | Demander à l'utilisateur les faits needs[].fields[] (en utilisant son values là où il est servi) et rappeler — voir ci-dessous |
no_carriers | Aucun assureur n'a de parcours validé pour cette ligne + cet État | Replier sur quote_insurance |
launch_failed | Les agents n'ont pas pu démarrer | Rien 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
}
}
]
}