Foresee
официальныйForesee позволяет ИИ-ассистентам сравнивать страхование жилья и авто по всем страховщикам и вариантам покрытия, предоставляя мгновенные, точные и детализированные оценки котировок.
Что можно делать с Foresee MCP?
- Сравнить котировки автострахования — Запросите мгновенные детализированные сметы от разных страховщиков с помощью
quote_insurance, указав данные о вашем автомобиле и параметры покрытия. - Рассчитать стоимость страхования жилья или аренды — Получите подробные котировки для дома или аренды, указав свойства объекта и лимиты покрытия, такие как
coverage_aилиcoverage_c. - Изучить компромиссы в покрытии — Посмотрите, как изменение франшизы или лимитов влияет на ежемесячные премии, через ценовые лестницы в ответе.
- Выявить недостающие факторы — Спросите, какие пропущенные детали (например,
annual_mileageили водительская история) сильнее всего повлияют на вашу котировку, на основе подсказокtighten_by. - Подтвердить сметы у страховщиков — Используйте
live_carrier_quotesна сервере агентов, чтобы проверить котировки напрямую у страховых компаний.
Размещённый MCP-сервер
npx add-mcp 'https://agents.go-foresee.com/mcp'Устанавливается в Claude Code, Codex, Cursor и другие
Документация
Документация
Foresee позволяет ИИ-ассистентам сравнивать автострахование и страхование жилья по всем страховщикам и вариантам покрытия, предоставляя мгновенные, точные и детализированные оценки котировок.
Использование Foresee
Foresee размещает два MCP-сервера:
Пользователи, которым нужна простая оценка котировки без передачи персональных данных (PII), используют:
https://mcp.go-foresee.com/mcp
Пользователи, которые также хотят подтвердить оценки котировок напрямую у страховщиков, могут задействовать компьютерных агентов Foresee через:
https://agents.go-foresee.com/mcp
Ни один из серверов не требует аутентификации.
Инструменты
Foresee публикует два инструмента на MCP-серверах:
| Инструмент | Назначение | agents. | mcp. |
|---|---|---|---|
quote_insurance | Генерация мгновенных, точных и детализированных оценок котировок | ✅ | ✅ |
live_carrier_quotes | Подтверждение оценок котировок у страховщиков | ✅ | ❌ |
Инструмент 1: quote_insurance
Назначение: генерация мгновенных детализированных оценок котировок от страховщиков, поддерживаемых Foresee, по всем линиям и штатам, которые Foresee в настоящее время обслуживает, одним вызовом.
Входные параметры
| Параметр | Тип | Обязательный | Детали |
|---|---|---|---|
profile | объект | да | см. Профиль |
lines | объект | да | Ключи — линии для оценки (auto, home, renters); значения — варианты покрытия для этой линии (см. Варианты покрытия) |
carriers | string[] | нет | По умолчанию — «все страховщики» |
include_partial | boolean | нет | false |
include_failures | boolean | нет | true |
Профиль
Основной профиль
Существует основной входной параметр profile, а также дополнительные блоки для автострахования и страхования жилья/аренды.
Обязательными полями являются только возраст (или dob), почтовый индекс и (для автострахования) данные о транспортном средстве.
Опущенные необязательные поля становятся заявленными допущениями: мы выбираем консервативную замену, которая возвращается как assumptions — например, annual_mileage = 12000, с записью tighten_by, перечисляющей допущения, которые сильнее всего повлияли бы на цену. prior_insurance означает страхование по той же линии; companion_policies означает страхование по другой линии
| Поле | Тип | Обязательное |
|---|---|---|
zip_code | строка | да |
age | целое число | да |
dob | строка, YYYY-MM-DD | допустимая альтернатива для age |
city | строка | нет |
gender | строка | нет |
marital_status | строка | нет |
education | строка | нет |
employment_status | строка | нет |
occupation | строка | нет |
credit_range | строка | нет |
home_ownership_status | строка | нет |
residence_type | строка | нет |
military_affiliation | строка | нет |
memberships | string[] | нет |
effective_date | строка | нет |
prior_insurance | объект | нет |
companion_policies | string[] | нет |
Профиль автострахования
| Поле | Тип | Обязательное |
|---|---|---|
auto.vehicles[].year | целое число | да |
auto.vehicles[].make | строка | да |
auto.vehicles[].model | строка | да |
auto.vehicles[].ownership | строка | нет |
auto.vehicles[].annual_mileage | целое число | нет |
auto.vehicles[].primary_use | строка | нет |
auto.vehicles[].garaging_zip | строка | нет |
auto.drivers[].relation | строка | нет (self для первого) |
auto.drivers[].dob | строка | нет |
auto.drivers[].years_licensed | целое число | нет |
auto.drivers[].accidents | объект[] | нет |
auto.drivers[].violations | объект[] | нет |
auto.drivers[].sr22_required | boolean | нет |
accidents и violations — списки структурированных объектов, где пустой список означает чистую историю.
Профиль страхования жилья и аренды
| Поле | Тип | Обязательное |
|---|---|---|
property.year_built | целое число | нет |
property.construction_type | строка | нет |
property.roof_type | строка | нет |
property.square_feet | целое число | нет |
property.protection_class | строка | нет |
property.replacement_cost | целое число | нет |
property.devices | string[] | нет |
property.losses | объект[] | нет |
Варианты покрытия
Каждый ключ в lines принимает варианты покрытия для этой линии. Ничто не оценивается по серверному умолчанию: оцениваются именно те варианты, которые вы передаёте.
Авто
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
bi | строка | да | Ответственность за телесные повреждения: травмы, причинённые вами другим людям. Лимит на человека/на случай в тысячах долларов, например "100/300" |
pd | целое число | да | Ответственность за ущерб имуществу: ущерб, причинённый вами чужим автомобилям и имуществу. Лимит в тысячах долларов, например 100 |
coll_deductible | целое число | да | Коллизия: ущерб вашему автомобилю при столкновении, независимо от виновника. Франшиза, которую вы платите за каждый случай, в долларах |
comp_deductible | целое число | да | Комплексное покрытие: ущерб вашему автомобилю от всего, кроме столкновения — кража, пожар, град, вандализм, наезд на животное. Франшиза, которую вы платите за каждый случай, в долларах |
um | строка | нет | Незастрахованный/недостаточно застрахованный водитель: ваши травмы, когда виновник не имеет страховки или её недостаточно. Лимит на человека/на случай в тысячах долларов, например "100/300" |
medpay | целое число | нет | Медицинские выплаты: медицинские счета для вас и ваших пассажиров, независимо от виновника. Лимит в долларах, например 5000 |
Жильё
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
coverage_a | целое число | да | Жилое строение: восстановление самого дома. Лимит в долларах, обычно стоимость восстановления |
coverage_e | целое число | да | Личная ответственность: травмы или ущерб, за которые вы несёте юридическую ответственность, на территории или вне её. Лимит в долларах |
coverage_f | целое число | да | Медицинские выплаты другим: медицинские счета гостя после травмы на вашей территории, независимо от виновника. Лимит в долларах |
aop_deductible | целое число | да | Франшиза по всем прочим рискам: сколько вы платите за каждый случай по всем рискам, кроме тех, у которых есть собственная франшиза (например, землетрясение). В долларах |
Покрытия B (другие строения, например отдельный гараж или забор), C (личное имущество — ваши вещи) и D (утрата возможности пользования — расходы на проживание, пока дом непригоден для жизни) не запрашиваются в долларах — они возвращаются в sel как соотношения к Покрытию A, которые были оценены.
Аренда
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
coverage_c | целое число | да | Личное имущество: ваши вещи. Лимит в долларах |
coverage_e | целое число | да | Личная ответственность: травмы или ущерб, за которые вы несёте юридическую ответственность. Лимит в долларах |
coverage_f | целое число | да | Медицинские выплаты другим: медицинские счета гостя после травмы в вашем доме, независимо от виновника. Лимит в долларах |
deductible | целое число | да | Сколько вы платите за каждый случай до начала покрытия. В долларах |
coverage_d | целое число | нет | Утрата возможности пользования: дополнительные расходы на проживание, если вам пришлось выехать на время ремонта. Лимит в долларах |
Формат ответа
| Префикс | Частота | Значение |
|---|---|---|
Q | один раз на линию | Что оценивалось: штат, линия бизнеса, выбор покрытия |
format: factors: | один раз на линию | Самодокументируемая легенда для всего ниже |
assumptions: | один раз на линию | Допущения, сделанные Foresee; high_impact: true означает, что это поле существенно влияет на оценку котировки |
tighten_by: | один раз на линию | Допущения/отсутствующие факты, которые сильнее всего повлияли бы на цену |
not_priced: | когда применимо | Исключённые страховщики с указанием причины |
C | один раз на страховщика | Страховщик, страхующая организация, ежемесячная премия (точечная оценка и доверительный интервал) |
W | по мере необходимости | Предупреждение, прикреплённое к страховщику выше — например, «Не оформляет государственный минимум BI / PD» |
L | один раз на страховщика | Ежемесячная стоимость по покрытию или риску |
F | много раз на страховщика | Один рейтинговый фактор на линию, названный в легенде factors:. Значения соответствуют один-к-одному кодам L: пусто = не затрагивает это покрытие, одно значение = применяется ко всем покрытиям. В скобках — строка, на которую попал профиль (ступень типа 100/300, факт типа 90066 или applied / not applied). Суффикс значения: нет = точное, ~ = производное, ? = оценочное |
D | на страховщика | Ценовые лестницы: для каждого рычага покрытия — каждая предлагаемая ступень как ±$/мес относительно указанной ежемесячной цены, при этом всё остальное зафиксировано на выбранном значении. +0.00 отмечает выбранную ступень; (asked X) = X не предлагается, и цена находится на ближайшей предлагаемой ступени. Переоценка из D; не вызывайте повторно |
Пример: авто
41-летний человек в почтовом индексе 90066 с Honda Civic 2021 года.
Mercury показывает обычную ячейку страховщика; Travelers тарифицирует через две возможные страхующие организации, поэтому его ячейка содержит сегмент ci (диапазон размещения). USAA попадает в not_priced с собственной причиной страховщика.
{
"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"]
}
Каждое опущенное поле профиля возвращается как заявленное допущение — жирный блок assumptions:
ниже вызван скудным запросом выше, а tighten_by: перечисляет семь ответов,
которые сильнее всего повлияли бы на цену. Mercury показывает обычную ячейку страховщика; Travelers тарифицирует через
две возможные страхующие организации, поэтому его ячейка содержит сегмент ci (диапазон размещения). USAA попадает в not_priced
с собственной причиной страховщика.
Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=BI Limit f1=Good Driver f2=Group Placement (Rule G) f3=PD Limit f4=UMBI Limit f5=Medical Payments Limit f6=Comprehensive Deductible f7=Collision Deductible f8=Vehicle Symbol f9=ca_good_driver_pri f10=group f11=UM Limit
assumptions: [{"assumed":"Male","field":"gender","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":12000,"field":"annual_mileage","high_impact":true},{"assumed":0,"field":"accidents_3yr","high_impact":true},{"assumed":0,"field":"violations_3yr","high_impact":true},{"assumed":false,"field":"dui","high_impact":true},{"assumed":false,"field":"currently_insured","high_impact":true},{"assumed":null,"field":"homeowner","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: annual_mileage,accidents_3yr,violations_3yr,dui,currently_insured,occupation,memberships
not_priced: usaa:USAA sells only to military members, veterans, and their fam
C mercury|Mercury Insurance Company|235.11
L BI:56.33,PD:44.10,UMBI:16.85,MP:0.97,COMP:17.49,COLL:99.38
F f0(100/300)=1.51,,,,,
F f1(applied)=0.8
F f2(not applied)=1.0
F f3(100)=,1.38,,,,
F f4(30/60)=,,1.65,,,
F f5(1000)=,,,1.0,,
F f6(500)=,,,,0.89,
F f7(500)=,,,,,1.0
D bi 100/300=15/30 *available through December 31, 2024:-19.03,25/50 *available through December 31, 2024:-14.18,30/60 *available on or after January 1, 2025:-9.70,50/100:-6.72,100/300:+0.00,250/500:+12.31,300/300:+12.68,500/500:+23.13
D pd 100=5:-15.34,10:-12.14,15:-9.27,25:-7.99,50:-2.88,100:+0.00,250:+2.56,300:+3.83
D coll_deductible 500=100:+19.87,200:+14.91,250:+12.42,500:+0.00,1000:-9.94,2000:-29.81,2500:-39.75
D comp_deductible 500=25:+25.74,50:+17.88,100:+11.00,200:+6.09,250:+2.75,500:+0.00,1000:-2.75,2000:-5.70,2500:-8.06
C travelers|Travelers Commercial Insurance Company|368.50|ci 327.21-415.00
L BI:149.00,PD:70.17,CP:15.50,CL:114.33,UMBI:19.50
F f0(100000/300000)=1.649,,,,
F f8(symbol AA)=1.009?,1.003?,,,
F f9(applied)=0.8
F f10(not applied)=1.0
F f3(100000)=,1.443,,,
F f6(500)=,,0.627,,
F f8(symbol 12)=,,0.941?,,
F f7(500)=,,,0.801,
F f8(symbol 17)=,,,1.013?,
F f11(30000/60000)=,,,,1.5
F f8(symbol 1)=,,,,1.0?
D pd 100=5:-21.50,10:-10.50,15:-6.67,25:-2.83,50:-0.67,100:+0.00,250:+0.50,300:+0.83,500:+1.17
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.
Коды L для авто — это покрытия, которые тарифицирует страховщик (объединённый BIPD, или раздельный BI/PD, плюс коллизия, комплексное покрытие, UM, сборы). Они не нормализованы по всей панели.
Пример: жильё
Тот же 41-летний человек, страхует каркасный дом, построенный в 1998 году, со стоимостью восстановления $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 повторяет B/C/D как соотношения к Покрытию A, которые были оценены. L Mercury — это
декомпозиция рисков (пожар, вода, лесные пожары, сборы); AAA подаёт пакетную премию вместо этого. Факты о жилье находятся в assumptions:/tighten_by: — здесь тип кровли, класс защиты и чистая история убытков.
Q CA home sel={"aop_deductible":1000,"coverage_a":450000,"coverage_b_pct":0.1,"coverage_c_pct":0.5,"coverage_d_pct":0.2,"coverage_e":300000,"coverage_f":1000}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=Deductible f1=Coverage A f2=Multiple Policy Discount (Automobile) f3=Personal Property Replacement Cost f4=Additional Replacement Cost f5=Ordinance or Law f6=Reduced Coverage Endorsement f7=Coverage E f8=Coverage F f9=Enhanced Home Package f10=Water Backup Limit f11=Other Perils Deductible (Table 5 relativity, additive) f12=Water Deductible (Table 5 relativity, additive) f13=Coverage A / Amount of Insurance Relativity (Table 5) f14=Package Discount (Exchange auto policy)
assumptions: [{"assumed":"Asphalt Shingle","field":"roof_type","high_impact":false},{"assumed":1,"field":"stories","high_impact":false},{"assumed":2,"field":"bathrooms","high_impact":false},{"assumed":1,"field":"families","high_impact":false},{"assumed":"Primary","field":"residency_type","high_impact":false},{"assumed":5,"field":"protection_class","high_impact":true},{"assumed":"Attached","field":"garage_type","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: protection_class,home_losses
C mercury|CALIFORNIA AUTOMOBILE INS CO|123.67
L P1_FIRE:34.69,P2_LIABILITY:6.39,P3_THEFT:6.40,P4_WIND:2.68,P5_WATER:61.56,P6_OTHER:3.57,P7_CAT_WIND:0.97,P10_CAT_WATER:0.04,P12_WILDFIRE:0.43,P13_FFEQ:1.36,WC_RESIDENCE_EMPLOYEES_910:0.67,FEE:3.75,FEE:1.16,FEE:0.01
F f0(1000)=0.95,,0.887,0.963,1.0,0.909,0.963,1.0,0.95,0.95,,,,
F f1(450000)=1.895,1.206,1.142,0.901,2.519,1.176,0.901,2.519,1.518,2.313,,,,
F f2(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f3(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f4(No)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f5(0.1)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f6(No)=1.0,,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,,,,
F f7(300000)=,1.5,,,,1.0,,,,,,,,
F f8(1000)=,1.5,,,,,,,,,,,,
F f9(No)=,,1.0,1.0,1.0,1.0,1.0,1.0,,,,,,
F f10(No)=,,,,1.0,,,1.0,,,,,,
D aop_deductible 1000=500:+13.38,1000:+0.00,1500:-5.38,2500:-21.45,3500:-26.58,5000:-37.01,10000:-48.28,25000:-63.01,50000:-72.51
D coverage_a 450000=30000:-90.60,65000:-82.94,95000:-76.38,130000:-68.81,165000:-61.24,195000:-54.76,230000:-47.27,265000:-39.79,295000:-33.39,330000:-25.82,365000:-18.34,395000:-11.94,430000:-4.37,445000:-1.17,450000:+0.00,455000:+1.01,465000:+3.20,500000:+10.86,570000:+26.34,630000:+39.88,700000:+56.03,770000:+72.77,830000:+87.49,900000:+105.41,970000:+124.09,2500000:+523.01,6000000:+1464.79
D coverage_e 300000=100000:-1.34,200000:-0.58,300000:+0.00,500000:+0.68,1000000:+4.04
D coverage_f 1000=1000:+0.00,2000:+0.17,5000:+0.42
C autoclub|Interinsurance Exchange of the Automobile Club|146.10
L Package:139.00,MedPayIL:0.00,LiabilityIL:2.08,BrushFire:0.00,FireFollowingEQ:3.42,FEE:1.60
F f11(1000)=0.393,,,,,
F f12(1000)=1.092,,,,,
F f13(450000)=1.485,,,,,
F f14(No)=1.0,,,,,
D aop_deductible 1000=500:+20.98,750:+7.59,1000:+0.00,1500:-11.45,2000:-16.93,3000:-21.06,5000:-25.36,10000:-28.73,15000:-51.90,20000:-63.44,25000:-71.53,30000:-77.34,50000:-90.49
D coverage_a 450000=60000:-120.65,90000:-115.51,110000:-110.96,130000:-105.66,150000:-99.59,170000:-92.85,190000:-86.53,220000:-76.17,250000:-64.54,280000:-54.09,320000:-40.02,350000:-29.15,360000:-26.54,400000:-16.00,440000:-3.62,450000:+0.00,460000:+2.45,480000:+9.44,550000:+32.95,650000:+77.19,750000:+98.00,850000:+116.62,950000:+147.71,2000000:+475.47,4000000:+1099.41,10000000:+2982.24
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.
Пример: аренда
Другое домохозяйство в том же почтовом индексе: 27-летний арендатор:
{
"profile": {"zip_code": "90066", "dob": "1998-11-11"},
"lines": {"renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}},
"carriers": ["farmers", "usaa"]
}
Q CA renters sel={"coverage_c":30000,"coverage_e":100000,"coverage_f":1000,"deductible":500}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead
factors: f0=Coverage C - Personal Property f1=Deductible f2=Coverage D - Loss of Use (% of C) f3=Additional Living Expense Term (months) f4=Contents Loss Settlement (ACV) f5=Enhanced Personal Property Coverage f6=Claims Free Discount f7=Multi-Policy Discount - Renter/auto f8=Multi-Policy Discount - Renter/life f9=Multi-Policy Discount - Renter/umbrella f10=Multi-Policy Discount - Renter/business f11=Multi-Policy Discount - Renter/boat f12=Multi-Policy Discount - Renter/motorhome f13=Multi-Policy Discount - Renter/recreational_vehicle f14=Multi-Policy Discount - Renter/cea f15=ZIP Code f16=Fireline Score f17=Experience Rating (points) f18=Coverage E - Personal Liability f19=Premises Rented to Others Solely Used as a Private Residence
assumptions: [{"assumed":2000,"field":"year_built","high_impact":false},{"assumed":5,"field":"protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: home_losses
not_priced: usaa:USAA sells only to military members, veterans, and their fam
C farmers|Fire Insurance Exchange|29.88
L PC1_PROPERTY:21.00,PC2_LIABILITY:8.17,FEE:0.42,FEE:0.30
F f0(30000)=1.087,,,
F f1(500)=1.0,,,
F f2(20)=1.0,,,
F f3(12)=1.0,,,
F f4(N)=1.0,,,
F f5(N)=1.0,,,
F f6(Y)=0.9,,,
F f7(N)=1.0,1.0,,
F f8(N)=1.0,1.0,,
F f9(N)=1.0,1.0,,
F f10(N)=1.0,1.0,,
F f11(N)=1.0,1.0,,
F f12(N)=1.0,1.0,,
F f13(N)=1.0,1.0,,
F f14(N)=1.0,1.0,,
F f15(90066)=1.423,,,
F f16(0)=1.0,,,
F f17(0)=1.0,,,
F f18(100000)=,1.0,,
F f19({})=,1.0,,
D deductible 500=100:+5.89,250:+1.85,500:+0.00,1000:-2.61,1500:-4.29,2500:-6.73
D coverage_c 30000=4000:-16.33,10000:-11.95,17000:-7.15,23000:-3.87,29000:-0.59,30000:+0.00,31000:+0.51,37000:+3.79,43000:+7.07,49000:+10.36,55000:+13.64,62000:+17.43,68000:+20.71,74000:+23.99,81000:+27.78,87000:+31.06,93000:+34.35,100000:+38.14,106000:+41.42,112000:+44.70,118000:+47.99,125000:+51.77,131000:+55.06,137000:+58.34,144000:+62.13,150000:+65.41
D coverage_e 100000=100000:+0.00,300000:+3.28,500000:+5.56,1000000:+10.69
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.
Пример: пакет авто + аренда
Тот же 27-летний арендатор, теперь с автомобилем. "incidents": [] означает чистую историю, поэтому вопросы о водительском стаже полностью пропускают assumptions:.
{
"profile": {
"zip_code": "90066",
"age": 27,
"incidents": [],
"prior_insurance": {"insured": true, "carrier": "GEICO", "since": "2019"},
"auto": {"vehicles": [{"year": 2021, "make": "Honda", "model": "Civic", "annual_mileage": 9000}]},
"property": {"year_built": 1978, "square_feet": 850}
},
"lines": {
"auto": {"bi": "100/300", "pd": 100, "coll_deductible": 500, "comp_deductible": 500},
"renters": {"coverage_c": 30000, "coverage_e": 100000, "coverage_f": 1000, "deductible": 500}
},
"carriers": ["farmers", "mercury"]
}
Поскольку теперь мы предоставляем историю, пробег и страховую историю, assumptions: для авто сокращаются до пяти записей, а его tighten_by: — до двух.
Однако раздел аренды объявляет собственные замены для жилья; Mercury тарифицирует только авто — отдельно, без
пакета. Farmers тарифицирует оба, предоставляя скидку 20%, что задокументировано в B.
Та же сводка передаётся через structuredContent как bundle: {farmers: {lines, bundle_total, standalone_total, savings}}.
Q CA auto sel={"bi":"100/300","coll_deductible":500,"comp_deductible":500,"pd":100}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead ; B carrier|bundled $/mo|standalone $/mo|saves $/mo = this carrier priced the asked lines together; the per-line C prices ARE the bundled prices
factors: f0=BI Limit f1=Good Driver f2=Group Placement (Rule G) f3=PD Limit f4=UMBI Limit f5=Medical Payments Limit f6=Comprehensive Deductible f7=Collision Deductible f8=Business & Professional Group f9=UM Limit
assumptions: [{"assumed":"Male","field":"gender","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":null,"field":"homeowner","high_impact":false},{"assumed":null,"field":"occupation","high_impact":true},{"assumed":null,"field":"memberships","high_impact":true}]
tighten_by: occupation,memberships
C mercury|Mercury Insurance Company|289.94
L BI:66.80,PD:52.55,UMBI:17.38,MP:1.05,COMP:23.50,COLL:128.67
F f0(100/300)=1.51,,,,,
F f1(applied)=0.8
F f2(not applied)=1.0
F f3(100)=,1.38,,,,
F f4(30/60)=,,1.65,,,
F f5(1000)=,,,1.0,,
F f6(500)=,,,,0.89,
F f7(500)=,,,,,1.0
D bi 100/300=15/30 *available through December 31, 2024:-22.56,25/50 *available through December 31, 2024:-16.81,30/60 *available on or after January 1, 2025:-11.50,50/100:-7.96,100/300:+0.00,250/500:+14.60,300/300:+15.04,500/500:+27.43
D pd 100=5:-18.28,10:-14.47,15:-11.04,25:-9.52,50:-3.43,100:+0.00,250:+3.05,300:+4.57
D coll_deductible 500=100:+25.74,200:+19.30,250:+16.09,500:+0.00,1000:-12.87,2000:-38.60,2500:-51.47
D comp_deductible 500=25:+34.59,50:+24.03,100:+14.79,200:+8.19,250:+3.70,500:+0.00,1000:-3.70,2000:-7.66,2500:-10.83
C farmers|Farmers Insurance Exchange|398.00
L BI:111.83,PD:73.33,UMBI:28.33,UMPD:1.50,MED:13.33,COMP:34.00,COLL:133.17,FEE:2.50
F f0(100000/300000)=1.46,,,,,,,
F f1(applied)=0.8,0.8,0.8,0.8,0.8,0.8,0.8,
F f8(not applied)=1.0,1.0,1.0,1.0,1.0,1.0,1.0,
F f3(100000)=,1.2674,,,,,,
F f9(30000/60000)=,,1.2788,,,,,
F f6(500)=,,,,,1.0009,,
F f7(500)=,,,,,,1.1986,
D pd 100=15:-8.83,25:-5.00,50:-1.50,100:+0.00,250:+1.33,500:+3.17
D coll_deductible 500=250:+30.67,500:+0.00,750:-13.67,1000:-23.50,1500:-37.50,2500:-56.33,5000:-87.00
D comp_deductible 500=100:+23.67,250:+9.17,500:+0.00,750:-7.17,1000:-10.67,1500:-13.50,2500:-18.83,5000:-21.17
Q CA renters sel={"coverage_c":30000,"coverage_e":100000,"coverage_f":1000,"deductible":500}
format: Q state [line] sel=<coverage_selection priced, JSON> ; C=carrier|entity|monthly|ci lo-hi ; tighten_by=missing facts that most move the price — offer to re-quote with the user's answers ; L COV:$,.. = monthly $ per coverage ; F fid(selected)=v,v,.. = rating factor, one value per coverage in the L order, blank=not applied, single value=all coverages, suffix ?=estimated ~=derived none=exact ; D lever selected=option:±$/mo vs the carrier's monthly, others held at the selection (selected(asked X) = X is not an option; the price is at the selected rung shown) ; W = warning — e.g. an asked limit is not offered and the price covers the nearest offered rung instead ; B carrier|bundled $/mo|standalone $/mo|saves $/mo = this carrier priced the asked lines together; the per-line C prices ARE the bundled prices
factors: f0=Coverage C - Personal Property f1=Deductible f2=Coverage D - Loss of Use (% of C) f3=Additional Living Expense Term (months) f4=Contents Loss Settlement (ACV) f5=Enhanced Personal Property Coverage f6=Claims Free Discount f7=Multi-Policy Discount - Renter/auto f8=Multi-Policy Discount - Renter/life f9=Multi-Policy Discount - Renter/umbrella f10=Multi-Policy Discount - Renter/business f11=Multi-Policy Discount - Renter/boat f12=Multi-Policy Discount - Renter/motorhome f13=Multi-Policy Discount - Renter/recreational_vehicle f14=Multi-Policy Discount - Renter/cea f15=ZIP Code f16=Fireline Score f17=Experience Rating (points) f18=Coverage E - Personal Liability f19=Premises Rented to Others Solely Used as a Private Residence
assumptions: [{"assumed":5,"field":"protection_class","high_impact":false},{"assumed":"Single","field":"marital_status","high_impact":false},{"assumed":[],"field":"home_losses","high_impact":true}]
tighten_by: home_losses
C farmers|Fire Insurance Exchange|24.06
L PC1_PROPERTY:16.80,PC2_LIABILITY:6.54,FEE:0.42,FEE:0.30
F f0(30000)=1.087,,,
F f1(500)=1.0,,,
F f2(20)=1.0,,,
F f3(12)=1.0,,,
F f4(N)=1.0,,,
F f5(N)=1.0,,,
F f6(Y)=0.9,,,
F f7(Y - Farmers)=0.8,0.8,,
F f8(N)=1.0,1.0,,
F f9(N)=1.0,1.0,,
F f10(N)=1.0,1.0,,
F f11(N)=1.0,1.0,,
F f12(N)=1.0,1.0,,
F f13(N)=1.0,1.0,,
F f14(N)=1.0,1.0,,
F f15(90066)=1.423,,,
F f16(0)=1.0,,,
F f17(0)=1.0,,,
F f18(100000)=,1.0,,
F f19({})=,1.0,,
D deductible 500=100:+4.71,250:+1.48,500:+0.00,1000:-2.09,1500:-3.43,2500:-5.38
D coverage_c 30000=4000:-13.06,10000:-9.56,17000:-5.72,23000:-3.10,29000:-0.47,30000:+0.00,31000:+0.41,37000:+3.03,43000:+5.66,49000:+8.29,55000:+10.91,62000:+13.94,68000:+16.57,74000:+19.19,81000:+22.22,87000:+24.85,93000:+27.48,100000:+30.51,106000:+33.14,112000:+35.76,118000:+38.39,125000:+41.42,131000:+44.05,137000:+46.67,144000:+49.70,150000:+52.33
D coverage_e 100000=100000:+0.00,300000:+2.62,500000:+4.45,1000000:+8.55
B farmers|422.06|427.88|5.82
present: Lead with the best option for this user — its price and a one-line reason — then a comparison sorted cheapest-first (Carrier · Monthly · 6-month total; a markdown table when your surface renders it) and the annual dollar spread between cheapest and priciest — that spread is the reason to compare. A B row's per-line prices assume every bundled line is placed with that carrier; for a cross-carrier mix, compare standalone totals. These are Foresee's estimates of what each carrier will charge; the assumptions and tighten_by blocks say how they were made and how to sharpen them. Foresee never takes payment: when the user settles on a carrier (or asks to buy), give that carrier's carrier_quote_url as a clickable link — the purchase completes on the carrier's own quoting portal.
Инструмент 2: live_carrier_quotes
Назначение: подтверждение оценок котировок на собственных сайтах котировок страховщиков.
Этот инструмент идемпотентен: первый вызов запускает компьютерных агентов; повторный вызов с теми же аргументами собирает прогресс и результаты первого вызова.
Живая отправка передаёт реальные данные пользователя страховщикам, которые могут выполнить мягкую кредитную проверку. Согласие пользователя запрашивается до вызова инструмента.
Foresee только собирает котировки; он не принимает платежи и не заключает страховые договоры.
Входные параметры
| Параметр | Тип | Обязательный | Детали |
|---|---|---|---|
profile | объект | да | Те же поля, что и в quote_insurance — рейтинговые факты |
lines | объект | да | Один ключ на линию для прохождения, каждое значение — запрос для этой линии (см. ниже); несколько ключей запускают пакетные прохождения |
user_authorization | строка | да | Подтверждение пользователя в чате, дословно (например, yes, go ahead) |
identity | объект | обычно | Данные пользователя. |
carriers | string[] | нет | Ограничить набор; по умолчанию — каждый страховщик с проверенным прохождением для линий + штата |
lines
| Строка | Запрос | Зачем |
|---|---|---|
auto | обязательно — те же четыре оси, что и в quote_insurance (bi, pd, coll_deductible, comp_deductible), в виде фактических чисел | Лимиты и франшизы, которые агенты запрашивают в формах страховщиков |
home | нет — {"home": null} | Форма самого страховщика оценивает его пакет (сумма жилья из его оценки стоимости замещения); агенты сообщают, что он выбрал. Переданный запрос отклоняется громко, а не молча игнорируется |
renters | обязательно — coverage_c, coverage_e, coverage_f, deductible, в виде фактических долларов | Агенты вводят числа пользователя в форму вместо принятия значений по умолчанию; Foresee никогда их не выдумывает |
Несколько ключей одновременно запускают объединённые проходы: каждый страховщик, который покрывает все указанные линии, проходит через свой собственный многострочный процесс котировки и сообщает премии по каждой линии плюс свой собственный итог по пакету; страховщик, покрывающий только некоторые линии, проходит только по ним. Правила запросов по каждой линии не меняются при объединении.
identity
| Поле | Тип | Обязательно | Детали |
|---|---|---|---|
first_name | строка | да | Юридическое имя |
last_name | строка | да | Юридическая фамилия |
dob | строка, YYYY-MM-DD | да | |
street | строка | да | Улица (строка 1) |
unit | строка | нет | Квартира/помещение (строка 2) |
city | строка | да | |
zip_code | строка | нет | Только если отличается от профиля |
email | строка | да | Страховщики отправляют котировку сюда |
phone | строка | нет |
Ответ
| Поле | Значение |
|---|---|
status | in_progress / partial / complete — повторный вызов с теми же аргументами для сбора |
agents | Одна запись на каждого страховщика (см. ниже) |
note | Что делать дальше, например, время повторного вызова, или что результаты предыдущего запуска были возвращены |
authorization_recorded | В квитанции: запись о согласии была сохранена до того, как любой страховщик увидел риск |
skipped | Страховщики, НЕ отправленные, каждый с причиной (no_deterministic_walk, missing_facts с указанными фактами) |
not_dispatched | Страховщики с оценкой движка, которых этот запуск не будет проходить, с причиной (held: …, no_walk, not_walked, offline, not_sold) — рекомендация, которую канал прохода не может подтвердить, никогда не исчезает молча |
needs | При отказе missing_facts: факты по каждому страховщику для сбора у пользователя, с точными путями схемы — и для полей с закрытым словарём, принятые values |
assumptions | Неподтверждённые второстепенные факты формы, которые проходы разрешили в заявленные ответы «нет претензий»: путь профиля (field) и отправленное значение (assumed) — передавайте каждый вместе с результатами |
confirmation | По каждому страховщику: мгновенная оценка движка рядом с напечатанной на странице премией — оценка пакета, если было пройдено несколько линий |
error / detail | Каждый отказ — это структурированный словарь {"error", "detail"} |
Каждая запись agents:
| Поле | Когда | Значение |
|---|---|---|
carrier_key, carrier | всегда | Ключ списка + отображаемое имя |
status | всегда | in_progress / complete / failed |
lines | всегда | Линии, которые покрывает этот проход — несколько при объединённом проходе |
stage, eta_seconds_remaining | в процессе | Где находится проход; оставшееся время относительно типичного процесса страховщика |
quote.premium | котировка | Дословно, как напечатано на странице страховщика ("$857.80") — никогда не разбирается, не округляется и не выводится |
quote.term_months | котировка | Период, который покрывает напечатанная премия |
quote.premium_by_line | котировка, объединённый проход | Премия по каждой линии, как напечатано на странице, рядом с итогом пакета в quote.premium |
quote.breakdown | котировка | Собственные позиции страницы, собственные метки |
quote.bound | котировка, более новые проходы | Покрытие, считанное с оценённой страницы — что форма фактически закрепила, против того, что было запрошено |
quote.variants | котировка | Дополнительные оценённые пакеты, предложенные страницей |
quote.quote_number | котировка | Номер получения страховщика, если страница его показывает |
quote.evidence_recorded | котировка | Доказательства скриншотов существуют на сервере (внутренние URI никогда не передаются по сети) |
declined: true + detail | отклонено | Страховщик рассмотрел детали и отказался котировать. Это ответ, а не ошибка — передайте его |
detail | сбой | Собственные слова прохода о том, где и почему он остановился |
Отказы
Каждый отказ — это структурированный объект {"error", "detail"} — ничего не было
отправлено ни одному страховщику, если строка ниже не говорит иное.
| Код | Когда | Что делать |
|---|---|---|
profile_required | Факты домохозяйства отправлены на верхнем уровне, без обёртки profile | Повторный вызов с фактами, обёрнутыми, как показано в example_arguments отказа |
authorization_required | Вызов без согласия пользователя | Объясните факты согласия, получите «да», передайте его дословно в user_authorization |
bad_identity | drivers_license_number в форме SSN | SSN никогда не собираются; отправьте номер лицензии, как напечатано на лицензии |
bad_profile | Поле профиля не проходит валидацию | detail называет поле |
one_line_per_dispatch | Пустая карта lines | Укажите хотя бы одну линию для прохода |
unknown_line | Линия без прохода (например, umbrella) | detail перечисляет линии, известные живому запуску |
coverage_selection_required | Проход авто или аренды без полных лимитов и франшиз | Повторный вызов с числами — проходы вводят реальные значения, никогда не значения по умолчанию |
bad_ask | Проход дома с запросом покрытия | Отправьте {"home": null} — форма самого страховщика оценивает его пакет |
missing_facts | Форма ни одного запрошенного страховщика не может быть заполнена из профиля | Запросите у пользователя факты needs[].fields[] (используя их values, где предоставлено) и повторите вызов — см. ниже |
no_carriers | Ни у одного страховщика нет проверенного прохода для этой линии + штата | Откатитесь к quote_insurance |
launch_failed | Агенты не смогли запуститься | Ничего не достигло ни одного страховщика — повторная попытка безопасна |
Пример: авто
Домохозяйство из Фресно подтверждает собственный номер GEICO. Профиль содержит факты,
на которых настаивает форма GEICO (владение, срок покупки, предыдущая страховка, возраст
первого получения прав…); identity — реальный заявитель; запрос — те же четыре оси, что и
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."
}
Повторный вызов с теми же аргументами позже собирает завершённый проход.
Премия — это собственная строка страницы; breakdown — собственные метки страницы
(GEICO напечатал два пакета рядом); term_months говорит, что покрывает число —
$857.80 за 6 месяцев, а не в месяц.
{
"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
}
}
]
}