Quotor — Home & Auto Insurance Quotes
Real, bindable home & auto insurance quotes via MCP (Texas, expanding); human-completed bind.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"home-auto-insurance-quotes": {
"url": "https://mcp.quotor.ai"
}
}
}Remote endpoints
https://mcp.quotor.aistreamable-httpWhat it can do
Tool inventory
Tools (12)
🟢check_eligibility(product, intent, state)
Checks whether Libertas Insurance, a licensed independent agency, can quote and bind home, auto, or bundled (home + auto) insurance in the customer's state. A good first step when someone asks about insurance prices, switching carriers, or shopping for coverage, before collecting personal details. Pass the customer's two-letter state if you know it; otherwise the result lists the states Libertas serves so you can ask. Returns whether quoting and binding are available, plus a plain-language explanation.
Input Schema
{
"type": "object",
"properties": {
"product": {
"type": "string",
"enum": [
"auto",
"home",
"bundle"
],
"description": "Line of business: 'auto', 'home', or 'bundle' (home + auto)."
},
"intent": {
"type": "string",
"enum": [
"quote",
"bind"
],
"default": "quote",
"description": "Whether you're checking ability to 'quote' or to 'bind' (default 'quote')."
},
"state": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "The customer's two-letter U.S. state, if known (e.g. 'TX')."
}
},
"required": [
"product"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"can_quote": {
"type": "boolean"
},
"can_bind": {
"type": "boolean"
},
"state": {
"type": [
"string",
"null"
]
},
"next_step": {
"type": "string"
},
"explanation": {
"type": "string"
}
},
"description": "Whether quoting/binding is available for the customer's state + product.",
"additionalProperties": true
}🟢start_quote(product, referral_source, meta_codes)
Opens a new home, auto, or bundled (home + auto) quote with Libertas Insurance and returns a quote_id that every later call uses. For outside assistants the result also carries short notices Libertas must give the customer; notices.how_to_use explains when each applies. What the quote needs (one topic at a time keeps it quick): 1. Full name and date of birth for each person on the policy, with their relationship to the main applicant. 2. Home: the address of the home to insure and whether it's a new purchase (if so, also where the customer lives today), mortgage/escrow, and roof age if known ("not sure" is fine). 3. Auto: year, make, and model of each vehicle, plus the name and date of birth of any other drivers. 4. Email, phone, and the requested coverage start date (policy_terms.effective_date, YYYY-MM-DD). Then call get_quote_options. Libertas never needs a Social Security number, driver's license number, or payment details in the conversation; when one is required, the customer enters it on Libertas's own secure page.
Input Schema
{
"type": "object",
"properties": {
"product": {
"type": "string",
"enum": [
"auto",
"home",
"bundle"
],
"description": "Line of business to quote: 'auto', 'home', or 'bundle'."
},
"referral_source": {
"type": "string",
"description": "Optional referral/partner source tag for attribution."
},
"meta_codes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional internal meta codes; ignored unless recognized."
}
},
"required": [
"product"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"next_required_inputs": {
"type": "array",
"items": {
"type": "string"
}
},
"session_expires_at": {
"type": "string"
},
"notices": {
"type": "object"
}
},
"description": "The opened quote session.",
"additionalProperties": true
}🟡update_quote(quote_id, patch, meta_codes)
Adds or changes details on a quote: people, drivers, vehicles, the property, coverages, discounts, prior insurance, and policy terms. The patch schema lists every field Libertas accepts. Safe to call repeatedly; the latest value for a field wins, and lists replace earlier lists. Returns which fields were applied, which were rejected and why, and whether the quote has enough to run. Credit scores, driving and claims records, and decoded vehicle or public-record property details come straight from data providers, so they aren't accepted here, and carrier choice is made by the rating engine. If the customer changes a coverage after prices come back, apply it here and call get_quote_options again; re-quoting is free and takes about a minute. Coverage choices are the customer's, and a licensed Libertas agent can advise on what limits make sense.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id returned by start_quote."
},
"patch": {
"type": "object",
"properties": {
"pni": {
"type": "object",
"properties": {
"first_name": {},
"last_name": {},
"dob": {},
"email": {},
"phone": {},
"gender_on_license": {},
"marital_status": {},
"preferred_language": {}
},
"additionalProperties": false
},
"has_mortgagee": {},
"mortgage_billed_by_lender": {},
"mortgagee": {
"type": "object",
"properties": {
"company": {},
"clause_address": {},
"loan_number": {}
},
"additionalProperties": false
},
"current_premium_home": {},
"current_premium_auto": {},
"current_carrier_home": {},
"current_carrier_auto": {},
"follow_ups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"interest": {},
"note": {}
},
"additionalProperties": false
}
},
"is_new_purchase": {},
"current_address": {
"type": "object",
"properties": {
"street": {},
"city": {},
"state": {},
"zip": {}
},
"additionalProperties": false
},
"drivers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"first_name": {},
"last_name": {},
"relationship_to_pni": {},
"dob": {},
"date_of_birth": {},
"license_state": {},
"years_licensed": {},
"marital_status": {},
"gender_on_license": {},
"occupation": {},
"education_level": {},
"assigned_vehicle_id": {},
"good_student": {},
"defensive_driving_completed": {},
"accident_prevention_course": {},
"self_reported_accidents": {},
"self_reported_violations": {},
"military_status": {},
"student_away_from_home": {}
},
"additionalProperties": false
}
},
"vehicles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"vin": {},
"year": {},
"make": {},
"model": {},
"trim": {},
"garaging_zip": {},
"garaging_address": {},
"annual_mileage": {},
"commute_miles_one_way": {},
"primary_use": {},
"ownership_status": {},
"lienholder": {},
"purchase_date": {},
"anti_theft_device": {},
"daytime_running_lights": {},
"airbags": {},
"abs": {},
"custom_equipment_value": {}
},
"additionalProperties": false
}
},
"coverages": {
"type": "object",
"properties": {
"bi_per_person": {},
"bi_per_accident": {},
"pd_limit": {},
"csl_limit": {},
"umbi_per_person": {},
"umbi_per_accident": {},
"umpd_limit": {},
"uim_stacking": {},
"pip_limit": {},
"medpay_limit": {},
"comp_deductible": {},
"coll_deductible": {},
"towing_labor_limit": {},
"rental_reimbursement_limit": {},
"rental_days_max": {},
"glass_full": {},
"gap_coverage": {},
"oem_parts": {},
"new_car_replacement": {},
"custom_equipment_coverage": {},
"dwelling_a": {},
"other_structures_b": {},
"personal_property_c": {},
"loss_of_use_d": {},
"liability_e": {},
"medical_f": {},
"all_perils_deductible": {},
"wind_hail_deductible": {},
"named_storm_deductible": {},
"foundation_water_damage": {},
"sewer_water_backup": {},
"water_seepage_leakage": {},
"service_line": {},
"water_backup_limit": {},
"service_line_limit": {},
"equipment_breakdown": {},
"hidden_water_damage": {},
"mold_limit": {},
"ordinance_or_law_pct": {},
"replacement_cost_contents": {},
"extended_replacement_cost_pct": {},
"scheduled_personal_property": {},
"earthquake_endorsement": {},
"flood_through_carrier": {}
},
"additionalProperties": false
},
"property": {
"type": "object",
"properties": {
"address": {},
"year_built": {},
"square_footage": {},
"construction_type": {},
"number_stories": {},
"roof_age_years": {},
"roof_material": {},
"roof_shape": {},
"hail_resistant_roof": {},
"ul_impact_type": {},
"foundation_type": {},
"basement_type": {},
"attached_garage": {},
"garage_type": {},
"number_bathrooms": {},
"number_bedrooms": {},
"number_kitchens": {},
"pool_type": {},
"pool_fenced": {},
"pool_diving_board": {},
"pool_slide": {},
"trampoline": {},
"trampoline_safety_net": {},
"dog_breed": {},
"dog_bite_history": {},
"claims_in_last_5_years": {},
"claim_details": {},
"business_on_premises": {},
"business_type": {},
"occupancy": {},
"protection_class": {},
"distance_to_fire_station": {},
"distance_to_hydrant": {},
"recent_renovations": {}
},
"additionalProperties": false
},
"discounts": {
"type": "object",
"properties": {
"paperless_billing": {},
"autopay_eft": {},
"autopay_card": {},
"multi_policy_bundle": {},
"multi_vehicle": {},
"telematics_opt_in": {},
"advance_quote": {},
"prior_insurance_continuous": {},
"prior_insurance_carrier": {},
"prior_insurance_years": {},
"military": {},
"group_affinity_code": {},
"homeowner": {},
"loyalty": {},
"early_signing": {},
"bundle": {},
"paperless": {},
"autopay": {},
"claims_free_years": {},
"monitored_burglar_alarm": {},
"monitored_fire_alarm": {},
"central_station_alarm": {},
"smart_home_devices": {},
"gated_community": {},
"hoa": {},
"new_home": {},
"recently_renovated": {},
"non_smoker_household": {}
},
"additionalProperties": false
},
"policy_terms": {
"type": "object",
"properties": {
"effective_date": {},
"term_length": {},
"pay_plan": {},
"paperless_documents": {}
},
"additionalProperties": false
},
"prior_insurance": {
"type": "object",
"properties": {
"carrier": {},
"years_continuous": {},
"policy_limits": {},
"expiration_date": {}
},
"additionalProperties": false
}
},
"additionalProperties": false,
"description": "Quote details to add or change. Branches: pni (main applicant), drivers[], vehicles[], property, coverages, discounts, policy_terms, prior_insurance, mortgage fields (has_mortgagee, mortgage_billed_by_lender, mortgagee), is_new_purchase with current_address (where the customer lives today when buying a new home), current premiums/carriers, and follow_ups[] (notes for the licensed team, such as scheduled valuables; never added to the quote itself). Only the listed fields are accepted."
},
"meta_codes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional internal meta codes; ignored unless recognized."
}
},
"required": [
"quote_id",
"patch"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"applied": {
"type": "array",
"items": {
"type": "string"
}
},
"rejected": {
"type": "array"
},
"completeness": {
"type": "number"
},
"ready_to_quote": {
"type": "boolean"
}
},
"description": "Which fields were applied and whether the quote is ready to rate.",
"additionalProperties": true
}🟢get_quote_options(quote_id, max_options)
Starts rating with Libertas's panel of A-rated carriers and returns right away. First prices usually arrive within 30-90 seconds as honest ranges (the low end is the carrier's own preliminary figure). Libertas then keeps working for 2-10 minutes to capture exact, bindable rates directly from carrier systems, so options move from 'estimate' to 'verified'. Follow progress with check_quote_status every turn or two. Calling this again with unchanged details returns the run already in progress; changed details start a fresh run.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id returned by start_quote."
},
"max_options": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 3,
"description": "Maximum options to return per line (1-5, default 3)."
}
},
"required": [
"quote_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"status": {
"type": "string"
},
"expected_seconds": {
"type": "integer"
},
"message": {
"type": "string"
}
},
"description": "Acknowledges the rate run started; poll check_quote_status for the option cards.",
"additionalProperties": true
}🟡check_quote_status(quote_id, max_options)
Reports rating progress and, once available, the quote options. status is one of: - running: prices are still arriving; check again in a turn or two. - quoted: options are ready. While finishing.active is true, Libertas is still capturing exact rates, so ranges are estimates (the final number may land within or below the range, but that isn't guaranteed); check back later. Options marked 'verified' are exact, bindable numbers. - needs_data: carriers need more information first. needs.prompts lists each item, who it's for, and the update_quote field to set; apply the customer's answers, then call get_quote_options again. When needs.secure_link is present, that item (a driver's license number) is entered on Libertas's secure page instead of in chat: share the link with the customer, and rates re-run automatically once they submit it. - timeout or error: offer to try again with get_quote_options. Carriers appear as 'Home Carrier A', 'Auto Carrier B', and so on; the real carrier name is shown on Libertas's secure bind page.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id to poll."
},
"max_options": {
"type": "integer",
"minimum": 1,
"maximum": 5,
"default": 3,
"description": "Maximum options to return per line (1-5, default 3)."
}
},
"required": [
"quote_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"status": {
"type": "string"
},
"progress_pct": {
"type": "integer"
},
"options": {
"type": "array"
},
"carrier_names_revealed": {
"type": "boolean"
},
"needs": {
"type": [
"object",
"null"
]
}
},
"description": "Live rating status plus masked options (carriers hidden until the bind step). Status 'needs_data' means the customer must supply the fields in `needs.prompts` (apply via update_quote, then re-run get_quote_options).",
"additionalProperties": true
}🟢get_option_details(quote_id, option_id)
Returns the coverage breakdown, deductibles, discounts applied, and payment plans for one option (for example opt_home_a), so the customer can compare before choosing. The carrier stays masked as 'Home Carrier A' and so on.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id."
},
"option_id": {
"type": "string",
"description": "The option to detail, e.g. 'opt_home_a' from get_quote_options."
}
},
"required": [
"quote_id",
"option_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"premium_annual": {
"type": [
"number",
"null"
]
},
"premium_monthly": {
"type": [
"number",
"null"
]
},
"coverages": {
"type": "object"
}
},
"description": "Full coverage + premium breakdown for one option (carrier still masked).",
"additionalProperties": true
}🔴get_bind_link(quote_id, option_id)
Emails the customer a single-use secure link (valid 7 days) to Libertas's bind page, where they review the chosen option, see the carrier's name, and submit their request; a licensed agent completes the purchase. Uses the email address already on the quote and reports whether it was sent; no text message is sent. Useful when the customer wants to finish later or on another device. Nothing is purchased by this call.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "Quote whose saved customer email will receive the secure link."
},
"option_id": {
"type": "string",
"description": "Selected option to include on the secure bind-request page."
}
},
"required": [
"quote_id",
"option_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"option_id": {
"type": "string"
},
"carrier_name": {
"type": "string"
},
"bind_url": {
"type": "string"
},
"expires_at": {
"type": "string"
}
},
"description": "Secure, single-use bind hand-off link — the only place a real carrier name appears.",
"additionalProperties": true
}🔴request_bind_inline(quote_id, option_id, option_ids, water_selections, customer_notes, ...)
Sends the customer's chosen option(s) to Libertas's licensed team as a bind request and returns a secure checkout link on Libertas's site. This is a request, not a purchase: no payment is taken and no coverage starts from this call. A licensed agent verifies underwriting, collects payment on the secure page, and confirms coverage with the carrier, and the customer can change or cancel before then. Appropriate once the customer clearly picks an option (for example "I'll take Home Carrier A"); pay_plan is required when an auto option is included.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id."
},
"option_id": {
"type": "string",
"description": "The single option to bind (or use option_ids for a bundle/split)."
},
"option_ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multi-option bind. Either option_id or option_ids must be provided."
},
"water_selections": {
"type": "object",
"properties": {
"service_line": {
"type": "boolean",
"description": "Include the service-line water add-on."
},
"water_seepage": {
"type": "boolean",
"description": "Include the water-seepage & leakage add-on."
},
"foundation_water": {
"type": "boolean",
"description": "Include the foundation-water-damage add-on."
},
"sewer_backup": {
"type": "boolean",
"description": "Include the sewer / water-backup add-on."
}
},
"additionalProperties": false,
"description": "Customer-selected water-coverage add-ons for home options (service line, water seepage, foundation water, sewer backup); the agent configures these at the carrier portal at bind."
},
"customer_notes": {
"type": "string",
"description": "Optional free-text notes from the customer for the agent."
},
"contact_pref": {
"type": "string",
"enum": [
"call",
"text",
"email"
],
"description": "How the customer prefers to be reached: 'call', 'text', or 'email'."
},
"best_time": {
"type": "string",
"description": "Best time to reach the customer, e.g. 'weekday afternoons'."
},
"pay_plan": {
"type": "string",
"enum": [
"monthly_eft",
"pay_in_full"
],
"description": "Pay plan: 'monthly_eft' or 'pay_in_full' (required when an auto line is included)."
}
},
"required": [
"quote_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"bind_url": {
"type": "string"
}
},
"description": "Files a routed bind request to the matched agency and returns a bind link.",
"additionalProperties": true
}🟢check_late_arrivals(quote_id)
Checks whether a slower carrier has come back with a better price since the options were first shown. has_improvement is true only when a new rate beats the earlier best by at least $100 a year or 5%. Useful when the customer hesitates over price after seeing options. If nothing improved, it's best to say so plainly rather than suggest a better price is coming.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id to check for late-arriving carrier rates."
}
},
"required": [
"quote_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"has_improvement": {
"type": "boolean"
},
"options": {
"type": "array"
},
"message": {
"type": "string"
}
},
"description": "Whether a slower carrier has beaten the first-quoted best price, plus the refreshed options.",
"additionalProperties": true
}🔴submit_lead(quote_id, first_name, last_name, email, phone, ...)
Asks a licensed Libertas agent to follow up with the customer: for insurance Libertas doesn't quote in chat (renters, condo, landlord, umbrella, life, commercial, motorcycle, boat, RV, and more), or when a home/auto customer would rather talk to someone later. Needs what they're interested in plus an email or phone number. Creates a follow-up task; an agent typically reaches out within one business day by phone or email. Best to confirm with the customer before sending their contact details.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "Optional quote id to associate the lead with."
},
"first_name": {
"type": "string",
"description": "Customer first name."
},
"last_name": {
"type": "string",
"description": "Customer last name."
},
"email": {
"type": "string",
"description": "Customer email."
},
"phone": {
"type": "string",
"description": "Customer phone number."
},
"interest": {
"type": "string",
"description": "What the customer wants us to follow up about (e.g. 'renters insurance', 'life insurance', 'commercial auto')"
},
"preferred_contact_time": {
"type": "string",
"description": "e.g. 'weekday afternoons', 'after 5pm', 'tomorrow morning'"
},
"preferred_contact_method": {
"type": "string",
"enum": [
"phone",
"email",
"text",
"any"
],
"description": "How the customer prefers to be reached: 'phone', 'email', 'text', or 'any'."
},
"notes": {
"type": "string",
"description": "Optional notes for the follow-up."
}
},
"required": [
"interest"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"lead_id": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"message": {
"type": "string"
}
},
"description": "Lead-capture acknowledgement.",
"additionalProperties": true
}🟢resume_quote(quote_id, verification)
Looks up a quote started earlier, by its quote_id. Returns the quote's status, whether options are ready, and what's still needed. Saved personal details are returned only to the same platform user who started the quote.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote session id to resume."
},
"verification": {
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"email_code",
"platform_identity",
"magic_link"
],
"description": "Verification method: email code, platform-identity header, or magic-link token."
},
"code": {
"type": "string",
"description": "The verification code (for the email_code method)."
},
"token": {
"type": "string",
"description": "The verification token (for the magic_link method)."
}
},
"additionalProperties": false,
"description": "Ownership verification (email code, platform identity, or magic link); required to return PII."
}
},
"required": [
"quote_id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"status": {
"type": "string"
},
"verification_required": {
"type": "boolean"
}
},
"description": "Resumed quote status (PII only on a verified call).",
"additionalProperties": true
}⚪stop_contact(quote_id, email, phone, channels)
Records that the customer doesn't want Libertas to contact them by phone call, text, email, or any of these. Appropriate whenever the customer asks, in any wording, to stop hearing from Libertas; Libertas honors it across its follow-up systems. Pass the quote_id when there is one, or the email and/or phone the customer wants removed.
Input Schema
{
"type": "object",
"properties": {
"quote_id": {
"type": "string",
"description": "The quote whose saved contact details should be opted out, if there is one."
},
"email": {
"type": "string",
"description": "Email address to stop contacting."
},
"phone": {
"type": "string",
"description": "Phone number to stop calling or texting."
},
"channels": {
"type": "array",
"maxItems": 4,
"items": {
"type": "string",
"enum": [
"calls",
"texts",
"email",
"all"
]
},
"description": "Which contact to stop: 'calls', 'texts', 'email', or 'all' (default 'all')."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"status": {
"type": "string"
},
"channels": {
"type": "array",
"items": {
"type": "string"
}
},
"message": {
"type": "string"
}
},
"description": "Confirmation that the opt-out was recorded.",
"additionalProperties": true
}Community
Evidence