Sigo Seguros MCP connector

Car insurance estimates from Sigo Seguros, exposed to AI agents over the Model Context Protocol.

Sigo Seguros is a licensed insurance agency and broker. It does not underwrite policies, does not pay claims, and is not an insurance carrier. This connector returns non-binding estimates; each policy is issued by the carrier shown on the estimate.

Sigo earns a commission from the carrier, and in almost every state where it sells the customer pays a one-time broker fee for the agency's service — in Florida there is none, and issued_by.charges_broker_fee on a quote says which case applies. The amounts in an estimate are the carrier's — its premium and its own charges — and Sigo's fee is not among them; where there is one, it is itemised for the customer before they pay, in Sigo's own flow. No fee amount appears in anything this connector returns, and none can be derived from it. An estimate is not the final cost of buying through Sigo.

Endpoint

Transport Streamable HTTP
Endpoint POST https://mcp.sigoseguros.com/mcp
Authentication None. The connector is open: no account, plan or credential.
Protocol Negotiated by the client. Exercised against 2025-11-25.

The connector is stateless: every request stands on its own and carries no session, so it can be called from any number of clients at once.

Add it to Claude or ChatGPT

No Sigo account, sign-in or API key is needed. In any assistant that supports remote MCP servers:

  1. Add a custom connector (sometimes called an app or an MCP server) in the assistant's settings.
  2. Give it the server URL https://mcp.sigoseguros.com/mcp, over Streamable HTTP.
  3. Choose no authentication. The connector has no OAuth flow and asks for no credential.
  4. Start a conversation and ask for a car insurance quote, for example “quote car insurance for my car in Texas” or “cotízame un seguro de auto”.

The assistant's menus change over time, so these steps name what to add rather than where to click.

For reviewers: no test account or credential is needed — the connector is authless. Use synthetic data only: an invented name and email, a real ZIP code in a state list_available_states returns, and any common vehicle. Please do not enter a real person's details or licence number. Estimates are non-binding and nothing is bought, paid or bound.

What it can and cannot do

It can estimate car insurance for a household's vehicles and drivers in the US states Sigo is licensed in, and hand back a link for the customer to continue with Sigo.

It can also take a business's request for a commercial auto quote — a short intake, sent to a Sigo agent who reviews it and follows up by email. It does not quote commercial auto: no price comes back, and any quote the agent prepares is subject to underwriting, eligibility and state filing.

It cannot select a policy, take payment, bind coverage, change or cancel a policy, or read back an existing policy. There is no tool for any of that.

Tools

How to use them, in this order:

  1. next_question: call it until ready_to_quote is true, sending back the collected it returns each time and each answer under answer_as.key.
  2. start_quote: once, with that collected. It returns a quote_id.
  3. get_quote: with that quote_id, after poll_after_seconds, until more_carriers_pending is false. If start_quote answers quote_in_progress, never call start_quote again: the rating running is the one you started, and get_quote reads it.

Every refusal carries next_step, which says what the agent does now; message is what the customer hears.

A vehicle a business uses for its work is commercial auto and takes its own two steps instead: commercial_next_question until ready_to_submit is true, then submit_commercial_application once.

list_available_states

Read-only, takes the customer's locale. Worth calling first, so a customer elsewhere is not taken through a full quote. It also carries what can be said about carriers, because the question — “do you work with X?” — arrives before any quote exists to answer it from.

{ "states": [{ "code": "TX", "name": "Texas" }, … ],
  "carriers": { "catalogue_is_public": false, "note": "…" } }

next_question

Read-only. Send only what the customer said this turn, in answered, together with the collected from the last call. It returns the one question to ask now — worded for the customer, in their language, with the options to offer when the field has a fixed set — and the record back, holding everything answered so far. Call it before each question and again after every answer, until ready_to_quote is true.

The record is the connector's, not the caller's: an answer given once is not asked for again, and one given before its turn is kept until that turn comes. What follows from an answer is worked out here too — full coverage brings up the deductible, a married driver brings up their spouse, a financed car brings up the lienholder.

