Clients: let your AI manage your Hutsenpiller account. Shoppers: compare TN auto, home, flood, life.
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.
Use this first when someone asks for a Tennessee car, home, flood or term life insurance quote, an insurance review, or to compare insurance companies. Checks whether a ZIP code is in the area Hutsenpiller Insurance quotes (Tennessee). This is the first step of a quote. zip_code: the shopper's 5 digit home ZIP code. lines: AUTO, HOME or both (default both); for flood or life send AUTO or omit it, then use start_flood_quote or start_life_quote. Returns eligibility, the consent text the shopper must read word for word and agree to before a quote starts, and a checklist of the details a quote needs.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http insurance-quotes https://my.hutins.com/mcp
Use this first when someone asks for a Tennessee car, home, flood or term life insurance quote, an insurance review, or to compare insurance companies. Checks whether a ZIP code is in the area Hutsenpiller Insurance quotes (Tennessee). This is the first step of a quote. zip_code: the shopper's 5 digit home ZIP code. lines: AUTO, HOME or both (default both); for flood or life send AUTO or omit it, then use start_flood_quote or start_life_quote. Returns eligibility, the consent text the shopper must read word for word and agree to before a quote starts, and a checklist of the details a quote needs.
| Argument | Type | Description |
|---|---|---|
| lines | any | |
| zip_code* | string |
{
"type": "object",
"title": "check_eligibilityArguments",
"required": [
"zip_code"
],
"properties": {
"lines": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"AUTO",
"HOME"
],
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Lines",
"default": null
},
"zip_code": {
"type": "string",
"title": "Zip Code"
}
}
}Lists the fields and allowed values update_quote accepts for one section. driver_history_codes maps accidents and tickets to codes: claims go in driverDetails.claims (code, date, amountPaid) and tickets in driverDetails.violations (code, date).
| Argument | Type | Description |
|---|---|---|
| section* | string |
{
"type": "object",
"title": "field_guideArguments",
"required": [
"section"
],
"properties": {
"section": {
"enum": [
"applicant",
"driver",
"driver_history_codes",
"vehicle",
"auto_policy",
"auto_prior_insurance",
"home_policy",
"home_coverage",
"home_property",
"home_utilities",
"home_underwriting",
"home_claim",
"home_prior_insurance",
"intake",
"address"
],
"type": "string",
"title": "Section"
}
}
}Current clients only. The carrier's 24 hour claims number for a policy, plus how to reach Hutsenpiller Insurance. Use when the client needs to report a claim.
| Argument | Type | Description |
|---|---|---|
| policy_id* | string | |
| client_session* | string |
{
"type": "object",
"title": "get_claim_contactsArguments",
"required": [
"client_session",
"policy_id"
],
"properties": {
"policy_id": {
"type": "string",
"title": "Policy Id"
},
"client_session": {
"type": "string",
"title": "Client Session"
}
}
}Current clients only. Limits and deductibles for one policy in plain words. The policy documents are the binding contract.
| Argument | Type | Description |
|---|---|---|
| policy_id* | string | |
| client_session* | string |
{
"type": "object",
"title": "get_coverage_summaryArguments",
"required": [
"client_session",
"policy_id"
],
"properties": {
"policy_id": {
"type": "string",
"title": "Policy Id"
},
"client_session": {
"type": "string",
"title": "Client Session"
}
}
}Current clients only. Without document_id lists the client's documents (policy documents and auto ID cards). With document_id, or 'idcard:<policy_id>', returns a short-lived link.
| Argument | Type | Description |
|---|---|---|
| document_id | any | |
| client_session* | string |
{
"type": "object",
"title": "get_documentArguments",
"required": [
"client_session"
],
"properties": {
"document_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Document Id",
"default": null
},
"client_session": {
"type": "string",
"title": "Client Session"
}
}
}Prices a verified flood estimate (first call) and returns it (later calls). Returns the estimated annual premium, flood zone and what it means, whether lenders usually require flood insurance there, and a notice that must be shown with the price: the estimate comes from the flood carrier's test environment, is not an offer and cannot be bound online. To buy, call request_agent with the quote_id.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string |
{
"type": "object",
"title": "get_flood_quoteArguments",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}Prices a verified term life estimate (first call) and returns it (later calls). Returns the best monthly premium, how many carriers were compared, and up to 5 options with monthly premium, AM Best rating and whether an exam is needed. Carrier names are shared by the agent. Show the notice with the prices: estimates, not offers; final rates depend on underwriting. To apply, call request_agent with the quote_id.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string |
{
"type": "object",
"title": "get_life_quotesArguments",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}Current clients only. Details for one policy: vehicles and drivers (auto), insured property (home), premium and term. Driver's license numbers are never returned and dates of birth show the year only.
| Argument | Type | Description |
|---|---|---|
| policy_id* | string | |
| client_session* | string |
{
"type": "object",
"title": "get_policy_detailsArguments",
"required": [
"client_session",
"policy_id"
],
"properties": {
"policy_id": {
"type": "string",
"title": "Policy Id"
},
"client_session": {
"type": "string",
"title": "Client Session"
}
}
}Returns a quote's status, what is missing, and the prices once ready: prices from multiple carriers cheapest first. Use it to answer "what would my insurance cost" or "am I overpaying". Status values: collecting, queued, rating, needs_info, in_review, done, failed. When done, results lists carriers cheapest first per line, a results_url for the shopper, a disclaimer and, for home, a flood notice that belong with the prices.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string |
{
"type": "object",
"title": "get_quote_statusArguments",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}Call this first in every conversation. Returns the question to ask the user and which tools each answer leads to: a current Hutsenpiller Insurance client (sign in by email code, then manage the account) or someone looking for quotes (auto, home, flood or term life in Tennessee).
No arguments.
{
"type": "object",
"title": "identify_userArguments",
"properties": {}
}Current clients only (needs client_session from verify_client_code). Lists the client's active policies with Hutsenpiller Insurance: carrier, line, policy number, term dates and status, with the policy ids the other account tools use.
| Argument | Type | Description |
|---|---|---|
| client_session* | string |
{
"type": "object",
"title": "list_my_policiesArguments",
"required": [
"client_session"
],
"properties": {
"client_session": {
"type": "string",
"title": "Client Session"
}
}
}Decodes a VIN, or walks the vehicle catalog for exact year, make, model and subModel values. A VIN gives the most exact result. Without one, year lists makes, year+make lists models (model names include the trim, for example CR-V EXL), and year+make+model lists subModels.
| Argument | Type | Description |
|---|---|---|
| vin | any | |
| make | any | |
| year | any | |
| model | any |
{
"type": "object",
"title": "lookup_vehicleArguments",
"properties": {
"vin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vin",
"default": null
},
"make": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Make",
"default": null
},
"year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Year",
"default": null
},
"model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Model",
"default": null
}
}
}Asks a licensed Hutsenpiller Insurance agent to contact the shopper. Use this when the user wants an insurance review of their current policies, to buy a quoted policy, or to talk to a person. Covers buying a quoted policy, talking to a person, lines not quoted here (renters, condo, commercial, umbrella), buying a flood policy, applying for term life, and quotes that could not finish. Takes a quote_id when there is one, otherwise a phone or email. Contact details must be ones the shopper agreed to share.
| Argument | Type | Description |
|---|---|---|
| any | ||
| phone | any | |
| message | any | |
| quote_id | any | |
| last_name | any | |
| first_name | any | |
| preferred_time | any | |
| preferred_contact | string |
{
"type": "object",
"title": "request_agentArguments",
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Email",
"default": null
},
"phone": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Phone",
"default": null
},
"message": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Message",
"default": null
},
"quote_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Quote Id",
"default": null
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Name",
"default": null
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "First Name",
"default": null
},
"preferred_time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Preferred Time",
"default": null
},
"preferred_contact": {
"enum": [
"call",
"text",
"email"
],
"type": "string",
"title": "Preferred Contact",
"default": "call"
}
}
}Current clients only. Sends a service request to a licensed Hutsenpiller agent (add or change a vehicle or driver, mortgagee or lienholder, home coverage, a coverage or billing question, a document, a cancellation or an account review). It creates a ticket; it never changes the policy. The agent follows up by the next business day. message: 10 to 2000 characters.
| Argument | Type | Description |
|---|---|---|
| topic | string | |
| message* | string | |
| policy_id | any | |
| client_session* | string | |
| preferred_contact | string |
{
"type": "object",
"title": "request_service_changeArguments",
"required": [
"client_session",
"message"
],
"properties": {
"topic": {
"enum": [
"vehicle",
"driver",
"mortgagee_or_lienholder",
"home_coverage",
"coverage_question",
"document",
"billing",
"cancellation",
"account_review"
],
"type": "string",
"title": "Topic",
"default": "coverage_question"
},
"message": {
"type": "string",
"title": "Message"
},
"policy_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Policy Id",
"default": null
},
"client_session": {
"type": "string",
"title": "Client Session"
},
"preferred_contact": {
"enum": [
"phone",
"text",
"email"
],
"type": "string",
"title": "Preferred Contact",
"default": "phone"
}
}
}For current Hutsenpiller Insurance clients. Sends a 6 digit sign in code to the email if it matches a client on file. The reply is identical whether or not it matches, so do not tell the user whether they are a client. Returns a challenge_id for verify_client_code. The code expires in 10 minutes. A few sends per email per hour are allowed.
| Argument | Type | Description |
|---|---|---|
| email* | string |
{
"type": "object",
"title": "start_client_sign_inArguments",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"title": "Email"
}
}
}Use this when someone asks about flood insurance or a flood quote for a Tennessee home. Starts a flood estimate and sends the shopper a 6 digit verification code. Requires that check_eligibility returned eligible and that the shopper read the consent text and agreed (consent_version from check_eligibility). building_coverage: dollars of coverage for the structure, 20000 to 5000000 (the rebuild cost is a good guide; 250000 is the federal program maximum many lenders ask for). contents_coverage: 0 to 1000000. The flood zone comes from the address. After verify_contact, call get_flood_quote. Prices are estimates from a test environment for now and cannot be bound online.
| Argument | Type | Description |
|---|---|---|
| city* | string | |
| email* | string | |
| street* | string | |
| zip_code* | string | |
| last_name* | string | |
| verify_by | string | |
| first_name* | string | |
| mobile_phone* |
Use this when someone in Tennessee asks about term life insurance or a life insurance quote. Starts a term life estimate across many carriers and sends the shopper a 6 digit code. Term life only (ages 18 to 85). Requires the consent text from check_eligibility, read and agreed. date_of_birth is YYYY-MM-DD. death_benefit: 25000 to 10000000 dollars. health_class is the shopper's own estimate: 1 excellent health (preferred plus), 2 very good (preferred), 3 good (standard plus), 4 average (standard). After verify_contact, call get_life_quotes. Prices are estimates, not offers. To apply, use request_agent.
| Argument | Type | Description |
|---|---|---|
| email* | string | |
| gender* | string | |
| tobacco* | string | |
| last_name* | string | |
| verify_by | string | |
| first_name* | string | |
| term_years* | integer | |
| health_class* | integer |
Starts a Tennessee auto and/or home insurance quote that compares multiple carriers, and sends the shopper a 6 digit verification code. Requires that check_eligibility returned eligible and that the shopper read the consent text and agreed: consent_accepted must be true and consent_version must be the version check_eligibility returned. Dates are YYYY-MM-DD. desired_start_date is when the new policy should begin (default about 18 days out; carriers quote up to 45 days ahead). verify_by is how the code is sent. assistant_name is the name of the calling assistant, used for attribution only. Returns a quote_id for every later call and the list of details still missing.
| Argument | Type | Description |
|---|---|---|
| city* | string | |
| unit | any | |
| email* | string | |
| lines* | array | |
| street* | string | |
| zip_code* | string | |
| last_name* | string | |
| verify_by | string |
Sends a complete, verified quote to the carriers for pricing. Accepted only when nothing is missing and the contact is verified. Pricing usually takes 1 to 3 minutes; get_quote_status reports progress. When the agency is busy the quote waits in line and the status says so.
| Argument | Type | Description |
|---|---|---|
| quote_id* | string |
{
"type": "object",
"title": "submit_quoteArguments",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}Adds or changes details on a quote. Objects merge; lists replace whole. data uses these keys (field_guide lists every accepted field and value): - applicants: list of every person in the household. Exactly one has relationToInsured INSURED. Each needs firstName, lastName, dateOfBirth, sex, maritalStatus; drivers also need isDriver true and driverDetails.licenseState. Lists replace whole, so always resend everyone. - auto: residenceType, priorInsurance, vehicles (list; each needs a vin, or year+make+model+subModel from lookup_vehicle, plus ownershipStatus, primaryUse, annualMileage). - home: coverage.dwellingCoverage (estimated rebuild cost in dollars), property (yearBuilt, squareFootage, constructionType, roofMaterial, roofUpdateYear, ...), utilities, underwriting, claims. - Top level: dateOfBirth, lengthAtCurrentAddress, email, phone, primaryAddress. Coverage limits are set by the agency and cannot be sent here. Returns a short summary of what is on file and the remaining missing items.
| Argument | Type | Description |
|---|---|---|
| data* | object | |
| quote_id* | string |
{
"type": "object",
"title": "update_quoteArguments",
"required": [
"quote_id",
"data"
],
"properties": {
"data": {
"type": "object",
"title": "Data",
"additionalProperties": true
},
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}Checks the 6 digit code from the client's email. On success returns client_session (valid 30 minutes) for the account tools. Five tries per code. On failure, ask the client to check the newest email or start again with start_client_sign_in.
| Argument | Type | Description |
|---|---|---|
| code* | string | |
| challenge_id* | string |
{
"type": "object",
"title": "verify_client_codeArguments",
"required": [
"challenge_id",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code"
},
"challenge_id": {
"type": "string",
"title": "Challenge Id"
}
}
}Checks the 6 digit code the shopper received, or sends a new one. code verifies the contact. resend=true (with an optional channel) sends a fresh code. A quote cannot be submitted until the contact is verified.
| Argument | Type | Description |
|---|---|---|
| code | any | |
| resend | boolean | |
| channel | string | |
| quote_id* | string |
{
"type": "object",
"title": "verify_contactArguments",
"required": [
"quote_id"
],
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code",
"default": null
},
"resend": {
"type": "boolean",
"title": "Resend",
"default": false
},
"channel": {
"enum": [
"sms",
"email"
],
"type": "string",
"title": "Channel",
"default": "sms"
},
"quote_id": {
"type": "string",
"title": "Quote Id"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.
| string |
| assistant_name | any |
| consent_version* | string |
| consent_accepted* | boolean |
| building_coverage* | integer |
| contents_coverage* | integer |
{
"type": "object",
"title": "start_flood_quoteArguments",
"required": [
"first_name",
"last_name",
"email",
"mobile_phone",
"street",
"city",
"zip_code",
"building_coverage",
"contents_coverage",
"consent_accepted",
"consent_version"
],
"properties": {
"city": {
"type": "string",
"title": "City"
},
"email": {
"type": "string",
"title": "Email"
},
"street": {
"type": "string",
"title": "Street"
},
"zip_code": {
"type": "string",
"title": "Zip Code"
},
"last_name": {
"type": "string",
"title": "Last Name"
},
"verify_by": {
"enum": [
"sms",
"email"
],
"type": "string",
"title": "Verify By",
"default": "sms"
},
"first_name": {
"type": "string",
"title": "First Name"
},
"mobile_phone": {
"type": "string",
"title": "Mobile Phone"
},
"assistant_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assistant Name",
"default": null
},
"consent_version": {
"type": "string",
"title": "Consent Version"
},
"consent_accepted": {
"type": "boolean",
"title": "Consent Accepted"
},
"building_coverage": {
"type": "integer",
"title": "Building Coverage"
},
"contents_coverage": {
"type": "integer",
"title": "Contents Coverage"
}
}
}| mobile_phone* | string |
| date_of_birth* | string |
| death_benefit* | integer |
| assistant_name | any |
| consent_version* | string |
| consent_accepted* | boolean |
{
"type": "object",
"title": "start_life_quoteArguments",
"required": [
"first_name",
"last_name",
"email",
"mobile_phone",
"date_of_birth",
"gender",
"death_benefit",
"term_years",
"tobacco",
"health_class",
"consent_accepted",
"consent_version"
],
"properties": {
"email": {
"type": "string",
"title": "Email"
},
"gender": {
"enum": [
"Male",
"Female"
],
"type": "string",
"title": "Gender"
},
"tobacco": {
"enum": [
"Never",
"Previously",
"Currently"
],
"type": "string",
"title": "Tobacco"
},
"last_name": {
"type": "string",
"title": "Last Name"
},
"verify_by": {
"enum": [
"sms",
"email"
],
"type": "string",
"title": "Verify By",
"default": "sms"
},
"first_name": {
"type": "string",
"title": "First Name"
},
"term_years": {
"enum": [
10,
15,
20,
25,
30
],
"type": "integer",
"title": "Term Years"
},
"health_class": {
"enum": [
1,
2,
3,
4
],
"type": "integer",
"title": "Health Class"
},
"mobile_phone": {
"type": "string",
"title": "Mobile Phone"
},
"date_of_birth": {
"type": "string",
"title": "Date Of Birth"
},
"death_benefit": {
"type": "integer",
"title": "Death Benefit"
},
"assistant_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assistant Name",
"default": null
},
"consent_version": {
"type": "string",
"title": "Consent Version"
},
"consent_accepted": {
"type": "boolean",
"title": "Consent Accepted"
}
}
}| first_name* | string |
| mobile_phone* | string |
| date_of_birth | any |
| assistant_name | any |
| consent_version* | string |
| consent_accepted* | boolean |
| years_at_address | any |
| desired_start_date | any |
{
"type": "object",
"title": "start_quoteArguments",
"required": [
"lines",
"first_name",
"last_name",
"email",
"mobile_phone",
"street",
"city",
"zip_code",
"consent_accepted",
"consent_version"
],
"properties": {
"city": {
"type": "string",
"title": "City"
},
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit",
"default": null
},
"email": {
"type": "string",
"title": "Email"
},
"lines": {
"type": "array",
"items": {
"enum": [
"AUTO",
"HOME"
],
"type": "string"
},
"title": "Lines"
},
"street": {
"type": "string",
"title": "Street"
},
"zip_code": {
"type": "string",
"title": "Zip Code"
},
"last_name": {
"type": "string",
"title": "Last Name"
},
"verify_by": {
"enum": [
"sms",
"email"
],
"type": "string",
"title": "Verify By",
"default": "sms"
},
"first_name": {
"type": "string",
"title": "First Name"
},
"mobile_phone": {
"type": "string",
"title": "Mobile Phone"
},
"date_of_birth": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Date Of Birth",
"default": null
},
"assistant_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Assistant Name",
"default": null
},
"consent_version": {
"type": "string",
"title": "Consent Version"
},
"consent_accepted": {
"type": "boolean",
"title": "Consent Accepted"
},
"years_at_address": {
"anyOf": [
{
"enum": [
"SIXTY_DAYS_OR_LESS",
"SIXTY_ONE_DAYS_TO_ONE_YEAR",
"ONE_TO_TWO_YEARS",
"TWO_TO_SIX_YEARS",
"SIX_TO_ELEVEN_YEARS",
"ELEVEN_TO_TWENTY_ONE_YEARS",
"TWENTY_ONE_YEARS_OR_MORE"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Years At Address",
"default": null
},
"desired_start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Desired Start Date",
"default": null
}
}
}