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); значения — варианты покрытия для этой линии (см. Варианты покрытия)
carriersstring[]нетПо умолчанию — «все страховщики»
include_partialbooleanнетfalse
include_failuresbooleanнет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строканет
membershipsstring[]нет
effective_dateстроканет
prior_insuranceобъектнет
companion_policiesstring[]нет

Профиль автострахования

ПолеТипОбязательное
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_requiredbooleanнет

accidents и violations — списки структурированных объектов, где пустой список означает чистую историю.

Профиль страхования жилья и аренды

ПолеТипОбязательное
property.year_builtцелое числонет
property.construction_typeстроканет
property.roof_typeстроканет
property.square_feetцелое числонет
property.protection_classстроканет
property.replacement_costцелое числонет
property.devicesstring[]нет
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объектобычноДанные пользователя.
carriersstring[]нетОграничить набор; по умолчанию — каждый страховщик с проверенным прохождением для линий + штата

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строканет

Ответ

ПолеЗначение
statusin_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_identitydrivers_license_number в форме SSNSSN никогда не собираются; отправьте номер лицензии, как напечатано на лицензии
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
      }
    }
  ]
}