Once zip_code is known it is checked against Sigo's footprint here, so a customer in a state Sigo is not licensed in is told at that point rather than after giving their car, their birthdate and their email.

{ "field": "marital_status",
  "ask": "¿Cuál es su estado civil?",
  "options": ["soltero/a", "casado/a", "viudo/a", "divorciado/a", "separado/a"],
  "ready_to_quote": false,
  "collected": "eyJjIjp7…",
  "summary": null }

When ready_to_quote turns true, summary holds what the customer has said, in their language: read it back and let them correct it before a price is built on it.

It exists so the order and the pace belong to the connector rather than to a model's judgement. Sigo's customers are working people, often quoting on a phone, and a turn that asks for four things at once is where they give up.

start_quote

Creates the quote and asks the carriers. Carriers answer over tens of seconds, so this does not wait for them: it returns a quote_id immediately with status: "pending".

Field Required Notes
zip_code yes 5 digits. Determines the state.
vehicles yes 1–4. Each: year, make, model, coverage_type (liability or full_coverage), optional deductible.
drivers yes 1–4. Each: first_name, last_name, birthdate (YYYY-MM-DD), gender, marital_status, is_primary.
has_prior_insurance yes Changes the price materially.
is_homeowner, is_student no Default false.
email yes Identifies the customer, and is where Sigo can reach them about this quote.
Second round no Only after next_question at stage: "second_round", sent with revise_of: address (where the car is kept overnight), per vehicle vin, ownership and lienholder, per driver document.number, license_status, months_licensed, occupation, education and excluded, and prior_coverage_months / prior_coverage_expiration.
locale yes es or en — the language the customer is writing in. The estimate's notice comes back in it, so a wrong value hands the customer a disclosure they cannot read. Sigo serves these two.
correction_of no Only after a data_not_accepted failure: the value it returned. The quote is retried on the same record, so a customer who corrects a detail stays one customer.
revise_of no The quote_id of a quote that returned prices, when the same customer wants something changed: another deductible, a corrected detail. The same record is re-quoted rather than a second one created, and the result says revised_from_quote: true. Forgetting it does not make a second application: a call for a customer who already quoted today, still at their first round, revises that quote and says so the same way.
One quote at a time per customer. While a customer's previous quote is still being answered, a new start_quote for them fails with quote_in_progress and a poll_after_seconds: read the earlier quote with get_quote once that time has passed, then ask again with revise_of. Two asks made together are run one after the other, and each result's asked_for says which vehicle and coverage it priced.
The schema is closed: a field that is not listed is rejected, not ignored. A car quote does not accept a phone number, a social security number or an ITIN — there is nowhere to put them. The VIN and the driver's document number are accepted in the second round only, each in exactly one field (vehicles[].vin, drivers[].document.number), and refused anywhere else. Sigo does not call or message people who quote a car here. A phone number, and permission to use it, are collected later in Sigo's own flow if the customer follows the link on an estimate. The commercial intake below is the one place that asks for a phone, a business contact's, for the agent's follow-up.

get_quote

Read-only. Takes the quote_id and returns whatever the carriers have answered so far.

It returns up to three estimates, the same number and the same selection a customer sees on Sigo's website: cheapest by the amount due today, with the option that can be bought without an agent kept among them. None of them is marked as recommended — Sigo does not advise which to take from here.

