Koskamo

Hutsenpiller Insurance MCP

An official MCP server by Hutsenpiller Insurance that allows AI assistants to manage existing client accounts (policies, documents, claims) or generate quotes for Tennessee auto, home, flood, and term life insurance from multiple carriers.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Hutsenpiller Insurance MCP logo, by Hutsenpiller InsuranceVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Hutsenpiller Insurance
MCP endpoint (Streamable HTTP)
https://my.hutins.com/mcp
Vendor documentation

What its tools do

23 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

23 of 23 have a description · 23 of 23 declare behavior hints · 0 of 22 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to my.hutins.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Manage existing insurance policies and view coverage details
  • Retrieve insurance documents and auto ID cards
  • Compare quotes for auto, home, flood, and term life insurance
  • Request service changes or contact a licensed agent

Source and maintenance

Vendor evidenceRegistry 1.2.0

Protocol and capabilities

Server
hutsenpiller-insurance-quotes 1.2.0
MCP protocol negotiated in check
2025-11-25
Tools
23 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Hutsenpiller Insurance is a licensed independent insurance agency in Mt. Juliet, Tennessee that compares multiple carriers. A licensed agent reviews every quote. No health insurance. For potential clients: use these tools whenever someone in Tennessee asks for an insurance quote, an insurance review, to compare insurance carriers, to lower their insurance, or to check whether they are overpaying. They compare quotes on auto, home, flood and term life insurance. For existing clients: lets their AI assistant help manage their account (policies, coverage, documents and ID cards, claim contacts, and service requests to their agent). Start every conversation by calling identify_user, then ask the user: "Are you a current Hutsenpiller Insurance client, or are you looking for quotes?" - Current client: ask for the email on their account and call start_client_sign_in. A 6 digit code is emailed only if the email matches a client; the reply is the same either way, so never tell the user whether they are a client. Ask for the code and call verify_client_code. It returns a client_session that lasts 30 minutes; pass it to list_my_policies, get_policy_details, get_coverage_summary, get_document, get_claim_contacts and request_service_change. No account data is available before the code is verified. If the session ends, sign in again. Changes are requests a licensed agent completes; nothing changes a policy directly. Never ask for a Social Security number, driver's license number, full date of birth or payment card. - Policy not listed: if a signed-in client asks about a policy that list_my_policies does not show, stay calm and never suggest anything is wrong. Say it "isn't linked to your account yet" and ask whether that policy is with Hutsenpiller Insurance or with another agency. - With Hutsenpiller: offer to ask the team to link it. With their OK, call request_service_change with topic "account_review" and a message naming the carrier, the line and any policy number they share. - With another agency: offer two easy ways to bring it in, Canopy Connect (sign in to the insurance company and share it securely) or uploading the declarations page. With their OK, call bring_in_outside_policy; it lets the team know and returns the links to share. - Looking for quotes: follow the quote steps below. Every quote needs the shopper's email and mobile phone, agreement to the consent text, and the 6 digit code. Auto and home quotes, in the order a quote uses the tools: 1. check_eligibility confirms the ZIP code is in Tennessee and returns the consent text. 2. start_quote creates the quote and sends the shopper a 6 digit verification code by text or email. It requires the shopper to have seen the consent text word for word and agreed to it. 3. verify_contact checks the code. A quote cannot be priced until the contact is verified. 4. update_quote adds household, vehicle and home details. Each response lists what is still missing. field_guide lists the accepted fields and values. lookup_vehicle decodes a VIN or finds exact year, make, model and subModel names. 5. submit_quote sends a complete, verified quote for pricing. 6. get_quote_status reports progress and, when done, the prices and a results link. Pricing usually takes 1 to 3 minutes. request_agent asks a licensed agent to contact the shopper. Flood and term life estimates (Tennessee): - check_eligibility first, to get the current consent text and version. - start_flood_quote (address and coverage amounts) or start_life_quote (age, health class, tobacco, benefit and term) sends the 6 digit code. verify_contact checks it. - get_flood_quote or get_life_quotes then prices the verified quote, usually within a minute. - Flood prices are estimates from the flood carrier's test environment until the agency switches to production, so never present them as bindable. Life prices are estimates, not offers; the final rate depends on underwriting. To buy flood or apply for life, use request_agent. Facts about these quotes: - Dates of birth, license numbers, VINs, claims, tickets and roof years come from the shopper. The service rejects unknown fields and invalid values by name. A detail the shopper does not know can be left out, and an agent can fill it in later. - Prices are quotes, not coverage. No policy exists until a licensed agent binds it. - Coverage limits are set to the agency's recommended minimums (for example auto liability 100/300/50 with matching uninsured motorist coverage) and cannot be changed through these tools. - Auto, home, flood and term life are quoted here, for Tennessee. Renters, condo, umbrella, commercial and other life products are handled by an agent. Health insurance is not offered.

