Foresee
oficialForesee permite a los asistentes de IA comparar seguros de hogar y automóvil entre todas las aseguradoras y opciones de cobertura, proporcionando estimaciones de cotización instantáneas, precisas y detalladas.
¿Qué puedes hacer con Foresee MCP?
-
Compara cotizaciones de seguro de auto y hogar — Solicita estimaciones instantáneas y detalladas de varias aseguradoras y opciones de cobertura en una sola llamada mediante
quote_insurance. -
Obtén confirmaciones en vivo de las aseguradoras — Solicita verificación de cotizaciones en tiempo real directamente desde los sitios de las aseguradoras, con tu consentimiento, usando
live_carrier_quotes. -
Cotiza cobertura de auto con límites específicos — Especifica lesiones corporales, daños a la propiedad y deducibles (p. ej.,
bi,coll_deductible) para ver costos mensuales detallados por aseguradora. -
Estima pólizas de hogar o inquilinos — Proporciona detalles de la propiedad y montos de cobertura (p. ej.,
coverage_a,deductible) para recibir precios de vivienda, responsabilidad civil y propiedad personal. -
Identifica datos faltantes que afectan los precios — Pregunta qué campos de perfil omitidos (p. ej.,
annual_mileage,prior_insurance) impactan más las cotizaciones, mediantetighten_byyassumptionsen las respuestas.
Servidor MCP alojado
npx add-mcp 'https://agents.go-foresee.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Documentación
Para agentes de IA: el índice del sitio está en /llms.txt y el texto completo en /llms-full.txt.
Foresee permite a los asistentes de IA comparar seguros de hogar y automóvil entre todas las aseguradoras y opciones de cobertura, proporcionando estimaciones de cotización instantáneas, precisas y detalladas.
Uso de Foresee
Foresee aloja dos servidores MCP:
Los usuarios que desean una estimación de cotización simple y de baja fricción sin entregar su información personal identificable (PII) utilizan:
https://mcp.go-foresee.com/mcp
Los usuarios que también desean confirmar las estimaciones de cotización directamente con las aseguradoras pueden enviar los agentes de uso de computadora de Foresee a través de:
https://agents.go-foresee.com/mcp
Ninguno de los servidores requiere autenticación.
Herramientas
Foresee publica dos herramientas en los servidores MCP:
| Herramienta | Propósito | agents. | mcp. |
|---|---|---|---|
quote_insurance | Generar estimaciones de cotización instantáneas, precisas y detalladas | ✅ | ✅ |
live_carrier_quotes | Confirmar estimaciones de cotización con las aseguradoras | ✅ | ❌ |
Herramienta 1: quote_insurance
Propósito: generar estimaciones de cotización instantáneas y detalladas por partida de las aseguradoras que Foresee respalda, en todas las líneas y estados que Foresee atiende actualmente, en una sola llamada.
Parámetros de entrada
| Parámetro | Tipo | Obligatorio | Detalles |
|---|---|---|---|
profile | objeto | sí | ver Perfil |
lines | objeto | sí | Las claves son las líneas a cotizar (auto, home, renters); los valores son las opciones de cobertura de esa línea (ver Opciones de cobertura) |
carriers | string[] | no | El valor predeterminado es "todas las aseguradoras" |
include_failures | booleano | no | true |
Perfil
Perfil principal
Hay una entrada principal profile, más bloques adicionales para seguros de automóvil y de hogar/inquilinos.
Los únicos campos obligatorios son edad (o dob), código postal y (para seguro de automóvil) detalles del vehículo.
Los campos opcionales omitidos se convierten en supuestos declarados: elegimos un valor conservador de respaldo, informado como assumptions — p. ej., auto.vehicles[].annual_mileage = 12000, con una entrada tighten_by que enumera los supuestos que más moverían el precio. prior_insurance significa seguro para la misma línea; companion_policies significa seguro para una línea diferente.
| Campo | Tipo | Obligatorio |
|---|---|---|
zip_code | string | sí |
age | entero | sí |
dob | string, YYYY-MM-DD | alternativa aceptada a age |
city | string | no |
gender | string | no |
marital_status | string | no |
education | string | no |
employment_status | string | no |
occupation | string | no |
credit_range | string | no |
home_ownership_status | string | no |
residence_type | string | no |
military_affiliation | string | no |
memberships | string[] | no |
effective_date | string | no |
prior_insurance | objeto | no |
companion_policies | objeto[] — {line, carrier} | no |
companion_policies enumera las pólizas que el hogar ya posee, cada una con la aseguradora que la emite — {"line": "home", "carrier": "State Farm"}. El descuento por múltiples pólizas de una aseguradora se aplica solo a una póliza que ella emite, por lo que una póliza existente sin aseguradora no obtiene ninguno, y la cotización solicita la aseguradora bajo tighten_by.
Perfil de seguro de automóvil
| Campo | Tipo | Obligatorio |
|---|---|---|
auto.vehicles[].year | entero | sí |
auto.vehicles[].make | string | sí |
auto.vehicles[].model | string | sí |
auto.vehicles[].ownership | string | no |
auto.vehicles[].annual_mileage | entero | no |
auto.vehicles[].primary_use | string | no |
auto.vehicles[].garaging_zip | string | no |
auto.drivers[].relation | string | no (self para el primero) |
auto.drivers[].dob | string | no |
auto.drivers[].years_licensed | entero | no |
auto.drivers[].accidents | objeto[] | no |
auto.drivers[].violations | objeto[] | no |
auto.drivers[].sr22_required | booleano | no |
accidents y violations son listas de entradas con fecha — {"on": "2025-01", "kind": "speeding"}, {"on": "2023-06-15", "at_fault": true} — donde una lista vacía es un historial limpio. Una entrada sin on (o una infracción sin kind) se rechaza, indicando su ruta.
Perfil de seguro de hogar e inquilinos
| Campo | Tipo | Obligatorio |
|---|---|---|
property.year_built | entero | no |
property.construction_type | string | no |
property.roof_type | string | no |
property.square_feet | entero | no |
property.protection_class | string | no |
property.replacement_cost | entero | no |
property.devices | string[] | no |
property.losses | objeto[] | no |
Opciones de cobertura
Cada clave en lines toma las opciones de cobertura de esa línea. Nada se cotiza con un valor predeterminado del servidor: las opciones que se pasan son las que se cotizan.
Automóvil
| Opción | Tipo | Obligatorio | Qué cubre |
|---|---|---|---|
bi | string | sí | Responsabilidad por lesiones corporales: lesiones que causas a otras personas. Límite por persona/por accidente en miles de $, p. ej., "100/300" |
pd | entero | sí | Responsabilidad por daños a la propiedad: daños que causas a los autos y propiedades de otras personas. Límite en miles de $, p. ej., 100 |
coll_deductible | entero | sí | Colisión: daños a tu propio auto por un choque, sin importar quién tenga la culpa. El deducible que pagas por reclamo, en dólares |
comp_deductible | entero | sí | Cobertura integral: daños a tu propio auto por cualquier cosa que no sea un choque — robo, incendio, granizo, vandalismo, golpear a un animal. El deducible que pagas por reclamo, en dólares |
um | string | no | Conductor sin seguro/insuficientemente asegurado: tus lesiones cuando el conductor culpable no tiene seguro o tiene muy poco. Límite por persona/por accidente en miles de $, p. ej., "100/300" |
medpay | entero | no | Pagos médicos: facturas médicas para ti y tus pasajeros, sin importar quién tenga la culpa. Límite en dólares, p. ej., 5000 |
Hogar
| Opción | Tipo | Obligatorio | Qué cubre |
|---|---|---|---|
coverage_a | entero | sí | Vivienda: reconstrucción de la casa en sí. Límite en dólares, generalmente el costo de reposición |
coverage_e | entero | sí | Responsabilidad personal: lesiones o daños por los que eres legalmente responsable, dentro o fuera de la propiedad. Límite en dólares |
coverage_f | entero | sí | Pagos médicos a terceros: facturas médicas de un invitado tras una lesión en tu propiedad, sin importar quién tenga la culpa. Límite en dólares |
aop_deductible | entero | sí | Deducible por otros riesgos: lo que pagas por reclamo por todo excepto riesgos con su propio deducible (como terremoto). En dólares |
Las coberturas B (otras estructuras, como un garaje separado o una cerca), C (propiedad personal — tus pertenencias) y D (pérdida de uso — costos de vivienda mientras la casa no puede habitarse) no se solicitan en dólares — regresan en sel como proporciones de la Cobertura A que se cotizaron.
Inquilinos
| Opción | Tipo | Obligatorio | Qué cubre |
|---|---|---|---|
coverage_c | entero | sí | Propiedad personal: tus pertenencias. Límite en dólares |
coverage_e | entero | sí | Responsabilidad personal: lesiones o daños por los que eres legalmente responsable. Límite en dólares |
coverage_f | entero | sí | Pagos médicos a terceros: facturas médicas de un invitado tras una lesión en tu hogar, sin importar quién tenga la culpa. Límite en dólares |
deductible | entero | sí | Lo que pagas por reclamo antes de que comience la cobertura. En dólares |
coverage_d | entero | no | Pérdida de uso: costos de vivienda adicionales si tienes que mudarte mientras el lugar se repara. Límite en dólares |
Formato de respuesta
Un resultado cotizado llega completamente en structuredContent; content está vacío. El detalle de la calificación es el campo dense: texto de máquina compacto, una sección por línea, mostrado en los bloques response a continuación. Junto a él están los campos principales por línea bajo by_line (aseguradoras con monthly, confidence_interval, carrier_quote_url, warnings, rated_vs_asked; además de assumptions, tighten_by, failures), y presentation (cómo presentar los precios), bundle y skipped en la parte superior. Los rechazos (profile_required, coverage_required) son JSON simple sin dense.
| Prefijo | Frecuencia | Significado |
|---|---|---|
Q | una vez por línea | Lo que se cotizó: estado, línea de negocio, selección de cobertura |
assumptions: | una vez por línea | Supuestos hechos por Foresee; high_impact: true significa que este campo mueve materialmente la estimación de la cotización |
tighten_by: | una vez por línea | Las rutas de perfil de los hechos faltantes que más moverían el precio |
not_priced: | cuando corresponda | Aseguradoras excluidas, con el motivo |
C | una vez por aseguradora | Aseguradora, entidad emisora, prima mensual (estimación puntual e intervalo de confianza) |
W | según sea necesario | Una nota sobre la aseguradora anterior, p. ej., sin página de cotización en línea |
L | una vez por aseguradora | Costo mensual por cobertura, bajo códigos que significan la misma cobertura en cada aseguradora (BI, PD, UMBI, MEDPAY, COMP, COLL…); A+B es una prima que cubre ambas, FEE una tarifa fija |
D | por aseguradora | Escaleras de precios: para cada palanca de cobertura, cada peldaño ofrecido como ±$/mes frente a la cotización mensual, todo lo demás mantenido en la selección. +0.00 marca el peldaño seleccionado; (asked X) = X no se ofrece y el precio se sitúa en el peldaño ofrecido más cercano. Re-cotizar desde D; no volver a llamar |
Ejemplo: automóvil
Una persona de 41 años en el código postal 90066 con un Honda Civic 2021.
Mercury muestra la celda de aseguradora simple; Travelers cotiza a través de dos posibles entidades emisoras, por lo que su celda lleva un segmento ci (el intervalo de colocación). USAA aparece en not_priced con el motivo propio de la aseguradora.
{
"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"]
}
Cada campo de perfil omitido regresa como un supuesto declarado — el bloque grande assumptions: a continuación es causado por la solicitud delgada anterior, y tighten_by: enumera las nueve respuestas que más moverían el precio. Mercury muestra la celda de aseguradora simple; Travelers cotiza a través de dos posibles entidades emisoras, por lo que su celda lleva un segmento ci (el intervalo de colocación). USAA aparece en not_priced con el motivo propio de la aseguradora.
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
Ejemplo: hogar
La misma persona de 41 años que arriba, asegurando una casa de estructura construida en 1998 con un costo de reposición 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 refleja B/C/D como las proporciones de la Cobertura A que se cotizaron. El L de cada aseguradora es su prima base (HO_BASE) más tarifas. Los hechos de la vivienda están en assumptions:/tighten_by: — aquí tipo de techo, clase de protección y un historial de pérdidas limpio.
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
Ejemplo: inquilinos
Un hogar diferente en el mismo código postal: un inquilino de 27 años:
{
"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
Ejemplo: automóvil + inquilinos
El mismo inquilino de 27 años, ahora con un auto. Las listas vacías violations y accidents significan un historial limpio, por lo que las preguntas sobre el historial de conducción dejan assumptions: por completo.
{
"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"]
}
Dado que ahora proporcionamos historial, kilometraje e historial de seguro, los assumptions: de automóvil se reducen a ocho entradas y sus tighten_by: a cinco.
La sección de inquilinos declara sus propios valores de respaldo para la vivienda. Mercury cotiza solo automóvil; Farmers cotiza ambas líneas.
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
Herramienta 2: live_carrier_quotes
Propósito: confirmar estimaciones de cotización en los sitios de cotización propios de las aseguradoras.
Esta herramienta es idempotente: la primera llamada comisiona a los agentes de uso de computadora; llamar nuevamente con los mismos argumentos recopila el progreso y los resultados de la primera llamada.
Un envío en vivo envía los detalles reales del usuario a las aseguradoras, quienes pueden realizar una verificación de crédito suave. El consentimiento del usuario se recopila antes de llamar a la herramienta.
Foresee solo recopila cotizaciones; no toma pagos ni vincula seguros.
Parámetros de entrada
| Parámetro | Tipo | Obligatorio | Detalles |
|---|---|---|---|
profile | objeto | sí | Mismos campos que quote_insurance — los hechos de la calificación |
lines | objeto | sí | Una clave por línea a recorrer, cada valor es la solicitud de esa línea (ver abajo); varias claves encargan recorridos combinados |
user_authorization | cadena | sí | La afirmación del usuario en el chat, textual (p. ej. yes, go ahead) |
identity | objeto | normalmente | Los datos del usuario. |
carriers | cadena[] | no | Restringe el abanico; por defecto, todas las aseguradoras con un recorrido validado para las líneas + estado |
lines
| Línea | Solicitud | Por qué |
|---|---|---|
auto | obligatoria — los mismos cuatro ejes que quote_insurance (bi, pd, coll_deductible, comp_deductible), como números reales | Los límites y deducibles que los agentes piden en los formularios de las aseguradoras |
home | ninguna — {"home": null} | El formulario propio de la aseguradora fija el precio de su paquete (monto de la vivienda según su estimación de costo de reposición); los agentes informan lo que eligió. Una solicitud proporcionada se rechaza en voz alta, no se ignora en silencio |
renters | obligatoria — coverage_c, coverage_e, coverage_f, deductible, como dólares reales | Los agentes escriben los números del usuario en el formulario en lugar de aceptar los valores predeterminados; Foresee nunca los inventa |
Varias claves a la vez encargan recorridos combinados: cada aseguradora que cubre todas las líneas nombradas se guía por su propio flujo de cotización multilínea e informa las primas por línea más su total de paquete propio; una aseguradora que cubre solo algunas líneas se recorre solo para esas. Las reglas de solicitud por línea no cambian con la combinación.
identity
| Campo | Tipo | Obligatorio | Detalles |
|---|---|---|---|
first_name | cadena | sí | Nombre legal |
last_name | cadena | sí | Apellido legal |
dob | cadena, YYYY-MM-DD | sí | |
street | cadena | sí | Dirección (línea 1) |
unit | cadena | no | Apartamento/unidad (línea 2) |
city | cadena | sí | |
zip_code | cadena | no | Solo cuando difiere del perfil |
email | cadena | sí | Las aseguradoras envían la cotización aquí |
phone | cadena | no |
Respuesta
| Campo | Significado |
|---|---|
status | in_progress / partial / complete — volver a llamar con los mismos argumentos para recopilar |
agents | Una entrada por aseguradora (ver abajo) |
note | Qué hacer a continuación, p. ej. el momento de volver a llamar, o que se devolvieron los resultados de una ejecución anterior |
authorization_recorded | En el recibo: el registro de consentimiento se almacenó antes de que cualquier aseguradora viera el riesgo |
skipped | Aseguradoras NO enviadas, cada una con el motivo (no_deterministic_walk, missing_facts con los hechos nombrados) |
not_dispatched | Aseguradoras con precio por motor que este envío no recorrerá, con el porqué (held: …, no_walk, not_walked, offline, not_sold) — una recomendación que el carril de recorrido no puede confirmar nunca desaparece en silencio |
needs | Ante un rechazo de missing_facts: hechos por aseguradora que recopilar del usuario, con rutas de esquema exactas — y, para campos de vocabulario cerrado, los values aceptados |
assumptions | Hechos menores no afirmados del formulario que los recorridos resolvieron a respuestas declaradas de no reclamo: la ruta del perfil (field) y el valor enviado (assumed) — transmite cada uno con los resultados |
error / detail | Cada rechazo es un dict {"error", "detail"} estructurado |
Cada entrada de agents:
| Campo | Cuándo | Significado |
|---|---|---|
carrier_key, carrier | siempre | Clave del registro + nombre para mostrar |
status | siempre | in_progress / complete / failed |
lines | siempre | Las líneas que cubre este recorrido — varias en un recorrido combinado |
stage, eta_seconds_remaining | en curso | Dónde está el recorrido; tiempo restante frente al flujo típico de la aseguradora |
quote.premium | cotizado | Textual como lo imprimió la página de la aseguradora ("$857.80") — nunca analizado, redondeado ni derivado |
quote.term_months | cotizado | El período que cubre la prima impresa |
quote.premium_by_line | cotizado, recorrido combinado | La prima de cada línea como la imprimió la página, junto al total del paquete en quote.premium |
quote.breakdown | cotizado | Las partidas propias de la página, con sus propias etiquetas |
quote.bound | cotizado, recorridos más nuevos | Cobertura leída de la página con precio — lo que el formulario realmente fijó, frente a lo solicitado |
quote.variants | cotizado | Paquetes adicionales con precio que ofreció la página |
quote.quote_number | cotizado | El número de recuperación de la aseguradora, cuando la página muestra uno |
quote.evidence_recorded | cotizado | Existe evidencia de captura de pantalla en el servidor (los URI internos nunca viajan por la red) |
declined: true + detail | rechazado | La aseguradora revisó los detalles y se negó a cotizar. Una respuesta, no un error — transmítela |
detail | fallido | Las propias palabras del recorrido sobre dónde y por qué se detuvo |
Rechazos
Cada rechazo es un objeto {"error", "detail"} estructurado — nada se
envió a ninguna aseguradora salvo que la fila siguiente indique lo contrario.
| Código | Cuándo | Qué hacer |
|---|---|---|
profile_required | Hechos del hogar enviados en el nivel superior, sin envoltorio profile | Volver a llamar con los hechos envueltos como se muestra en el example_arguments del rechazo |
authorization_required | Llamado sin la aprobación del usuario | Explica los hechos de consentimiento, obtén un sí, pásalo textual en user_authorization |
bad_identity | Un drivers_license_number con forma de SSN | Los SSN nunca se recopilan; envía el número de licencia tal como está impreso en la licencia |
bad_profile | Un campo del perfil falla la validación | detail nombra el campo |
one_line_per_dispatch | Un mapa lines vacío | Nombra al menos una línea a recorrer |
unknown_line | Una línea sin recorrido (p. ej. umbrella) | detail enumera las líneas que el envío en vivo conoce |
coverage_selection_required | Un recorrido de auto o inquilinos sin límites y deducibles completos | Volver a llamar con los números — los recorridos escriben valores reales, nunca predeterminados |
bad_ask | Un recorrido de hogar con una solicitud de cobertura | Envía {"home": null} — el formulario propio de la aseguradora fija el precio de su paquete |
missing_facts | Ningún formulario de la aseguradora solicitada puede completarse desde el perfil | Pide al usuario los hechos de needs[].fields[] (usando su values donde se sirva) y vuelve a llamar — ver abajo |
no_carriers | Ninguna aseguradora tiene un recorrido validado para esa línea + estado | Recurre a quote_insurance |
launch_failed | Los agentes no pudieron comenzar | Nada llegó a ninguna aseguradora — reintentar es seguro |
Ejemplo: auto
Un hogar de Fresno confirmando el número propio de GEICO. El perfil contiene los hechos
que el formulario de GEICO exige (propiedad, momento de compra, seguro anterior, edad del primer
licenciamiento…); identity es el solicitante real; la solicitud son los mismos cuatro ejes 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."
}
Volver a llamar con los mismos argumentos más tarde recopila el recorrido terminado.
La prima es la cadena propia de la página; breakdown son las etiquetas propias de la página
(GEICO imprimió dos paquetes lado a lado); term_months dice qué cubre el
número — $857.80 por 6 meses, no por mes.
{
"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
}
}
]
}