Foresee
официальныйForesee позволяет ИИ-ассистентам сравнивать страхование жилья и авто по всем страховщикам и вариантам покрытия, предоставляя мгновенные, точные и детализированные оценки котировок.
Что можно делать с Foresee MCP?
-
Compare home and auto insurance quotes — Запросите мгновенные детализированные расценки от нескольких страховщиков и вариантов покрытия в одном звонке через
quote_insurance. -
Get live carrier confirmations — Запросите проверку котировок в реальном времени непосредственно с сайтов страховщиков, с вашего согласия, с помощью
live_carrier_quotes. -
Price auto coverage with specific limits — Укажите лимиты на телесные повреждения, ущерб имуществу и франшизы (например,
bi,coll_deductible), чтобы увидеть детализированные ежемесячные расходы по каждому страховщику. -
Estimate home or renters policies — Предоставьте данные о недвижимости и суммы покрытия (например,
coverage_a,deductible), чтобы получить расценки на жилье, ответственность и личное имущество. -
Identify missing facts that move prices — Уточните, какие пропущенные поля профиля (например,
annual_mileage,prior_insurance) больше всего влияют на котировки, черезtighten_byиassumptionsв ответах.
Размещённый MCP-сервер
npx add-mcp 'https://agents.go-foresee.com/mcp'Устанавливается в Claude Code, Codex, Cursor и другие
Документация
Документация
Для AI-агентов: индекс сайта находится на /llms.txt, а полный текст — на /llms-full.txt.
Foresee позволяет AI-ассистентам сравнивать страхование жилья и автомобилей по всем страховщикам и вариантам покрытия, предоставляя мгновенные, точные и детализированные оценки котировок.
Использование 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 | object | да | см. Профиль |
lines | object | да | Ключи — это линии для оценки (auto, home, renters); значения — варианты покрытия для этой линии (см. Варианты покрытия) |
carriers | string[] | нет | По умолчанию — «все страховщики» |
include_failures | boolean | нет | true |
Профиль
Основной профиль
Существует основной входной параметр profile, а также дополнительные блоки для автострахования и страхования жилья/аренды.
Обязательными полями являются только возраст (или dob), ZIP-код и (для автострахования) данные о транспортном средстве.
Опущенные необязательные поля становятся заявленными допущениями: мы выбираем консервативную замену, о которой сообщается как assumptions — например, auto.vehicles[].annual_mileage = 12000, с записью tighten_by, перечисляющей допущения, которые больше всего повлияют на цену. prior_insurance означает страхование по той же линии; companion_policies означает страхование по другой линии.
| Поле | Тип | Обязательное |
|---|---|---|
zip_code | string | да |
age | integer | да |
dob | string, YYYY-MM-DD | допустимая альтернатива для age |
city | string | нет |
gender | string | нет |
marital_status | string | нет |
education | string | нет |
employment_status | string | нет |
occupation | string | нет |
credit_range | string | нет |
home_ownership_status | string | нет |
residence_type | string | нет |
military_affiliation | string | нет |
memberships | string[] | нет |
effective_date | string | нет |
prior_insurance | object | нет |
companion_policies | object[] — {line, carrier} | нет |
companion_policies перечисляет полисы, которые уже есть у домохозяйства, каждый с указанием страховщика, который его оформляет — {"line": "home", "carrier": "State Farm"}. Скидка за несколько полисов применяется только к полису, который оформляет страховщик, поэтому полис без указания страховщика не дает скидки, и в котировке запрашивается страховщик в поле tighten_by.
Профиль автострахования
| Поле | Тип | Обязательное |
|---|---|---|
auto.vehicles[].year | integer | да |
auto.vehicles[].make | string | да |
auto.vehicles[].model | string | да |
auto.vehicles[].ownership | string | нет |
auto.vehicles[].annual_mileage | integer | нет |
auto.vehicles[].primary_use | string | нет |
auto.vehicles[].garaging_zip | string | нет |
auto.drivers[].relation | string | нет (self для первого) |
auto.drivers[].dob | string | нет |
auto.drivers[].years_licensed | integer | нет |
auto.drivers[].accidents | object[] | нет |
auto.drivers[].violations | object[] | нет |
auto.drivers[].sr22_required | boolean | нет |
accidents и violations — это списки записей с датами — {"on": "2025-01", "kind": "speeding"}, {"on": "2023-06-15", "at_fault": true} — где пустой список означает чистую историю. Запись без on (или нарушение без kind) отклоняется с указанием ее пути.
Профиль страхования жилья и аренды
| Поле | Тип | Обязательное |
|---|---|---|
property.year_built | integer | нет |
property.construction_type | string | нет |
property.roof_type | string | нет |
property.square_feet | integer | нет |
property.protection_class | string | нет |
property.replacement_cost | integer | нет |
property.devices | string[] | нет |
property.losses | object[] | нет |
Варианты покрытия
Каждый ключ в lines принимает варианты покрытия для этой линии. Ничего не оценивается по умолчанию на сервере: оцениваются именно те варианты, которые вы передаете.
Авто
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
bi | string | да | Ответственность за телесные повреждения: травмы, причиненные вами другим людям. Лимит на человека/на случай в тысячах долларов, например "100/300" |
pd | integer | да | Ответственность за ущерб имуществу: ущерб, причиненный вами чужим автомобилям и имуществу. Лимит в тысячах долларов, например 100 |
coll_deductible | integer | да | Коллизия: ущерб вашему автомобилю при аварии, независимо от виновника. Франшиза, которую вы платите за каждый случай, в долларах |
comp_deductible | integer | да | Комплексное покрытие: ущерб вашему автомобилю от всего, кроме аварии — кража, пожар, град, вандализм, столкновение с животным. Франшиза, которую вы платите за каждый случай, в долларах |
um | string | нет | Страхование от незастрахованного/недостаточно застрахованного водителя: ваши травмы, когда виновник не имеет страховки или ее недостаточно. Лимит на человека/на случай в тысячах долларов, например "100/300" |
medpay | integer | нет | Медицинские выплаты: медицинские счета для вас и ваших пассажиров, независимо от виновника. Лимит в долларах, например 5000 |
Жилье
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
coverage_a | integer | да | Жилое строение: восстановление самого дома. Лимит в долларах, обычно стоимость восстановления |
coverage_e | integer | да | Личная ответственность: травмы или ущерб, за которые вы несете юридическую ответственность, на территории или вне ее. Лимит в долларах |
coverage_f | integer | да | Медицинские выплаты другим: медицинские счета гостя после травмы на вашей территории, независимо от виновника. Лимит в долларах |
aop_deductible | integer | да | Франшиза по всем прочим рискам: что вы платите за каждый случай для всего, кроме рисков с собственной франшизой (например, землетрясение). В долларах |
Покрытия B (другие строения, такие как отдельный гараж или забор), C (личное имущество — ваши вещи) и D (потеря возможности использования — расходы на проживание, пока дом непригоден для жизни) не запрашиваются в долларах — они возвращаются в sel как соотношения к покрытию A, которые были оценены.
Аренда
| Вариант | Тип | Обязательный | Что покрывает |
|---|---|---|---|
coverage_c | integer | да | Личное имущество: ваши вещи. Лимит в долларах |
coverage_e | integer | да | Личная ответственность: травмы или ущерб, за которые вы несете юридическую ответственность. Лимит в долларах |
coverage_f | integer | да | Медицинские выплаты другим: медицинские счета гостя после травмы в вашем доме, независимо от виновника. Лимит в долларах |
deductible | integer | да | Что вы платите за каждый случай до начала покрытия. В долларах |
coverage_d | integer | нет | Потеря возможности использования: дополнительные расходы на проживание, если вам придется выехать на время ремонта. Лимит в долларах |
Формат ответа
Оцененный результат полностью поступает в structuredContent; content пуст. Детализация тарификации — это поле dense: компактный машинный текст, одна секция на строку, показанный в блоках response ниже. Рядом с ним находятся основные поля для каждой линии в разделе by_line (страховщики с monthly, confidence_interval, carrier_quote_url, warnings, rated_vs_asked; плюс assumptions, tighten_by, failures), а также presentation (как представлять цены), bundle и skipped вверху. Отказы (profile_required, coverage_required) — это обычный JSON без dense.
| Префикс | Частота | Значение |
|---|---|---|
Q | один раз на строку | Что оценивалось: штат, линия бизнеса, выбор покрытия |
assumptions: | один раз на строку | Допущения, сделанные Foresee; high_impact: true означает, что это поле существенно влияет на оценку котировки |
tighten_by: | один раз на строку | Пути профиля для отсутствующих фактов, которые больше всего повлияют на цену |
not_priced: | при применимости | Исключенные страховщики с указанием причины |
C | один раз на страховщика | Страховщик, оформляющая организация, ежемесячная премия (точечная оценка и доверительный интервал) |
W | по мере необходимости | Примечание о страховщике выше, например, отсутствие онлайн-страницы котировок |
L | один раз на страховщика | Ежемесячная стоимость по каждому покрытию под кодами, которые означают одно и то же покрытие у каждого страховщика (BI, PD, UMBI, MEDPAY, COMP, COLL…); A+B — это одна премия, покрывающая оба, FEE — фиксированная плата |
D | на страховщика | Ценовые лестницы: для каждого рычага покрытия каждая предлагаемая ступень как ±$/мес относительно указанной ежемесячной цены, при этом все остальное удерживается на выбранном уровне. +0.00 отмечает выбранную ступень; (asked X) = X не предлагается, и цена устанавливается на ближайшей предлагаемой ступени. Пересчитывайте цену из D; не вызывайте повторно |
Пример: авто
41-летний человек в ZIP-коде 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}
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
Пример: жилье
Тот же 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 каждого страховщика — это его базовая премия (HO_BASE) плюс сборы. Данные о жилом строении находятся в 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}
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
Пример: аренда
Другое домохозяйство в том же ZIP-коде: 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}
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
Пример: авто + аренда
Тот же 27-летний арендатор, теперь с автомобилем. Пустые списки violations и accidents означают чистую историю, поэтому вопросы о водительской истории полностью пропускают assumptions:.
{
"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"]
}
Поскольку теперь мы предоставляем историю, пробег и страховую историю, авто assumptions: сокращаются до восьми записей, а его tighten_by: — до пяти.
Секция аренды объявляет свои собственные замены для жилого строения. Mercury оценивает только авто; Farmers оценивает обе линии.
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
Инструмент 2: live_carrier_quotes
Назначение: подтверждение оценок котировок на собственных сайтах котировок страховщиков.
Этот инструмент идемпотентен: первый вызов запускает агентов компьютерного использования; повторный вызов с теми же аргументами собирает прогресс и результаты первого вызова.
Живая отправка передает реальные данные пользователя страховщикам, которые могут выполнить мягкую проверку кредитоспособности. Согласие пользователя запрашивается до вызова инструмента.
Foresee только собирает котировки; он не принимает платежи и не оформляет страховку.
Входные параметры
| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
profile | объект | да | Те же поля, что и quote_insurance — факты для рейтинга |
lines | объект | да | Один ключ на линию для обхода, каждое значение — запрос этой линии (см. ниже); несколько ключей запускают объединённые обходы |
user_authorization | строка | да | Подтверждение пользователя в чате, дословно (например, yes, go ahead) |
identity | объект | обычно | Данные пользователя. |
carriers | строка[] | нет | Ограничить выбор страховщиков; по умолчанию — каждый страховщик с проверенным обходом для линий + штата |
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) — передавайте каждый вместе с результатами |
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
}
}
]
}