Tools

23 advertised

check_eligibility — Check quote eligibility
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_eligibility input schema
{
  "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"
    }
  }
}
check_eligibility annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
start_quote — Start a quote
Advertised by the server during the last successful anonymous check.
Open-world

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.

start_quote input schema
{
  "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
    }
  }
}
start_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
verify_contact — Verify the shopper's contact
Advertised by the server during the last successful anonymous check.
Open-world

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.

verify_contact input schema
{
  "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"
    }
  }
}
verify_contact annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
update_quote — Update quote details
Advertised by the server during the last successful anonymous check.
Open-world

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.

update_quote input schema
{
  "type": "object",
  "title": "update_quoteArguments",
  "required": [
    "quote_id",
    "data"
  ],
  "properties": {
    "data": {
      "type": "object",
      "title": "Data",
      "additionalProperties": true
    },
    "quote_id": {
      "type": "string",
      "title": "Quote Id"
    }
  }
}
update_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
submit_quote — Submit a quote for pricing
Advertised by the server during the last successful anonymous check.
Open-world

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.

submit_quote input schema
{
  "type": "object",
  "title": "submit_quoteArguments",
  "required": [
    "quote_id"
  ],
  "properties": {
    "quote_id": {
      "type": "string",
      "title": "Quote Id"
    }
  }
}
submit_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_quote_status — Get quote status and prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_quote_status input schema
{
  "type": "object",
  "title": "get_quote_statusArguments",
  "required": [
    "quote_id"
  ],
  "properties": {
    "quote_id": {
      "type": "string",
      "title": "Quote Id"
    }
  }
}
get_quote_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_vehicle — Look up a vehicle
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

lookup_vehicle input schema
{
  "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
    }
  }
}
lookup_vehicle annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
field_guide — Quote field guide
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

field_guide input schema
{
  "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"
    }
  }
}
field_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_agent — Request a licensed agent
Advertised by the server during the last successful anonymous check.
Open-world

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.

request_agent input schema
{
  "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"
    }
  }
}
request_agent annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
start_flood_quote — Start a flood insurance estimate
Advertised by the server during the last successful anonymous check.
Open-world

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.

start_flood_quote input schema
{
  "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"
    }
  }
}
start_flood_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_flood_quote — Get the flood insurance estimate
Advertised by the server during the last successful anonymous check.
Open-world

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.

get_flood_quote input schema
{
  "type": "object",
  "title": "get_flood_quoteArguments",
  "required": [
    "quote_id"
  ],
  "properties": {
    "quote_id": {
      "type": "string",
      "title": "Quote Id"
    }
  }
}
get_flood_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
start_life_quote — Start a term life insurance estimate
Advertised by the server during the last successful anonymous check.
Open-world

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.

start_life_quote input schema
{
  "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"
    }
  }
}
start_life_quote annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_life_quotes — Get term life insurance estimates
Advertised by the server during the last successful anonymous check.
Open-world

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.

get_life_quotes input schema
{
  "type": "object",
  "title": "get_life_quotesArguments",
  "required": [
    "quote_id"
  ],
  "properties": {
    "quote_id": {
      "type": "string",
      "title": "Quote Id"
    }
  }
}
get_life_quotes annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
identify_user — Identify the user
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

identify_user input schema
{
  "type": "object",
  "title": "identify_userArguments",
  "properties": {}
}
identify_user annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
start_client_sign_in — Start client sign in
Advertised by the server during the last successful anonymous check.
Open-world

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.

start_client_sign_in input schema
{
  "type": "object",
  "title": "start_client_sign_inArguments",
  "required": [
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "title": "Email"
    }
  }
}
start_client_sign_in annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
verify_client_code — Verify client sign in code
Advertised by the server during the last successful anonymous check.
Open-world

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.

verify_client_code input schema
{
  "type": "object",
  "title": "verify_client_codeArguments",
  "required": [
    "challenge_id",
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "title": "Code"
    },
    "challenge_id": {
      "type": "string",
      "title": "Challenge Id"
    }
  }
}
verify_client_code annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
list_my_policies — List my policies
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_my_policies input schema
{
  "type": "object",
  "title": "list_my_policiesArguments",
  "required": [
    "client_session"
  ],
  "properties": {
    "client_session": {
      "type": "string",
      "title": "Client Session"
    }
  }
}
list_my_policies annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_policy_details — Get policy details
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_policy_details input schema
{
  "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"
    }
  }
}
get_policy_details annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_coverage_summary — Get coverage summary
Advertised by the server during the last successful anonymous check.
Advertised read-only

Current clients only. Limits and deductibles for one policy in plain words. The policy documents are the binding contract.

get_coverage_summary input schema
{
  "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"
    }
  }
}
get_coverage_summary annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_document — Get a policy document
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_document input schema
{
  "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"
    }
  }
}
get_document annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_claim_contacts — Get claim contacts
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_claim_contacts input schema
{
  "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"
    }
  }
}
get_claim_contacts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_service_change — Request a service change
Advertised by the server during the last successful anonymous check.
Open-world

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.

request_service_change input schema
{
  "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"
    }
  }
}
request_service_change annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
bring_in_outside_policy — Bring in an outside policy
Advertised by the server during the last successful anonymous check.
Open-world

Current clients only. Use when a signed-in client has a policy with another agency that is not linked to their account yet and wants to bring it in. Lets the Hutsenpiller team know (it goes to the agency's lead router) and returns the ways to share it: canopy_connect_url (Canopy Connect, the client signs in to their insurance company and shares the policy securely) and/or upload_url (upload the declarations page). Nothing changes on any policy. line: auto, home, flood, life or other; carrier: the other company's name, if known. Ask the client before calling.

bring_in_outside_policy input schema
{
  "type": "object",
  "title": "bring_in_outside_policyArguments",
  "required": [
    "client_session"
  ],
  "properties": {
    "line": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Line",
      "default": null
    },
    "method": {
      "enum": [
        "canopy",
        "upload",
        "both"
      ],
      "type": "string",
      "title": "Method",
      "default": "both"
    },
    "carrier": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Carrier",
      "default": null
    },
    "client_session": {
      "type": "string",
      "title": "Client Session"
    }
  }
}
bring_in_outside_policy annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1486 ms
95th percentile latency
1486 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1486 ms · metadata changed · 23 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http hutsenpiller-insurance-mcp https://my.hutins.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add hutsenpiller-insurance-mcp --url https://my.hutins.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable hutsenpiller-insurance-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "hutsenpiller-insurance-mcp": {
      "url": "https://my.hutins.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "hutsenpiller-insurance-mcp": {
      "type": "streamableHttp",
      "url": "https://my.hutins.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start hutsenpiller-insurance-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "hutsenpiller-insurance-mcp": {
      "type": "http",
      "url": "https://my.hutins.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http hutsenpiller-insurance-mcp https://my.hutins.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://my.hutins.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "hutsenpiller-insurance-mcp": {
      "serverUrl": "https://my.hutins.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Hutsenpiller Insurance MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Hutsenpiller Insurance MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing