Get umbrella and homeowners insurance quotes, select a policy, and bind coverage.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Estimate monthly auto premiums for one driver and vehicle profile across several carriers. Returns each carrier's id, name, and monthly premium spread (lowest, lower, median, upper, and highest modeled premium) in US dollars, plus the normalized inputs the model used. These are model estimates for research, not bindable quotes.
Age in years of the driver being priced; the model converts it to a birth year.
ZIP code for the driver or garaging location being priced.
Two-letter state code for the garaging address or rating state.
Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified.
Vehicle manufacturer, such as `Toyota` or `Honda`.
Optional deterministic seed for the estimate sample when a caller wants stable repeat runs.
Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead.
Vehicle model, such as `Camry` or `Civic`.
Vehicle trim, body style, or submodel when you want to narrow the vehicle match.
Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000.
Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000.
Estimate monthly auto premiums for one driver and vehicle profile across several carriers. Returns each carrier's id, name, and monthly premium spread (lowest, lower, median, upper, and highest modeled premium) in US dollars, plus the normalized inputs the model used. These are model estimates for research, not bindable quotes.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age in years of the driver being priced; the model converts it to a birth year. |
| zip* | string | ZIP code for the driver or garaging location being priced. |
| make | string | Vehicle manufacturer, such as `Toyota` or `Honda`. |
| seed | integer | Optional deterministic seed for the estimate sample when a caller wants stable repeat runs. |
| year | integer | Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead. |
| model | string | Vehicle model, such as `Camry` or `Civic`. |
| state* | string | Two-letter state code for the garaging address or rating state. |
| style | string | Vehicle trim, body style, or submodel when you want to narrow the vehicle match. |
| gender* | string | Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified. |
| collision_deductible | integer | Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000. |
| comprehensive_deductible | integer | Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000. |
{
"type": "object",
"required": [
"state",
"zip",
"age",
"gender"
],
"properties": {
"age": {
"type": "integer",
"minimum": 16,
"description": "Age in years of the driver being priced; the model converts it to a birth year."
},
"zip": {
"type": "string",
"description": "ZIP code for the driver or garaging location being priced."
},
"make": {
"type": "string",
"description": "Vehicle manufacturer, such as `Toyota` or `Honda`."
},
"seed": {
"type": "integer",
"description": "Optional deterministic seed for the estimate sample when a caller wants stable repeat runs."
},
"year": {
"type": "integer",
"description": "Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead."
},
"model": {
"type": "string",
"description": "Vehicle model, such as `Camry` or `Civic`."
},
"state": {
"type": "string",
"description": "Two-letter state code for the garaging address or rating state."
},
"style": {
"type": "string",
"description": "Vehicle trim, body style, or submodel when you want to narrow the vehicle match."
},
"gender": {
"type": "string",
"description": "Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified."
},
"collision_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000."
},
"comprehensive_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000."
}
},
"additionalProperties": true
}Estimate what collision and comprehensive coverage cost for one driver and vehicle profile, to help decide whether to carry them. Returns monthly premium spreads in US dollars with no physical-damage coverage, collision only, and both, plus collision-only and both after one claim, and cumulative premium projections for each coverage option over projection_years. These are model estimates, not bindable quotes.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age in years of the driver being priced; the model converts it to a birth year. |
| zip* | string | ZIP code for the driver or garaging location being priced. |
| make | string | Vehicle manufacturer, such as `Toyota` or `Honda`. |
| seed | integer | Optional deterministic seed for the estimate sample when a caller wants stable repeat runs. |
| year | integer | Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead. |
| model | string | Vehicle model, such as `Camry` or `Civic`. |
| state* | string |
Continue a consumer-prefill homeowners or umbrella handoff in chat. Returns the intake's status and detail_status, whether the application is submitted, the staged review and next_question, quoted offers with their selection_token, and any post-choose, payment, policy, or conversation state. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the default consumer-operated subset and, before submission, say explicitly that the application is not submitted yet. For homeowners, treat `missing_fields` as hidden enrichment backlog, keep recovering context-backed facts, reserve one final review turn, and use `consumer_intake_patch` with `message_reply` when `conversation.reply_pending` surfaces insurer or shopper follow-up. For umbrella, keep missing fields hidden until Coverage Cat stages the single pre-submit review turn, then ask only for the explicitly missing shopper-owned fields in `next_question` and invite corrections instead of re-keying reviewed values. Coverage Cat will not resume or expose a prior consumer umbrella draft based on email alone. Continue an existing consumer draft only through the issued uid plus the current hidden MCP session or latest intake_access_token handoff. Normalize shopper birthdays from MM-DD-YYYY to YYYY-MM-DD before you patch Coverage Cat.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake_access_token | string |
Patch or submit a consumer-prefill homeowners or umbrella handoff in chat. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the default consumer-operated subset. For homeowners, use `intake` to add context-backed or property-backed answers while keeping the user out of a questionnaire until the one-time review, and after submission use `message_reply` plus optional `reply_to_message_id` for insurer or shopper follow-up surfaced under `conversation.messages`. For umbrella, use the staged review turn to send only explicitly missing shopper-owned details plus corrections, set `confirm_submission` only on that final review confirmation, do not send vehicles rows on this pre-submit patch, and do not ask for umbrella credit consent here. Normalize shopper birthdays from MM-DD-YYYY to YYYY-MM-DD, and tell the shopper the application is not submitted yet until you actually submit it. Returns the same follow-up payload as `consumer_intake_issues` for the updated intake.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake | object | Top-level intake edits. For umbrella, send only missing shopper-owned details, corrections, or canonical umbrella count fixes such as umbrella_details.motorized_vehicle_count. Do not send vehicles rows on this pre-submit patch. |
Read one Coverage Cat docs resource by URI from the default consumer MCP and return its URI, public href (null when it has no public page), MIME type, and full markdown, JSON, or YAML text.
| Argument | Type | Description |
|---|---|---|
| uri* | string | A coveragecat:// or ui:// resource URI from docs_list_topics or docs_search. |
{
"type": "object",
"required": [
"uri"
],
"properties": {
"uri": {
"type": "string",
"description": "A coveragecat:// or ui:// resource URI from docs_list_topics or docs_search."
}
},
"additionalProperties": false
}List Coverage Cat documentation topics from the same consumer MCP connection and return each topic's title, category, URI, MIME type, summary, and public href.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many topics to return from the start of the filtered catalog. Omit it to get up to 25. |
| category | string | Docs category to browse: `developers` for guides such as quickstart, auth, sandbox, and MCP setup, `api` for discovery and OpenAPI documents, `skills` for runtime skill guides, or `all`. Omit it to browse every category. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "How many topics to return from the start of the filtered catalog. Omit it to get up to 25."
},
"category": {
"enum": [
"all",
"developers",
"api",
"skills"
],
"type": "string",
"description": "Docs category to browse: `developers` for guides such as quickstart, auth, sandbox, and MCP setup, `api` for discovery and OpenAPI documents, `skills` for runtime skill guides, or `all`. Omit it to browse every category."
}
},
"additionalProperties": false
}Search quickstart, auth, sandbox, OpenAPI, and runtime skill docs on this consumer MCP connection. Topics are ranked by how many query words appear in their title, summary, URI, or category; each match carries its title, category, URI, MIME type, summary, and public href, and an empty matches list means no topic contains any query word. Pass a match's uri to docs_get_resource to read it.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many of the best-ranked topics to return. Omit it to get the top 5. |
| query* | string | Search terms describing the documentation need. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1,
"description": "How many of the best-ranked topics to return. Omit it to get the top 5."
},
"query": {
"type": "string",
"description": "Search terms describing the documentation need."
}
},
"additionalProperties": false
}Estimate whether filing an auto collision claim costs more than paying for the repair yourself. Returns monthly premium spreads with and without one claim, the monthly and multi-year premium increase, the collision deductible, the total cost of filing (deductible plus premium increase), and a file_claim or pay_out_of_pocket recommendation with the estimated savings. These are model estimates, not carrier quotes.
| Argument | Type | Description |
|---|---|---|
| age* | integer | Age in years of the driver being priced; the model converts it to a birth year. |
| zip* | string | ZIP code for the driver or garaging location being priced. |
| make | string | Vehicle manufacturer, such as `Toyota` or `Honda`. |
| seed | integer | Optional deterministic seed for the estimate sample when a caller wants stable repeat runs. |
| year | integer | Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead. |
| model | string | Vehicle model, such as `Camry` or `Civic`. |
| state* | string | Two-letter state code for the garaging address or rating state. |
Estimate annual and monthly home insurance ranges for a California property and return the normalized inputs, available risk-factor ids, and ZIP-level context notes that explain the estimate.
| Argument | Type | Description |
|---|---|---|
| zip* | string | ZIP code for the California property being estimated. |
| home_sqft* | integer | Approximate finished living area of the home in square feet. |
| risk_factors | array | Optional Coverage Cat risk-factor ids, such as `pool` or `old_systems`, for property traits that can change premium. |
{
"type": "object",
"required": [
"zip",
"home_sqft"
],
"properties": {
"zip": {
"type": "string",
"description": "ZIP code for the California property being estimated."
},
"home_sqft": {
"type": "integer",
"maximum": 25000,
"minimum": 1,
"description": "Approximate finished living area of the home in square feet."
},
"risk_factors": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional Coverage Cat risk-factor ids, such as `pool` or `old_systems`, for property traits that can change premium."
}
},
"additionalProperties": false
}Find licensed homeowners insurance agents near a ZIP code using state department of insurance licensing data. California searches return agents within 75 miles, nearest first; Texas searches return agents in the same ZIP. ZIP codes in other states return an empty agents list alongside supported_states. Each agent record includes name, agency, license, lines, location, contact details, and source links.
| Argument | Type | Description |
|---|---|---|
| zip* | string | ZIP code to search for nearby homeowners agents. |
| limit | integer | How many agent records to return. Omit it to get up to 25; Coverage Cat returns at most 50 even when asked for more. |
| lines | array | Insurance lines the agent should handle, such as `homeowners`, `condominium`, `dwelling_fire`, or `renters`; an agent listed for any of them matches, and synonyms such as `condo` are normalized. Omit it to search homeowners agents. |
{
"type": "object",
"required": [
"zip"
],
"properties": {
"zip": {
"type": "string",
"description": "ZIP code to search for nearby homeowners agents."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "How many agent records to return. Omit it to get up to 25; Coverage Cat returns at most 50 even when asked for more."
},
"lines": {
"type": "array",
"items": {
"type": "string"
},
"description": "Insurance lines the agent should handle, such as `homeowners`, `condominium`, `dwelling_fire`, or `renters`; an agent listed for any of them matches, and synonyms such as `condo` are normalized. Omit it to search homeowners agents."
}
},
"additionalProperties": false
}Confirm the previewed homeowners offer after `homeowners_consumer_select` returns `ready_to_finalize`. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Reuse the returned preview_token, set bind_confirmed: true, and stay on the same consumer-operated follow-up tool set. Coverage Cat cannot collect homeowners payment in chat; any carrier payment or signing link is emailed to the customer's email on file.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by the earlier homeowners consumer-prefill or follow-up response. |
| preview_token* | string | Preview token returned by `homeowners_consumer_select` in the `ready_to_finalize` response for this exact offer. |
| bind_confirmed* | boolean | Attests that the shopper approved the previewed homeowners bind terms in chat, including email delivery of any carrier payment or signing links. |
| idempotency_key | string | Key you generate to identify one logical homeowners_consumer_bind request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
Read the current bound or cancelled homeowners policy record, policy documents, and any existing cancellation, refund, or support request history. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Use this read-only tool after Coverage Cat reports a policy on file, or after a service request is opened, to show policy facts without switching to delegated tools.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"additionalProperties": false
}Preferred homeowners MCP entry point when a shopper wants Coverage Cat to shop for, compare, or buy homeowners insurance and no operator bearer token is present. On a cold start, ask only for the user's name, email, property address, and whether this should be standard homeowners, condo, or landlord coverage. If that coverage type is still unknown, ask the shopper to reply with exactly one of `standard homeowners`, `condo`, or `landlord`, then enrich from user-controlled context and property sources before handing off to Coverage Cat. Recover core shopper and occupancy facts from that context before relying on estimated review data. Stay on the same consumer-operated subset through review, quote polling, `homeowners_consumer_select`, `homeowners_consumer_bind`, `homeowners_consumer_policy`, and `homeowners_consumer_service`. Homeowners quotes or carrier bind follow-up may take up to 48 hours. If `consumer_intake_issues` returns `conversation.reply_pending`, answer in chat with `consumer_intake_patch` and `message_reply`. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Homeowners payment or signing links must be sent to the customer's own email inbox on file. Until submission, tell the shopper the application is not submitted yet.
| Argument | Type | Description |
|---|---|---|
| intake* | object | Fullest currently known homeowners application assembled from the user's own context: shopper name and email plus a `home` row (object or one-row array) with the property street, city, state, and zip, and the home_ownership and property_type that distinguish standard homeowners, condo, or landlord coverage. |
| field_estimates | array | Provenance for home values you inferred from context or property data rather than heard from the shopper, one row per inferred value. Coverage Cat stores the rows on the first `intake.home` row. |
Continue the consumer-prefill homeowners flow after quotes are ready. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset, use the returned selection_token, and let Coverage Cat stage the exact selected offer for one final bind approval in chat. This select step does not collect payment and does not start carrier bind follow-up yet.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| idempotency_key | string | Key you generate to identify one logical homeowners_consumer_select request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| selection_token* | string | selection_token of the shopper's chosen offer from `offers[]` in the latest quoted follow-up response. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
Preview or open a cancellation, refund, or support request for a consumer homeowners policy. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset after bind. Preview the consequences first, then send confirm_request: true only after the shopper approves opening the request. Do not describe a cancellation, refund, or support issue as completed until Coverage Cat confirms the final outcome.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid for the current shopper session. |
| reason* | string | Short shopper-approved reason for the request. |
| details | string | Shopper-approved context beyond the short reason, such as the specifics of a billing dispute, recorded on the request and its preview. |
| request_type* | string | What the shopper wants done after purchase. `policy_cancellation` asks the carrier to end the policy on requested_effective_date; `refund_request` asks the carrier or billing provider to review a refund or outstanding balance without changing coverage; `support_case` opens a general support case for anything else. |
Research-only estimate of annual personal umbrella pricing bands, the inferred risk class, and per-factor impacts for directional pricing. Use this for price exploration, not when the shopper wants Coverage Cat to shop for or buy umbrella insurance.
| Argument | Type | Description |
|---|---|---|
| zip* | string | ZIP code for the household being priced. |
| jet_skis | integer | Count of personal watercraft such as jet skis. |
| auto_count | integer | How many cars, trucks, or SUVs are in the household auto profile. |
| motorcycles | integer | How many motorcycles should be added to the total vehicle exposure. |
| property_count | integer | How many residential properties the household owns or carries liability for. |
| drivers_over_70 | integer | Number of drivers in the household who are 70 or older. |
| antique_vehicles | integer | How many collector or antique vehicles should be counted in the risk profile. |
| drivers_under_22 | integer |
Upload declarations or auto declarations during the consumer-prefill umbrella post-choose flow. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset. Use only after selection and only when Coverage Cat says documents are needed. If both the home and auto files are already available, prefer one attach call with attachments so the shopper only approves one upload turn. If your runtime already has the files on disk or can stream raw bytes, prefer the REST binary `/api/intake/{uid}/attach-upload` fallback instead of hand-building base64. The upload itself is usually quick once the files are available, and secure checkout is usually ready about 5-10 minutes after Coverage Cat has the uploads on file.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| type | string | Which policy the declarations page belongs to: `declarations` for the home, condo, renters, or landlord policy, or `auto_declarations` for the auto policy. Match the upload types Coverage Cat listed in `required_upload_types`. |
| content | string | The whole declarations document named by filename, not an excerpt, summary, or extracted text. |
Continue the consumer-prefill umbrella bind follow-up only after select returns needs_more_info_to_bind or ready_to_finalize. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset and send only the current bind-stage fields inside `intake`. This later bind-stage follow-up is where actual vehicle details may appear for selected offers such as Markel; do not move that question into the pre-submit review.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake | object | Answers to the current bind-stage next_question, keyed by the field names Coverage Cat asked for, such as vehicle details for a selected Markel offer. |
| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_bind request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| intake_access_token | string |
Prepare secure Stripe payment collection or submit the resulting payment method during the consumer-prefill umbrella post-choose flow. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset. Use this only after Coverage Cat says payment_needed. First call it with payment_collection_requested: true; do not send the shopper straight to payment_url before you try this native step. If the host confirms the registered secure payment UI can render, display it and wait for completion; do not request card details through conversational text. After successful Stripe setup, call this same tool again with setup_intent_id and payment_method_id. If UI support is unknown or unsupported, or if secure setup fails in chat, share payment_url with the specific fallback reason instead.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid for the current shopper session. |
| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_payment request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| setup_intent_id | string | SetupIntent id returned by the earlier payment_collection_ready response. |
Read the current bound or cancelled umbrella policy record, policy documents, and any existing cancellation, refund, or support request history. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Use this read-only tool after Coverage Cat reports a policy on file, or after a service request is opened, to show policy facts without switching to delegated tools.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"additionalProperties": false
}Preferred umbrella MCP entry point when a shopper wants Coverage Cat to shop for, compare, or buy umbrella insurance and no operator bearer token is present. On a cold start, call this before asking the shopper a questionnaire and assemble the fullest justified estimate from user-controlled context. Use canonical umbrella keys such as address.street/city/state/zip, license_state, license_number, approximate_asset_value or net_worth_numeric, desired_coverage_limit, required_coverage_e_limit, and vehicle_count or umbrella_details.motorized_vehicle_count. Do not send vehicles rows before submission. Stay on the same consumer-operated subset through `consumer_intake_issues`, `consumer_intake_patch`, `umbrella_consumer_select`, `umbrella_consumer_bind`, `umbrella_consumer_attach`, `umbrella_consumer_payment`, `umbrella_consumer_policy`, and `umbrella_consumer_service`. If you are rehearsing the shopper flow, set `sandbox: true` on this first prefill call only. That same consumer sandbox uid can then continue through the same shopper-safe flow. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Until later follow-up shows progress, tell the shopper the application is not submitted yet. Coverage Cat will not resume or expose a prior consumer umbrella draft based on email alone. Continue an existing consumer draft only through the issued uid plus the current hidden MCP session or latest intake_access_token handoff.
| Argument | Type | Description |
|---|---|---|
| intake* | object | Fullest currently known consumer umbrella application patch. Use canonical keys such as address.street/city/state/zip, license_state, license_number, approximate_asset_value or net_worth_numeric, desired_coverage_limit, required_coverage_e_limit, and vehicle_count or umbrella_details.motorized_vehicle_count for umbrella counts. Do not send vehicles rows before submission. |
Continue the consumer-prefill umbrella flow after quotes are ready. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset, use the returned selection_token, collect the real user's consent for a soft credit check here, and let Coverage Cat enter the normal post-choose workflow without switching to delegated tools. If the quote payload exposed selection_guidance.same_reply_requirements for the chosen offer, send those answers under intake on this first select call. If Coverage Cat still returns credit_consent_required with a bind-stage next_question, ask for both the soft-credit-check consent and those bind details in one shopper-facing turn, then retry this same tool with both credit_consent and intake.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application. |
| intake | object | Bind-stage answers for the current next_question, or the chosen offer's selection_guidance.same_reply_requirements, keyed by the field names Coverage Cat asked for. Send them when Coverage Cat asked for consent and bind details in the same shopper-facing turn. |
| credit_consent | object | Real-user consent for a soft credit check, collected on the selection turn when Coverage Cat asks for it. |
Preview or open a cancellation, refund, or support request for a consumer umbrella policy. Coverage Cat prefers to keep follow-up authorization in the hidden MCP shopper session after prefill, so a preserved host usually only needs uid. If your host cannot preserve that MCP session state, retry this same MCP follow-up tool with the latest intake_access_token from the previous successful Coverage Cat response instead of dropping to raw HTTP or asking the shopper for credentials. Stay on the same consumer-operated MCP subset after bind. Preview the consequences first, then send confirm_request: true only after the shopper approves opening the request. Do not describe a cancellation, refund, or support issue as completed until Coverage Cat confirms the final outcome.
| Argument | Type | Description |
|---|---|---|
| uid* | string | Coverage Cat intake uid for the current shopper session. |
| reason* | string | Short shopper-approved reason for the request. |
| details | string | Shopper-approved context beyond the short reason, such as the specifics of a billing dispute, recorded on the request and its preview. |
| request_type* | string | What the shopper wants done after purchase. `policy_cancellation` asks the carrier to end the policy on requested_effective_date; `refund_request` asks the carrier or billing provider to review a refund or outstanding balance without changing coverage; `support_case` opens a general support case for anything else. |
| Two-letter state code for the garaging address or rating state. |
| style | string | Vehicle trim, body style, or submodel when you want to narrow the vehicle match. |
| gender* | string | Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified. |
| collision_deductible | integer | Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000. |
| comprehensive_deductible | integer | Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000. |
{
"type": "object",
"required": [
"state",
"zip",
"age",
"gender"
],
"properties": {
"age": {
"type": "integer",
"minimum": 16,
"description": "Age in years of the driver being priced; the model converts it to a birth year."
},
"zip": {
"type": "string",
"description": "ZIP code for the driver or garaging location being priced."
},
"make": {
"type": "string",
"description": "Vehicle manufacturer, such as `Toyota` or `Honda`."
},
"seed": {
"type": "integer",
"description": "Optional deterministic seed for the estimate sample when a caller wants stable repeat runs."
},
"year": {
"type": "integer",
"description": "Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead."
},
"model": {
"type": "string",
"description": "Vehicle model, such as `Camry` or `Civic`."
},
"state": {
"type": "string",
"description": "Two-letter state code for the garaging address or rating state."
},
"style": {
"type": "string",
"description": "Vehicle trim, body style, or submodel when you want to narrow the vehicle match."
},
"gender": {
"type": "string",
"description": "Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified."
},
"collision_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000."
},
"comprehensive_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000."
}
},
"additionalProperties": true
}| Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"additionalProperties": false
}| message_reply |
| string |
| Homeowners post-submit only. Send the reply text Coverage Cat should deliver in-thread when consumer_intake_issues surfaced an insurer or shopper follow-up under conversation.messages. |
| field_estimates | array | Umbrella provenance for values in this same patch that you inferred rather than heard from the shopper, one row per inferred value. Add rows only when you are certain each field path matches a current umbrella review field. |
| idempotency_key | string | Key you generate to identify one logical consumer_intake_patch request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| confirm_submission | boolean | Set true only on the single final review turn. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
| reply_to_message_id | integer | Homeowners post-submit message_id from conversation.messages[] that message_reply answers in-thread, when Coverage Cat returned a specific message to reply to. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake": {
"type": "object",
"properties": {
"current_auto_coverages": {
"enum": [
"unsure",
"500k/1m",
"500k/500k",
"300k/300k",
"100k/300k"
],
"type": "string",
"description": "Which band the shopper's current underlying auto liability limits fall into: `500k/1m` covers $500k/$1 Million/$100k or higher; `500k/500k` covers $500k/$500k/$100k or $500k CSL; `300k/300k` covers $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; `100k/300k` covers $100k/$300k/$100k or lower. Pick the strongest band the shopper's actual limits fully satisfy. Underlying auto limits gate umbrella eligibility, so use `unsure` only when the shopper genuinely does not know their limits."
}
},
"description": "Top-level intake edits. For umbrella, send only missing shopper-owned details, corrections, or canonical umbrella count fixes such as umbrella_details.motorized_vehicle_count. Do not send vehicles rows on this pre-submit patch.",
"additionalProperties": true
},
"message_reply": {
"type": "string",
"description": "Homeowners post-submit only. Send the reply text Coverage Cat should deliver in-thread when consumer_intake_issues surfaced an insurer or shopper follow-up under conversation.messages."
},
"field_estimates": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"source",
"confidence"
],
"properties": {
"field": {
"type": "string",
"description": "Intake dot-path of the inferred value, matching the key you sent under `intake`, such as `address.zip`."
},
"source": {
"type": "string",
"description": "Free-form label for where the inferred value came from, such as `policy_declarations`, `email_thread`, or a property-data provider."
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "How strongly your source supports the inferred value."
}
},
"additionalProperties": true
},
"description": "Umbrella provenance for values in this same patch that you inferred rather than heard from the shopper, one row per inferred value. Add rows only when you are certain each field path matches a current umbrella review field."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical consumer_intake_patch request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"confirm_submission": {
"type": "boolean",
"description": "Set true only on the single final review turn."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"reply_to_message_id": {
"type": "integer",
"description": "Homeowners post-submit message_id from conversation.messages[] that message_reply answers in-thread, when Coverage Cat returned a specific message to reply to."
}
},
"additionalProperties": false
}| style | string | Vehicle trim, body style, or submodel when you want to narrow the vehicle match. |
| gender* | string | Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified. |
| repair_estimate* | integer | Approximate dollar amount you expect to pay to repair the vehicle if you do not file a claim. |
| collision_deductible | integer | Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000. |
| comprehensive_deductible | integer | Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000. |
{
"type": "object",
"required": [
"state",
"zip",
"age",
"gender",
"repair_estimate"
],
"properties": {
"age": {
"type": "integer",
"minimum": 16,
"description": "Age in years of the driver being priced; the model converts it to a birth year."
},
"zip": {
"type": "string",
"description": "ZIP code for the driver or garaging location being priced."
},
"make": {
"type": "string",
"description": "Vehicle manufacturer, such as `Toyota` or `Honda`."
},
"seed": {
"type": "integer",
"description": "Optional deterministic seed for the estimate sample when a caller wants stable repeat runs."
},
"year": {
"type": "integer",
"description": "Vehicle model year. With make and model it prices a specific car; omit it to price a generic vehicle instead."
},
"model": {
"type": "string",
"description": "Vehicle model, such as `Camry` or `Civic`."
},
"state": {
"type": "string",
"description": "Two-letter state code for the garaging address or rating state."
},
"style": {
"type": "string",
"description": "Vehicle trim, body style, or submodel when you want to narrow the vehicle match."
},
"gender": {
"type": "string",
"description": "Driver gender code the pricing model rates on: `M` for male, `F` for female, or `N` when not specified."
},
"repair_estimate": {
"type": "integer",
"minimum": 0,
"description": "Approximate dollar amount you expect to pay to repair the vehicle if you do not file a claim."
},
"collision_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward a collision repair before collision coverage pays the rest. Omitted means $1,000."
},
"comprehensive_deductible": {
"type": "integer",
"description": "Dollars the driver pays toward non-collision damage, such as theft, hail, or vandalism, before comprehensive coverage pays the rest. Omitted means $1,000."
}
},
"additionalProperties": true
}| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid",
"preview_token",
"bind_confirmed"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by the earlier homeowners consumer-prefill or follow-up response."
},
"preview_token": {
"type": "string",
"description": "Preview token returned by `homeowners_consumer_select` in the `ready_to_finalize` response for this exact offer."
},
"bind_confirmed": {
"type": "boolean",
"const": true,
"description": "Attests that the shopper approved the previewed homeowners bind terms in chat, including email delivery of any carrier payment or signing links."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical homeowners_consumer_bind request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"additionalProperties": false
}| idempotency_key | string | Key you generate to identify one logical homeowners_consumer_prefill request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| credit_consent_pending* | boolean | Declares that this handoff starts before the shopper has given soft-credit-check consent, so do not ask about credit now. Coverage Cat requests that consent on the homeowners review turn. |
{
"type": "object",
"required": [
"credit_consent_pending",
"intake"
],
"properties": {
"intake": {
"type": "object",
"description": "Fullest currently known homeowners application assembled from the user's own context: shopper name and email plus a `home` row (object or one-row array) with the property street, city, state, and zip, and the home_ownership and property_type that distinguish standard homeowners, condo, or landlord coverage.",
"additionalProperties": true
},
"field_estimates": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"source",
"confidence"
],
"properties": {
"field": {
"type": "string",
"description": "Name of the inferred field on the `intake.home` row, such as `home_sqft`."
},
"source": {
"type": "string",
"description": "Free-form label for where the inferred value came from, such as `policy_declarations`, `email_thread`, or a property-data provider."
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "How strongly your source supports the inferred value."
}
},
"additionalProperties": true
},
"description": "Provenance for home values you inferred from context or property data rather than heard from the shopper, one row per inferred value. Coverage Cat stores the rows on the first `intake.home` row."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical homeowners_consumer_prefill request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"credit_consent_pending": {
"type": "boolean",
"const": true,
"description": "Declares that this handoff starts before the shopper has given soft-credit-check consent, so do not ask about credit now. Coverage Cat requests that consent on the homeowners review turn."
}
},
"additionalProperties": false
}| selection_confirmed* | boolean | Attests that the shopper explicitly picked the offer named by selection_token in chat, rather than the agent choosing for them. |
{
"type": "object",
"required": [
"uid",
"selection_token",
"selection_confirmed"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical homeowners_consumer_select request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"selection_token": {
"type": "string",
"description": "selection_token of the shopper's chosen offer from `offers[]` in the latest quoted follow-up response."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"selection_confirmed": {
"type": "boolean",
"const": true,
"description": "Attests that the shopper explicitly picked the offer named by selection_token in chat, rather than the agent choosing for them."
}
},
"additionalProperties": false
}| confirm_request |
| boolean |
| Whether to open the request now. false, the default, returns a preview of the consequences without opening anything; send true only after the shopper approves that preview. |
| idempotency_key | string | Key you generate to identify one logical homeowners_consumer_service request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
| requested_effective_date | string | Day the shopper wants a cancellation to take effect; used only for policy_cancellation. It is a request: the carrier reviews it and may set a different date. |
{
"type": "object",
"required": [
"uid",
"request_type",
"reason"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid for the current shopper session."
},
"reason": {
"type": "string",
"description": "Short shopper-approved reason for the request."
},
"details": {
"type": "string",
"description": "Shopper-approved context beyond the short reason, such as the specifics of a billing dispute, recorded on the request and its preview."
},
"request_type": {
"enum": [
"policy_cancellation",
"refund_request",
"support_case"
],
"type": "string",
"description": "What the shopper wants done after purchase. `policy_cancellation` asks the carrier to end the policy on requested_effective_date; `refund_request` asks the carrier or billing provider to review a refund or outstanding balance without changing coverage; `support_case` opens a general support case for anything else."
},
"confirm_request": {
"type": "boolean",
"description": "Whether to open the request now. false, the default, returns a preview of the consequences without opening anything; send true only after the shopper approves that preview."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical homeowners_consumer_service request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"requested_effective_date": {
"type": "string",
"format": "date",
"description": "Day the shopper wants a cancellation to take effect; used only for policy_cancellation. It is a request: the carrier reviews it and may set a different date."
}
},
"description": "requested_effective_date is required when request_type is policy_cancellation.",
"additionalProperties": false
}| Number of drivers in the household who are younger than 22. |
| large_watercraft | integer | Count of boats or other large watercraft that add umbrella liability exposure. |
| moving_violations | integer | Total moving violations across all household drivers. Omitted counts as none; a high count can move the profile to specialized review or make it ineligible for instant pricing. |
| at_fault_accidents | integer | Total at-fault accidents across all household drivers. Omitted counts as none; a high count can move the profile to specialized review or make it ineligible for instant pricing. |
{
"type": "object",
"required": [
"zip"
],
"properties": {
"zip": {
"type": "string",
"description": "ZIP code for the household being priced."
},
"jet_skis": {
"type": "integer",
"minimum": 0,
"description": "Count of personal watercraft such as jet skis."
},
"auto_count": {
"type": "integer",
"minimum": 0,
"description": "How many cars, trucks, or SUVs are in the household auto profile."
},
"motorcycles": {
"type": "integer",
"minimum": 0,
"description": "How many motorcycles should be added to the total vehicle exposure."
},
"property_count": {
"type": "integer",
"minimum": 0,
"description": "How many residential properties the household owns or carries liability for."
},
"drivers_over_70": {
"type": "integer",
"minimum": 0,
"description": "Number of drivers in the household who are 70 or older."
},
"antique_vehicles": {
"type": "integer",
"minimum": 0,
"description": "How many collector or antique vehicles should be counted in the risk profile."
},
"drivers_under_22": {
"type": "integer",
"minimum": 0,
"description": "Number of drivers in the household who are younger than 22."
},
"large_watercraft": {
"type": "integer",
"minimum": 0,
"description": "Count of boats or other large watercraft that add umbrella liability exposure."
},
"moving_violations": {
"type": "integer",
"minimum": 0,
"description": "Total moving violations across all household drivers. Omitted counts as none; a high count can move the profile to specialized review or make it ineligible for instant pricing."
},
"at_fault_accidents": {
"type": "integer",
"minimum": 0,
"description": "Total at-fault accidents across all household drivers. Omitted counts as none; a high count can move the profile to specialized review or make it ineligible for instant pricing."
}
},
"additionalProperties": false
}| filename |
| string |
| Original file name with its extension, such as `home-declarations.pdf`. Coverage Cat reads the file type from the extension and accepts PDF, JPEG, or PNG files. |
| attachments | array | Upload multiple declarations in one call when both files are already available. |
| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_attach request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"type": {
"enum": [
"declarations",
"auto_declarations"
],
"type": "string",
"description": "Which policy the declarations page belongs to: `declarations` for the home, condo, renters, or landlord policy, or `auto_declarations` for the auto policy. Match the upload types Coverage Cat listed in `required_upload_types`."
},
"content": {
"type": "string",
"description": "The whole declarations document named by filename, not an excerpt, summary, or extracted text.",
"contentEncoding": "base64"
},
"filename": {
"type": "string",
"description": "Original file name with its extension, such as `home-declarations.pdf`. Coverage Cat reads the file type from the extension and accepts PDF, JPEG, or PNG files."
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"filename",
"content"
],
"properties": {
"type": {
"enum": [
"declarations",
"auto_declarations"
],
"type": "string",
"description": "Which policy the declarations page belongs to: `declarations` for the home, condo, renters, or landlord policy, or `auto_declarations` for the auto policy. Match the upload types Coverage Cat listed in `required_upload_types`."
},
"content": {
"type": "string",
"description": "The whole declarations document named by filename, not an excerpt, summary, or extracted text.",
"contentEncoding": "base64"
},
"filename": {
"type": "string",
"description": "Original file name with its extension, such as `home-declarations.pdf`. Coverage Cat reads the file type from the extension and accepts PDF, JPEG, or PNG files."
}
},
"additionalProperties": false
},
"minItems": 1,
"description": "Upload multiple declarations in one call when both files are already available."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_attach request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"description": "Provide either type, filename, and content for one upload or attachments for a batch upload, never both modes.",
"additionalProperties": false
}| Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake": {
"type": "object",
"description": "Answers to the current bind-stage next_question, keyed by the field names Coverage Cat asked for, such as vehicle details for a selected Markel offer.",
"additionalProperties": true
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_bind request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
}
},
"additionalProperties": false
}| payment_method_id | string | Reusable Stripe PaymentMethod id produced by secure client-side setup confirmation. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
| payment_collection_requested | boolean | Starts secure card collection: Coverage Cat prepares a Stripe SetupIntent and returns the publishable_key, client_secret, and setup_intent_id the registered payment UI needs. Send it on the first payment call, without setup_intent_id or payment_method_id. |
{
"type": "object",
"required": [
"uid"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid for the current shopper session."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_payment request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"setup_intent_id": {
"type": "string",
"description": "SetupIntent id returned by the earlier payment_collection_ready response."
},
"payment_method_id": {
"type": "string",
"description": "Reusable Stripe PaymentMethod id produced by secure client-side setup confirmation."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"payment_collection_requested": {
"type": "boolean",
"const": true,
"description": "Starts secure card collection: Coverage Cat prepares a Stripe SetupIntent and returns the publishable_key, client_secret, and setup_intent_id the registered payment UI needs. Send it on the first payment call, without setup_intent_id or payment_method_id."
}
},
"description": "Provide either payment_collection_requested: true or both setup_intent_id and payment_method_id, never both modes.",
"additionalProperties": false
}| sandbox | boolean | Set true on this first prefill call to run a fully synthetic shopper rehearsal instead of a live application. The returned sandbox uid continues through the same consumer tool set. |
| field_estimates | array | Provenance for intake values you inferred from context rather than heard from the shopper, one row per inferred value. On the initial umbrella handoff, add rows only for fields that already appear in the current umbrella review; otherwise send `intake` alone. |
| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_prefill request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| credit_consent_pending* | boolean | Declares that this handoff starts before the shopper has given soft-credit-check consent, so do not ask about credit now. Coverage Cat requests that consent on `umbrella_consumer_select`, once the shopper picks an offer. |
{
"type": "object",
"required": [
"credit_consent_pending",
"intake"
],
"properties": {
"intake": {
"type": "object",
"properties": {
"current_auto_coverages": {
"enum": [
"unsure",
"500k/1m",
"500k/500k",
"300k/300k",
"100k/300k"
],
"type": "string",
"description": "Which band the shopper's current underlying auto liability limits fall into: `500k/1m` covers $500k/$1 Million/$100k or higher; `500k/500k` covers $500k/$500k/$100k or $500k CSL; `300k/300k` covers $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; `100k/300k` covers $100k/$300k/$100k or lower. Pick the strongest band the shopper's actual limits fully satisfy. Underlying auto limits gate umbrella eligibility, so use `unsure` only when the shopper genuinely does not know their limits."
}
},
"description": "Fullest currently known consumer umbrella application patch. Use canonical keys such as address.street/city/state/zip, license_state, license_number, approximate_asset_value or net_worth_numeric, desired_coverage_limit, required_coverage_e_limit, and vehicle_count or umbrella_details.motorized_vehicle_count for umbrella counts. Do not send vehicles rows before submission.",
"additionalProperties": true
},
"sandbox": {
"type": "boolean",
"description": "Set true on this first prefill call to run a fully synthetic shopper rehearsal instead of a live application. The returned sandbox uid continues through the same consumer tool set."
},
"field_estimates": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"source",
"confidence"
],
"properties": {
"field": {
"type": "string",
"description": "Intake dot-path of the inferred value, matching the key you sent under `intake`, such as `address.zip`."
},
"source": {
"type": "string",
"description": "Free-form label for where the inferred value came from, such as `policy_declarations`, `email_thread`, or a property-data provider."
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "How strongly your source supports the inferred value."
}
},
"additionalProperties": true
},
"description": "Provenance for intake values you inferred from context rather than heard from the shopper, one row per inferred value. On the initial umbrella handoff, add rows only for fields that already appear in the current umbrella review; otherwise send `intake` alone."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_prefill request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"credit_consent_pending": {
"type": "boolean",
"const": true,
"description": "Declares that this handoff starts before the shopper has given soft-credit-check consent, so do not ask about credit now. Coverage Cat requests that consent on `umbrella_consumer_select`, once the shopper picks an offer."
}
},
"additionalProperties": false
}| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_select request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| selection_token* | string | selection_token of the shopper's chosen offer from `offers[]` in the latest quoted follow-up response. |
| um_uim_election | any | The shopper's choice to include or decline the offer's $1M excess UM/UIM option, when they make it in the same selection reply. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
| selection_confirmed* | boolean | Attests that the shopper explicitly picked the offer named by selection_token in chat, rather than the agent choosing for them. |
{
"type": "object",
"required": [
"uid",
"selection_token",
"selection_confirmed"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid returned by `umbrella_consumer_prefill` or `homeowners_consumer_prefill` and echoed on every follow-up response. Reuse it for each follow-up call on the same application."
},
"intake": {
"type": "object",
"description": "Bind-stage answers for the current next_question, or the chosen offer's selection_guidance.same_reply_requirements, keyed by the field names Coverage Cat asked for. Send them when Coverage Cat asked for consent and bind details in the same shopper-facing turn.",
"additionalProperties": true
},
"credit_consent": {
"type": "object",
"required": [
"answer",
"collected_from_user"
],
"properties": {
"answer": {
"enum": [
"Yes"
],
"type": "string",
"description": "Records the shopper's own reply agreeing to Coverage Cat's credit_consent_question. Send it only after the shopper agrees in their own words."
},
"collected_from_user": {
"type": "boolean",
"const": true,
"description": "Attests that the shopper personally answered the credit consent question in this conversation, rather than the agent assuming their consent."
}
},
"description": "Real-user consent for a soft credit check, collected on the selection turn when Coverage Cat asks for it.",
"additionalProperties": false
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_select request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"selection_token": {
"type": "string",
"description": "selection_token of the shopper's chosen offer from `offers[]` in the latest quoted follow-up response."
},
"um_uim_election": {
"oneOf": [
{
"type": "boolean"
},
{
"enum": [
"include",
"decline"
],
"type": "string"
},
{
"type": "object",
"required": [
"elected"
],
"properties": {
"elected": {
"type": "boolean",
"description": "Whether the shopper wants the offer's excess UM/UIM option included."
}
},
"additionalProperties": false
}
],
"description": "The shopper's choice to include or decline the offer's $1M excess UM/UIM option, when they make it in the same selection reply."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"selection_confirmed": {
"type": "boolean",
"const": true,
"description": "Attests that the shopper explicitly picked the offer named by selection_token in chat, rather than the agent choosing for them."
}
},
"additionalProperties": false
}| confirm_request |
| boolean |
| Whether to open the request now. false, the default, returns a preview of the consequences without opening anything; send true only after the shopper approves that preview. |
| idempotency_key | string | Key you generate to identify one logical umbrella_consumer_service request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key. |
| intake_access_token | string | Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper. |
| requested_effective_date | string | Day the shopper wants a cancellation to take effect; used only for policy_cancellation. It is a request: the carrier reviews it and may set a different date. |
{
"type": "object",
"required": [
"uid",
"request_type",
"reason"
],
"properties": {
"uid": {
"type": "string",
"description": "Coverage Cat intake uid for the current shopper session."
},
"reason": {
"type": "string",
"description": "Short shopper-approved reason for the request."
},
"details": {
"type": "string",
"description": "Shopper-approved context beyond the short reason, such as the specifics of a billing dispute, recorded on the request and its preview."
},
"request_type": {
"enum": [
"policy_cancellation",
"refund_request",
"support_case"
],
"type": "string",
"description": "What the shopper wants done after purchase. `policy_cancellation` asks the carrier to end the policy on requested_effective_date; `refund_request` asks the carrier or billing provider to review a refund or outstanding balance without changing coverage; `support_case` opens a general support case for anything else."
},
"confirm_request": {
"type": "boolean",
"description": "Whether to open the request now. false, the default, returns a preview of the consequences without opening anything; send true only after the shopper approves that preview."
},
"idempotency_key": {
"type": "string",
"description": "Key you generate to identify one logical umbrella_consumer_service request, so a retry cannot apply it twice. After a timeout or transport failure, retry with the same key and identical arguments to get the original result back; Coverage Cat keeps that result for 24 hours and rejects different arguments sent under a used key."
},
"intake_access_token": {
"type": "string",
"description": "Bearer fallback for this same MCP follow-up tool when your host cannot preserve Coverage Cat's hidden shopper session. Send the intake_access_token from the previous successful Coverage Cat response and never show it to the shopper."
},
"requested_effective_date": {
"type": "string",
"format": "date",
"description": "Day the shopper wants a cancellation to take effect; used only for policy_cancellation. It is a request: the carrier reviews it and may set a different date."
}
},
"description": "requested_effective_date is required when request_type is policy_cancellation.",
"additionalProperties": false
}