Skip to main content
Glama

Coverage Cat

Umbrella consumer prefill handoff

umbrella_consumer_prefill
Idempotent

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. Reuse uid and the latest intake_access_token from the previous successful Coverage Cat response on each follow-up. MCP 2026-07-28 is stateless and requires that token. Legacy MCP hosts may also preserve hidden shopper session authorization. Keep tokens private and stay on this same MCP follow-up tool. 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.

Input Schema

NameRequiredDescriptionDefault
intakeYesFullest 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.
sandboxNoSet 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_estimatesNoProvenance 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_keyNoKey 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_pendingYesDeclares that this handoff starts before the shopper has given consumer-report authorization for insurance underwriting, so do not ask about it now. Coverage Cat requests that authorization on `umbrella_consumer_select`, once the shopper picks an offer.

Output Schema

NameRequiredDescriptionDefault
uidYesCoverage Cat intake uid for MCP follow-up.
sandboxNoTrue when Coverage Cat is returning consumer sandbox test data rather than a live shopper workflow.
expires_atYesWhen the current consumer handoff expires.
review_summaryYesCurrent non-authoritative pre-submit checkpoint the agent may summarize before continuing in chat or opening a browser fallback. Unless a later follow-up response shows quote progress, treat this application as not submitted yet. If any shown value is estimated, mark that bullet or value with `*`, include the short note `* = estimated` once above and once below the list, and do not prefix every estimated line with `[Estimated]`.
intake_access_tokenYesShort-lived follow-up bearer. On REST, send it back as Authorization for the next `/api/intake/{uid}` call. On MCP, retry the same follow-up tool with this token only when your host cannot preserve Coverage Cat's hidden shopper session. Never display it to the shopper.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedOutput schema / properties / review_summary / properties / contact_preferences_disclosures / properties / service_call / properties / source_updated_at
      Added value: +{
      +  "format": "date",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / contact_preferences_disclosures / properties / service_call / properties / source_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / contact_preferences_disclosures / properties / service_sms / properties / source_updated_at
      Added value: +{
      +  "format": "date",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / contact_preferences_disclosures / properties / service_sms / properties / source_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / credit_consent_disclosure / properties / source_updated_at
      Added value: +{
      +  "format": "date",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / credit_consent_disclosure / properties / source_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / review_summary / properties / monoline_mvr_consent_disclosure
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Versioned Monoline-specific text that must be shown verbatim with its source URL; echo version and text_hash with the user's response.",
      +  "properties": {
      +    "kind": {
      +      "const": "monoline_mvr",
      +      "type": "string"
      +    },
      +    "source_updated_at": {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    "source_url": {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "text": {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "text_hash": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "version": {
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "version",
      +    "text",
      +    "text_hash",
      +    "source_url",
      +    "source_updated_at"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / review_summary / properties / monoline_mvr_consent_question
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / review_summary / properties / status / enum
      Previous value: -[
      -  "abandoned",
      -  "blocked",
      -  "bound",
      -  "cancelled",
      -  "chosen",
      -  "credit_consent_pending",
      -  "credit_consent_required",
      -  "dev_success",
      -  "documents_needed",
      -  "documents_pending_review",
      -  "email_sent",
      -  "in_review",
      -  "ineligible",
      -  "info_requested",
      -  "needs_more_info",
      -  "needs_more_info_to_bind",
      -  "no_policy",
      -  "no_chosen_offer",
      -  "no_quotes",
      -  "no_selection",
      -  "ok",
      -  "payment_collection_ready",
      -  "payment_needed",
      -  "pending",
      -  "pending_quotes",
      -  "queued",
      -  "quote_rate_limited",
      -  "quoted",
      -  "ready_for_review",
      -  "ready_for_submission",
      -  "ready_to_finalize",
      -  "review_pending",
      -  "service_preview",
      -  "service_requested",
      -  "sandbox_unsupported",
      -  "stale_selection",
      -  "verifying_documents",
      -  "waiting_on_carrier",
      -  "waiting_on_documents",
      -  "waiting_on_payment"
      -]New value: +[
      +  "abandoned",
      +  "blocked",
      +  "bound",
      +  "cancelled",
      +  "chosen",
      +  "credit_consent_pending",
      +  "credit_consent_required",
      +  "monoline_mvr_consent_required",
      +  "dev_success",
      +  "documents_needed",
      +  "documents_pending_review",
      +  "email_sent",
      +  "in_review",
      +  "ineligible",
      +  "info_requested",
      +  "needs_more_info",
      +  "needs_more_info_to_bind",
      +  "no_policy",
      +  "no_chosen_offer",
      +  "no_quotes",
      +  "no_selection",
      +  "ok",
      +  "payment_collection_ready",
      +  "payment_needed",
      +  "pending",
      +  "pending_quotes",
      +  "queued",
      +  "quote_rate_limited",
      +  "quoted",
      +  "ready_for_review",
      +  "ready_for_submission",
      +  "ready_to_finalize",
      +  "review_pending",
      +  "service_preview",
      +  "service_requested",
      +  "sandbox_unsupported",
      +  "stale_selection",
      +  "verifying_documents",
      +  "waiting_on_carrier",
      +  "waiting_on_documents",
      +  "waiting_on_payment"
      +]
  2. Changed3 schema fields changed
    • changedInput schema / properties / credit_consent_pending / description
      Previous value: -"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."New value: +"Declares that this handoff starts before the shopper has given consumer-report authorization for insurance underwriting, so do not ask about it now. Coverage Cat requests that authorization on `umbrella_consumer_select`, once the shopper picks an offer."
    • addedOutput schema / properties / review_summary / properties / contact_preferences_disclosures
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional versioned service-contact disclosures for the phone number on file; no marketing consent and no purchase requirement.",
      +  "properties": {
      +    "service_call": {
      +      "additionalProperties": false,
      +      "description": "Optional service-call disclosure; show its text verbatim before recording a choice.",
      +      "properties": {
      +        "kind": {
      +          "const": "service_call",
      +          "type": "string"
      +        },
      +        "text": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "text_hash": {
      +          "pattern": "^[a-f0-9]{64}$",
      +          "type": "string"
      +        },
      +        "version": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "version",
      +        "text",
      +        "text_hash"
      +      ],
      +      "type": "object"
      +    },
      +    "service_sms": {
      +      "additionalProperties": false,
      +      "description": "Optional service-text disclosure; show its text verbatim before recording a choice.",
      +      "properties": {
      +        "kind": {
      +          "const": "service_sms",
      +          "type": "string"
      +        },
      +        "text": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "text_hash": {
      +          "pattern": "^[a-f0-9]{64}$",
      +          "type": "string"
      +        },
      +        "version": {
      +          "minLength": 1,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "version",
      +        "text",
      +        "text_hash"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / review_summary / properties / credit_consent_disclosure
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Versioned canonical text that must be shown verbatim; echo version and text_hash with the user's response.",
      +  "properties": {
      +    "kind": {
      +      "const": "credit_report",
      +      "type": "string"
      +    },
      +    "text": {
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "text_hash": {
      +      "pattern": "^[a-f0-9]{64}$",
      +      "type": "string"
      +    },
      +    "version": {
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "version",
      +    "text",
      +    "text_hash"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • addedOutput schema / properties / review_summary / properties / verification
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "instructions": {
      +      "type": "string"
      +    },
      +    "request_tool": {
      +      "type": "string"
      +    },
      +    "required": {
      +      "type": "boolean"
      +    },
      +    "retry_after_seconds": {
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "status": {
      +      "enum": [
      +        "required",
      +        "pending",
      +        "verified",
      +        "not_required"
      +      ],
      +      "type": "string"
      +    },
      +    "status_tool": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "required",
      +    "retry_after_seconds",
      +    "request_tool",
      +    "status_tool",
      +    "instructions"
      +  ],
      +  "type": "object"
      +}
  4. Changed6 schema fields changed
    • changedInput schema / properties / credit_consent_pending / description
      Previous value: -"Acknowledges that the shopper has not given soft-credit-check consent yet. Coverage Cat collects that consent on `umbrella_consumer_select`, after an umbrella offer is chosen."New value: +"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."
    • changedInput schema / properties / field_estimates / description
      Previous value: -"Provenance rows for intake values you inferred rather than heard from the shopper. Each row names the inferred `field` path, its `source`, and a `confidence` of low, medium, or high. On the initial umbrella handoff, send rows only when each field path already matches a current umbrella review field."New value: +"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."
    • addedInput schema / properties / field_estimates / items / properties
      Added value: +{
      +  "confidence": {
      +    "description": "How strongly your source supports the inferred value.",
      +    "enum": [
      +      "low",
      +      "medium",
      +      "high"
      +    ],
      +    "type": "string"
      +  },
      +  "field": {
      +    "description": "Intake dot-path of the inferred value, matching the key you sent under `intake`, such as `address.zip`.",
      +    "type": "string"
      +  },
      +  "source": {
      +    "description": "Free-form label for where the inferred value came from, such as `policy_declarations`, `email_thread`, or a property-data provider.",
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / field_estimates / items / required
      Added value: +[
      +  "field",
      +  "source",
      +  "confidence"
      +]
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Retry key you generate for one logical umbrella_consumer_prefill request. If you retry after a timeout or transport failure, resend the identical arguments with the same idempotency_key. Coverage Cat replays the cached successful result for 24 hours and rejects a changed payload under the same key."New value: +"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."
    • changedInput schema / properties / intake / properties / current_auto_coverages / description
      Previous value: -"Band for the shopper's current underlying auto liability limits: `unsure` means I'm not sure; `500k/1m` means $500k/$1 Million/$100k or higher; `500k/500k` means $500k/$500k/$100k or $500k CSL; `300k/300k` means $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; `100k/300k` means $100k/$300k/$100k or lower. Choose the strongest band the shopper's actual limits fully satisfy. Underlying auto limits gate umbrella eligibility, so reserve `unsure` for limits the shopper genuinely does not know."New value: +"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."
  5. Changed6 schema fields changed
    • changedInput schema / properties / credit_consent_pending / description
      Previous value: -"Must be true. Coverage Cat collects consent for a soft credit check only after an umbrella offer is chosen."New value: +"Acknowledges that the shopper has not given soft-credit-check consent yet. Coverage Cat collects that consent on `umbrella_consumer_select`, after an umbrella offer is chosen."
    • changedInput schema / properties / field_estimates / description
      Previous value: -"Optional estimate metadata. On the initial consumer umbrella handoff, prefer omitting this unless each field path already matches a current umbrella review field."New value: +"Provenance rows for intake values you inferred rather than heard from the shopper. Each row names the inferred `field` path, its `source`, and a `confidence` of low, medium, or high. On the initial umbrella handoff, send rows only when each field path already matches a current umbrella review field."
    • changedInput schema / properties / idempotency_key / description
      Previous value: -"Optional retry key for umbrella_consumer_prefill. If you retry after a timeout or transport failure, resend the identical arguments with the same idempotency_key. Coverage Cat replays the cached successful result for 24 hours and rejects a changed payload under the same key."New value: +"Retry key you generate for one logical umbrella_consumer_prefill request. If you retry after a timeout or transport failure, resend the identical arguments with the same idempotency_key. Coverage Cat replays the cached successful result for 24 hours and rejects a changed payload under the same key."
    • changedInput schema / properties / intake / description
      Previous value: -"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. current_auto_coverages is a banded enum, not free text: send one of unsure for I'm not sure; 500k/1m for $500k/$1 Million/$100k or higher; 500k/500k for $500k/$500k/$100k or $500k CSL; 300k/300k for $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; 100k/300k for $100k/$300k/$100k or lower. Coverage Cat rejects the shopper's raw limits, so translate them into the strongest band those limits fully satisfy. Underlying auto limits gate umbrella eligibility, so reserve unsure for limits the shopper genuinely does not know rather than using it to skip the translation."New value: +"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."
    • changedInput schema / properties / intake / properties / current_auto_coverages / description
      Previous value: -"`current_auto_coverages` is a banded enum, not free text: send one of `unsure` for I'm not sure; `500k/1m` for $500k/$1 Million/$100k or higher; `500k/500k` for $500k/$500k/$100k or $500k CSL; `300k/300k` for $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; `100k/300k` for $100k/$300k/$100k or lower. Coverage Cat rejects the shopper's raw limits, so translate them into the strongest band those limits fully satisfy. Underlying auto limits gate umbrella eligibility, so reserve `unsure` for limits the shopper genuinely does not know rather than using it to skip the translation."New value: +"Band for the shopper's current underlying auto liability limits: `unsure` means I'm not sure; `500k/1m` means $500k/$1 Million/$100k or higher; `500k/500k` means $500k/$500k/$100k or $500k CSL; `300k/300k` means $250k/$500k/$100k or $300k/$300k/$100k or $300k CSL; `100k/300k` means $100k/$300k/$100k or lower. Choose the strongest band the shopper's actual limits fully satisfy. Underlying auto limits gate umbrella eligibility, so reserve `unsure` for limits the shopper genuinely does not know."
    • changedInput schema / properties / sandbox / description
      Previous value: -"Optional. Set true only on the first consumer umbrella prefill call when you want a fully synthetic shopper rehearsal that continues on the same consumer tool set."New value: +"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."
  6. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/idempotency/safety profile, but the description adds substantial behavior the annotations cannot express: stateless MCP requiring an `intake_access_token`, reuse of uid plus latest token on follow-ups, legacy host session authorization, token privacy, and the 'not submitted yet' reassurance rule. These are real operational constraints an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The intent is front-loaded, but the paragraph bloats: the full list of nine sibling tool names is enumerated mid-sentence, the canonical key list is repeated from the schema, and 'Do not send vehicles rows before submission' appears twice. Several sentences about tokens and sessions could be compressed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich per-parameter descriptions, the description covers the handoff contract, token lifecycle, sandbox mode, and consent timing well enough to call correctly. It stops short of describing failure modes or what the returned uid/token look like, but the output schema carries that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already spells out canonical intake keys, the `sandbox` semantics, the `field_estimates` provenance rows, and the `idempotency_key` retry contract, so the description largely restates rather than extends. The one added nuance ('do not send vehicles rows before submission') is useful but appears verbatim in the schema too, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the verb (prefill handoff), the resource (umbrella consumer intake), and the exact triggering condition ('shopper wants Coverage Cat to shop for, compare, or buy umbrella insurance and no operator bearer token is present'). It also distinguishes this entry point from follow-up siblings by naming the whole consumer-operated subset that comes after it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit sequencing guidance: call this on cold start before asking the questionnaire, then stay on the named follow-up tools (`consumer_intake_issues`, `consumer_intake_patch`, `umbrella_consumer_select`, ...). It also states a clear when-not ('Coverage Cat will not resume or expose a prior consumer umbrella draft based on email alone') and the sandbox rehearsal path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources