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:
- Add a custom connector (sometimes called an app or an MCP server) in the assistant's settings.
- Give it the server URL
https://mcp.sigoseguros.com/mcp, over Streamable HTTP. - Choose no authentication. The connector has no OAuth flow and asks for no credential.
- 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.
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:
-
next_question: call it untilready_to_quoteis true, sending back thecollectedit returns each time and each answer underanswer_as.key. start_quote: once, with thatcollected. It returns aquote_id.-
get_quote: with thatquote_id, afterpoll_after_seconds, untilmore_carriers_pendingis false. Ifstart_quoteanswersquote_in_progress, never callstart_quoteagain: the rating running is the one you started, andget_quotereads 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.
|
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.
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
-
The carrier's questions are a form, not a conversation.
ask_togethersays which of them go in one turn, grouped the way the carrier groups them — its attestations in one block, its disclosures in another. Ask a block as a single message and send its answers together. Only a question withdepends_ongets a turn of its own, after the one it hangs off, because until then it asks nothing. -
An estimate is not a finished application.
application.completesays whether everything the last stretch needs has been collected, andapplication.still_neededsays what has not. While it is false the carrier's questions do not apply:carrier_questionsreturns none and repeats the list in its ownstill_needed. Collect what is missing withnext_questionatstage: "second_round", quote again, and carry on. Quoting again returns estimates too: no price this connector returns is final. The final quote is calculated by Sigo in the link, aftercarrier_questionsand before the customer pays. -
"How do I make it cheaper?" Answer from
price_leversand nothing else: it holds what this step can actually change — a deductible and a coverage level, and only where something was quoted with full coverage. An empty list is the honest answer, not an invitation to list every factor insurance prices on. Discounts and driver details are reviewed later with an agent. -
A refusal is not an outage. When every carrier answered and none would quote, the
problem is
carriers_declinedand waiting changes nothing — the customer needs a different vehicle or coverage, or an agent.carrier_unavailableis the other case, where nobody answered and trying later is the right advice. Neither names the carrier or its reason. -
One price buys the whole policy. A carrier answers a single amount however many cars
are on the quote, so from two vehicles up
covers.notesays what it covers and that it is not per car. With one vehicle it isnull— the amount can only mean one thing. -
A vehicle used for work. Set
used_for_workon it when the customer brings it up — never by asking. The result then carriespersonal_use_note, which says this is a personal auto quote and that a vehicle used for a business may need a commercial policy. For everyone else it isnull, and the subject is not raised. -
A vehicle driven for a transport app. Uber, Lyft, Uber Eats, Amazon Flex and the like
go in
used_for_rideshare, not inprimary_use, whose five values are the rater's and hold no such use. This one stops the quote: no estimate is produced, because a personal auto policy priced for that use is a misrepresentation at underwriting and the carrier voids it at the first claim. The call comes back asrideshare_needs_agentwith acontact_url— the customer's own application — and a Sigo agent carries on from there. -
Only the carriers that answered may be named. Sigo publishes no list of the carriers it
works with: it varies by state and by quote. A company absent from
carriers.answeredis not thereby one Sigo does not work with, and saying either way is a claim Sigo cannot make. -
"Can someone call me?" This channel takes no phone number, so no call can be
arranged from here — and that is a fact about the channel, not about Sigo, whose agents do call.
contact.notehas the wording: the customer leaves a number on the link with their estimate, and an agent calls them. -
A customer chooses once, from a finished list. While
more_carriers_pendingis true, every estimate'snext_stepisnullandpending_notesays what to do: show what is there if you like, say more prices may arrive, and do not ask them to choose. The link appears when the list closes. -
A partial list is not a final list. Carriers answer at different speeds. While
more_carriers_pendingis true a cheaper price may still arrive;poll_after_secondssays how long to wait before asking again. -
due_todayis what starts the policy, not what the policy costs. The total is settled with an agent and is not returned here. It bears no fixed relation to the monthly amount and can be higher or lower than it, which is why every estimate carriesfirst_payment_notesaying so: a first payment below the monthly one is not a discount, and one above it is not a surcharge. -
term_monthsis the length of the policy. A 6-month and a 12-month quote are not comparable on the down payment alone, so do not rank on price without it. It isnullwhen the carrier did not report one. -
The
disclaimergoes to the customer as written. It is attached to each estimate, it carriesshow_verbatim: true, and it is one sentence precisely so that it can be repeated rather than summarised: the estimate is subject to underwriting, eligibility and state filing. A paraphrase of it is not the disclosure.
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:
- First quote: the ZIP code where the car is kept; each vehicle's year, make and model, coverage choices and use; each driver's name, date of birth, gender and marital status (where the state allows them to be rated), the type of identity document they hold, and who drives most; whether the customer is insured now, and optionally whether they own their home or are a student; and an email address.
- Second round, only for a customer who chooses to continue: the street address where the car is kept; each vehicle's VIN, whether it is owned, financed or leased, and the lienholder's name, address and loan number when there is one; each driver's identity document number (a US or foreign driver's licence, a US or foreign ID, a consular ID or a passport), licence status and how long it has been held, occupation and education (not asked in states that do not allow them as rating factors); other licensed household members, who go on the policy as excluded drivers; and how long the customer has been insured and when the current policy ends.
- Carrier questions: the customer's answers to the carrier's own attestations and disclosures for the estimate they picked.
- Commercial intake, only for a business asking for a commercial auto quote: what the business does, how far and how heavy its vehicles run, how many there are, whether it carries goods or people for pay, whether it needs a filing, the business name, a contact name, a phone number and an email for the agent's follow-up, and the state of the business address. It is sent to Sigo's platform, which opens a ticket for a Sigo agent.
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.