{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "applicant": {
      "type": "object",
      "properties": {
        "zipCode": {
          "type": "string",
          "description": "5-digit US zip code (shared \u2014 the auto garaging address and the property address are the same for a bundle)"
        },
        "state": {
          "type": "string",
          "description": "2-letter US state code (e.g. TX, CA, NY). Derive this from the ZIP code yourself \u2014 do NOT ask the user for their state. Only ask for the state if you genuinely cannot determine it from the ZIP."
        }
      },
      "required": [
        "zipCode",
        "state"
      ]
    },
    "auto": {
      "type": "object",
      "properties": {
        "vehicles": {
          "minItems": 1,
          "maxItems": 6,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "vin": {
                "description": "17-character VIN. If provided, the chatbot decodes it to year/make/model automatically \u2014 do NOT also ask the user for year/make/model. Provide EITHER a vin OR year+make+model.",
                "type": "string"
              },
              "year": {
                "description": "Vehicle model year (e.g. 2024). Required only if no vin is provided.",
                "type": "string"
              },
              "make": {
                "description": "Vehicle make (e.g. Honda, Toyota, Ford). Required only if no vin is provided.",
                "type": "string"
              },
              "model": {
                "description": "Vehicle model (e.g. Accord, Camry, F-150). Required only if no vin is provided.",
                "type": "string"
              },
              "collisionCoverage": {
                "default": "1000",
                "description": "Collision deductible. Covers damages to your vehicle if it collides with something. Default: \"1000\". Do NOT ask the user about this unless they volunteer a preference.",
                "type": "string",
                "enum": [
                  "500",
                  "1000",
                  "No Coverage"
                ]
              },
              "comprehensiveCoverage": {
                "default": "1000",
                "description": "Comprehensive deductible. Covers damages from theft, vandalism, animals, hail. Default: \"1000\". Do NOT ask the user about this unless they volunteer a preference.",
                "type": "string",
                "enum": [
                  "500",
                  "1000",
                  "No Coverage"
                ]
              }
            }
          },
          "description": "Vehicles to insure (1-6)"
        },
        "drivers": {
          "minItems": 1,
          "maxItems": 6,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "dateOfBirth": {
                "type": "string",
                "description": "Driver date of birth in MM/DD/YYYY format."
              },
              "gender": {
                "type": "string",
                "enum": [
                  "M",
                  "F",
                  "X"
                ],
                "description": "M=male, F=female, X=non-binary/other"
              },
              "maritalStatus": {
                "type": "string",
                "enum": [
                  "single",
                  "married",
                  "domestic_partner",
                  "widowed",
                  "divorced",
                  "separated"
                ]
              },
              "relation": {
                "description": "Relationship to primary insured. First driver defaults to \"Insured\".",
                "type": "string",
                "enum": [
                  "Insured",
                  "Spouse",
                  "Parent",
                  "Child",
                  "Other"
                ]
              }
            },
            "required": [
              "dateOfBirth",
              "gender",
              "maritalStatus"
            ]
          },
          "description": "Drivers on the policy (1-6)"
        },
        "currentlyInsured": {
          "description": "Whether the driver currently has auto insurance",
          "type": "boolean"
        },
        "yearsOfContinuousCoverage": {
          "description": "Years of continuous auto insurance coverage",
          "type": "number"
        },
        "policyInfo": {
          "description": "Policy-level coverage options. Omit entirely to use silent defaults \u2014 the chatbot fills these in server-side.",
          "type": "object",
          "properties": {
            "coverageLimits": {
              "type": "object",
              "properties": {
                "bodilyInjury": {
                  "default": "State Minimum",
                  "description": "Bodily injury liability limit. Default: \"State Minimum\". Do NOT ask the user about this unless they volunteer a preference.",
                  "type": "string",
                  "enum": [
                    "State Minimum",
                    "10/20",
                    "50/100",
                    "100/300",
                    "250/500"
                  ]
                },
                "propertyDamage": {
                  "default": "State Minimum",
                  "description": "Property damage liability limit, in dollars. Default: \"State Minimum\". Do NOT ask the user about this unless they volunteer a preference.",
                  "type": "string",
                  "enum": [
                    "50000",
                    "100000",
                    "250000",
                    "State Minimum"
                  ]
                },
                "uninsuredMotorist": {
                  "default": "State Minimum",
                  "description": "Uninsured motorist limit. Default: \"State Minimum\". Do NOT ask the user about this unless they volunteer a preference.",
                  "type": "string",
                  "enum": [
                    "State Minimum",
                    "10/20",
                    "50/100",
                    "100/300",
                    "250/500"
                  ]
                },
                "underinsuredMotorist": {
                  "default": "State Minimum",
                  "description": "Underinsured motorist limit. Default: \"State Minimum\". Do NOT ask the user about this unless they volunteer a preference.",
                  "type": "string",
                  "enum": [
                    "State Minimum",
                    "10/20",
                    "50/100",
                    "100/300",
                    "250/500"
                  ]
                }
              }
            }
          }
        }
      },
      "required": [
        "vehicles",
        "drivers"
      ],
      "description": "Auto side of the bundle \u2014 vehicles and drivers. Same rules as get_auto_insurance_quote (coverage defaults applied silently; do NOT ask about deductibles/limits)."
    },
    "property": {
      "type": "object",
      "properties": {
        "ownership": {
          "type": "string",
          "enum": [
            "own",
            "rent"
          ],
          "description": "Whether the user OWNS the property (homeowners or condo insurance) or RENTS it (renters/tenant insurance). This is the product discriminator \u2014 \"rent\" \u2192 renters, \"own\" \u2192 homeowners/condo. Required \u2014 ask the user if it is not clear from context."
        },
        "propertyType": {
          "description": "Type of dwelling, independent of own/rent: \"Home\" (house), \"Condo\" (condominium unit), or \"Apartment\". REQUIRED for OWNED property \u2014 it selects home vs condo pricing, so ask the user (do not guess). For renters it is captured but does not change the estimate, and may be omitted.",
          "type": "string",
          "enum": [
            "Home",
            "Condo",
            "Apartment"
          ]
        },
        "squareFootage": {
          "description": "Approximate living area in square feet (e.g. 1800). REQUIRED for OWNED property \u2014 it is a primary rating input, so ask the user. Not used for renters.",
          "type": "number"
        },
        "yearBuilt": {
          "description": "4-digit year the home was built (e.g. \"1998\"). REQUIRED for OWNED property \u2014 used to derive home age, so ask the user. Not used for renters.",
          "type": "string"
        },
        "roofUpdateYear": {
          "description": "4-digit year the roof was last replaced or updated (e.g. \"2015\"). For OWNED property, collect it along with property type, square footage, and year built. If the user explicitly does not know it, that is fine \u2014 omit it and it defaults to the year built. Not used for renters.",
          "type": "string"
        }
      },
      "required": [
        "ownership"
      ],
      "description": "Property side of the bundle. Same rules as get_home_insurance_quote: ownership is the discriminator; for OWNED property collect property type, square footage, year built, AND roof-update year (roof defaults to the year built if the user does not know it; property type + square footage + year built are required); renters needs none of these."
    },
    "primaryProduct": {
      "default": "auto",
      "description": "Which product the user asked about FIRST. The single continue link routes to this product's buyflow and it is rendered first. Default \"auto\".",
      "type": "string",
      "enum": [
        "auto",
        "property"
      ]
    },
    "platform": {
      "description": "AI platform name for tracking (claude, chatgpt, gemini, copilot).",
      "type": "string"
    },
    "xcid": {
      "description": "Stable user/session identifier (UUID v4). Pass the SAME value used on any other tool calls in this conversation. If omitted, the chatbot mints one and returns it.",
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    }
  },
  "required": [
    "applicant",
    "auto",
    "property"
  ],
  "title": "get_bundle_insurance_quote input",
  "$comment": "Verbatim inputSchema of MCP tool get_bundle_insurance_quote from tools/list at https://choosemylo.com/api/gateway/chatbot/mcp (probed 2026-11-03)"
}