{
  "quote_id": "…",
  "status": "partial",
  "more_carriers_pending": true,
  "poll_after_seconds": 5,
  "pending_note": "Faltan aseguradoras por responder, así que esta lista no está completa…",
  "contact": { "phone_collected_here": false, "sigo_calls_customers": true, "note": "Por este medio no se toman números…" },
  "state": "TX",
  "quoted_at": "…",
  "expires_at": "…",
  "quotes": [
    {
      "quote_id": "quote_…",
      "carrier_name": "Commonwealth General",
      "estimate": {
        "currency": "USD",
        "due_today": 83.50,
        "first_payment_note": "The amount due today is the down payment the carrier asks for …",
        "monthly_payment": 86.98,
        "number_of_installments": 5,
        "total_for_term": 518.40,
        "total_note": "Es lo que le pagás a la aseguradora en todo el plazo: el pago de hoy más 5 …",
        "term_months": 6
      },
      "quote_type": "estimate",
      "is_binding": false,
      "disclaimer": { "text": "Estimate subject to underwriting, eligibility and state filing.", "show_verbatim": true },
      "next_step": null
    }
  ],
  "problems": [],
  "covers": { "vehicles": 1, "drivers": 1, "note": null },
  "asked_for": { "vehicles": [{ "position": 1, "year": 2018, "coverage_type": "liability", "deductible": null }], "drivers": 1 },
  "revised_from_quote": false,
  "application": { "complete": false, "still_needed": ["address", "vin", "license_status", …], "note": "…" },
  "price_levers": { "available": [], "note": "Con responsabilidad civil no hay nada que ajustar…" },
  "personal_use_note": null,
  "carriers": {
    "answered": ["Commonwealth General", …],
    "catalogue_is_public": false,
    "note": "These are the only carriers you may name. …"
  },
  "issued_by": {
    "agency": "Sigo",
    "role": "licensed insurance agency",
    "underwrites_policies": false,
    "pays_claims": false,
    "charges_broker_fee": true
  }
}

In a host that renders MCP Apps, including ChatGPT, get_quote also names a UI resource, ui://sigo-seguros/quote-estimates-v1.html, which draws the same estimates as cards with each carrier's logo and the estimate notice beside the price. It reads only this result, and while carriers are still answering it re-reads the quote through the host. The result above is the same with or without it.

find_occupation

Read-only, second round. Turns what the customer says they do into the carrier's occupation codes, so occupation on a driver is a code from this list rather than a guess. An empty list means ask another way.

carrier_questions

Read-only. Takes the quote_id and the chosen_quote_id of the estimate the customer picked, and returns that carrier's own questions in their state — attestations and disclosures worded by the carrier, to be asked as written. While the application is incomplete it returns none and says what is still_needed. can_answer_here is false where the carrier does not finish online, and a Sigo agent takes it from there.

answer_carrier_questions

Writes, idempotently and without destroying anything: files the customer's answers against their application, passing answers_so_far back each time until the set is complete. It does not take payment, sign anything or bind coverage; those happen in Sigo's own flow, through the link it returns.

other_carrier_questions

Read-only. Only on the path where get_quote shows one option and its cover_first block: once that option is not the answer (declined, not available, or an answer it does not take) or the customer wants to compare a confirmed price. Returns the other carriers' questions once for all of them, minus whatever the customer already answered on any channel. No price comes with them; a Sigo agent confirms the final offer through the link.

answer_other_carrier_questions

Writes, idempotently and without destroying anything: files the customer's answers to the other carriers' questions, passing answers_so_far back each time until the set is complete. The whole pass is then filed, Sigo selects the cheapest of those carriers, and a Sigo agent confirms the final offer. It shows no price and takes no payment.

resolve_application_link

Read-only. For a customer who arrives with a Sigo link they already have: says what the link points at, how far that application has got and the one thing to do next. It returns no price, carrier or personal detail.

commercial_next_question

Read-only. The commercial intake, one question at a time, in the customer's language and in the words of Sigo's own commercial form: whether the vehicle is for a business or only for driving with apps, what the business does, how far and how heavy its vehicles run, how many there are, whether it is paid to carry goods or people, whether it needs a filing, and then the business name, a contact name, a phone, an email and the state of the business address. It works like next_question: send each answer under answer_as.key with the collected from the last call, until ready_to_submit is true and summary can be read back. Someone who drives only for Uber, Lyft, DoorDash or Uber Eats is personal auto: route_to_personal turns true and nothing commercial can be sent.

{ "field": "radius", "ask": "¿Qué tan lejos viaja(n) tu(s) vehículo(s) normalmente desde tu base?",
  "options": ["Local (menos de 50 millas)", "Regional (50 a 200 millas)", "Larga distancia (más de 200 millas)"],
  "answer_as": { "key": "radius", "type": "enum", "values": ["local", "intermediate", "longHaul"] },
  "ready_to_submit": false, "route_to_personal": false, "collected": "…", "summary": null, "next_step": null }

submit_commercial_application

Writes: sends a finished intake to Sigo, which opens a ticket for an agent. Call it once — a repeat is usually answered with the earlier request (already_received: true), but a second call can file a second request. It returns Sigo's reference, the message and disclaimer to say as written, and form_url, the website's full commercial form, for a customer who wants to add their vehicles and drivers now. It returns no price, selects no policy, takes no payment and binds no coverage.

Presenting a result to a person

Errors

Failures come back as a tool error with a stable code, a message fit to read aloud to the customer, and a next_step for the agent: an action, the tool to call (or none) and a short note naming what not to repeat. Carrier-side technical detail is never included.

state_not_served      zip_not_found            vehicle_not_recognized
insufficient_information                       questions_not_finished
answers_not_sent      carrier_unavailable      carriers_declined        rideshare_needs_agent
quote_not_found       quote_expired            temporarily_unavailable
data_not_accepted     quote_in_progress        problem_on_our_side      quotes_paused
commercial_answer_invalid       commercial_intake_not_finished      commercial_intake_expired
commercial_is_personal          commercial_not_sent                 commercial_submissions_paused

Some of them are worth telling apart. questions_not_finished means start_quote was called without the collected of a finished questionnaire, or with one that still has a question pending: nothing was created, pending_question names the step still open, and next_question is the way on. answers_not_sent means the questionnaire marked an answer settled (the VIN, the document number, the prior coverage) that the call did not carry: nothing was created, missing_in_start_quote names the start_quote fields to fill from what the customer already said, and the customer is not asked again. temporarily_unavailable means the same request may work shortly. data_not_accepted means it will not: something has to change first, the message says what, and the failure carries a correction_of to retry on the same record. quote_in_progress means a rating for this customer is already running, almost always the one the agent itself started seconds earlier: the failure carries poll_after_seconds, started_seconds_ago, and a quote_id for that quote when the connector can name it. Do not call start_quote again; read the quote with get_quote, then ask again with revise_of if the customer wanted a change. problem_on_our_side means neither: something in Sigo's own setup refused the request, there is nothing for the customer to correct, and it is not the carrier's doing. rideshare_needs_agent is not a failure at all: driving for a transport app is not something this connector prices, so it carries a contact_url and a Sigo agent takes it from there. quotes_paused means the connector is not quoting right now: nothing was rated, and the contact_url it carries opens the customer's quote on the website with what they already answered. Do not call start_quote again in that conversation.

The commercial_* codes belong to the commercial intake. commercial_not_sent and commercial_submissions_paused mean the request did not reach Sigo: they carry a form_url to the website's commercial form, and the customer must not be told it was received. commercial_is_personal means the customer drives only for apps, so nothing commercial was sent and next_question is the way on.

Privacy

What the connector is given is sent to Sigo's platform to produce a quote, and from there to the carriers asked for prices. An application is created so the customer can pick the estimate up later through the link. The connector itself has no database, does not log request bodies, and its error reports carry no customer data.

What it collects, by stage:

Not collected: no social security number, FEIN or ITIN, and no payment details — there is no field for any of them. A car quote takes no phone number either: payment, signatures and any phone number happen later in Sigo's own flow, if the customer follows the link on an estimate.

Sigo's privacy notice and terms and conditions apply.

Support

Questions about the connector, a quote or your data: [email protected] or +1 (877) 476-7446. More ways to reach Sigo are on the contact page.