Skip to main content
Glama

Sigo Seguros car insurance quotes

Server Details

Non-binding car insurance estimates from Sigo Seguros, a licensed agency, not a carrier.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation4/5

The three-step chain (next_question -> start_quote -> get_quote) is explicitly numbered and each tool's role is stated, and the carrier_questions/answer_carrier_questions pair is cleanly split into ask vs. record. The residual ambiguity is that next_question and carrier_questions are both 'return questions' tools for different phases, so an agent must track which stage it is in to choose correctly.

Naming Consistency4/5

Six of eight names follow a clear verb_noun pattern (find_occupation, get_quote, list_available_states, resolve_application_link, start_quote, answer_carrier_questions). The two exceptions, carrier_questions and next_question, drop the verb and name the artifact instead, which is readable but breaks the otherwise uniform convention.

Tool Count5/5

Eight tools is well matched to a guided quote funnel: three flow steps, a question/answer pair, two optional helpers, and an inbound-link resolver. Nothing looks redundant or padded, and no lifecycle operation is crammed into a catch-all tool.

Completeness5/5

The surface covers the full customer journey the server claims responsibility for: state eligibility, stepwise intake, quote submission and polling, second-round data, carrier attestations, occupation lookup, and resuming an existing link. Payment and binding are deliberately delegated to Sigo's own flow and are consistently declared out of scope rather than left as an unexplained gap.

Available Tools

8 tools
answer_carrier_questionsFile the customer's answers to the carrier's questionsA
Idempotent
Inspect

After carrier_questions: file the answers, passing answers_so_far back each time, until the set is complete.

Saves what the customer answered against their application, which is what moves it towards a final quote. Send every answer under the code it came back with, and only what the customer actually said.

This does not take payment, sign anything or bind coverage. Those happen in Sigo's own flow, through the link that comes back here.

The carrier takes its questions as a set, so answers are held until every one has been given. Pass the answers_so_far from the previous call back in, and only the new answer needs to go in answers.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.
answersYesWhat the customer said, in their own answers. Never filled in on their behalf.
quote_idYesThe handle start_quote returned.
answers_so_farNoThe `answers_so_far` from the previous call, when there was one. It carries what the customer already answered, so only the new answer needs to go in `answers`. It survives a re-quote: after start_quote with revise_of, send the same token with the new quote_id and the answers still stand, as long as the carrier is the same one. Nobody has to be asked twice.
chosen_quote_idYesThe estimate the customer picked.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYesWhat is done and what is still ahead, in the customer's language.
filedYesTrue once the carrier has the whole set. The carrier takes it whole or not at all, so answers are held until every required question has one.
answeredYesHow many of the carrier's questions have an answer so far, counting the earlier turns.
next_stepYesPaying and signing happen here, not in this conversation.
still_neededYesThe codes of the required questions with no answer yet. Empty when the set is complete.
answers_so_farYesEverything answered up to now, to pass back on the next call so nothing is lost. Null once the carrier has the set and there is nothing left to carry.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-read-only, idempotent, non-destructive, open-world write, and the description is consistent with all of them. It adds genuine behavioral context beyond the annotations: answers are buffered until the full set is given, the token survives a re-quote (supporting idempotency), and payment/signing/binding are out of scope. It stops short of describing error behavior or the returned link's use in depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The instruction is front-loaded, which is good, but the four-paragraph narrative repeats the answers_so_far mechanic twice ('passing answers_so_far back each time' and 'Pass the answers_so_far from the previous call back in') and re-states the schema's own descriptions. Some sentences could be cut without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stateful, multi-step, 5-parameter write tool with an output schema, the description covers sequencing, the carry-back token, re-quote continuity, and scope limits. With an output schema present, return values need no explanation, so nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: answers must be given 'under the code it came back with' and 'only what the customer actually said', and only the new answer goes into `answers` while prior ones travel in `answers_so_far`. That incremental-input semantics is the key to calling this correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('file the answers', 'saves what the customer answered against their application') and names the preceding action ('After carrier_questions'), cleanly separating it from the sibling that surfaces questions. An agent can tell what this does and where it sits in the flow without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit ordering ('After carrier_questions'), the iterative protocol ('passing answers_so_far back each time, until the set is complete'), and a clear exclusion ('This does not take payment, sign anything or bind coverage'). Both when-to-use and when-not are covered, plus the re-quote case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

carrier_questionsThe carrier's own questions before it will issueA
Read-only
Inspect

After the three steps, when to_final_quote.next_call names it: the questions of the estimate the customer picked. Then answer_carrier_questions.

Once the customer has picked an estimate, this returns the questions that carrier asks in their state — attestations and disclosures the carrier words itself. Say preamble first, then ask one ask_together block per turn, each question exactly as it is worded; they are not Sigo's questions to reword. Send the answers with answer_carrier_questions.

can_answer_here is false where that carrier does not finish online, and then a Sigo agent takes it from there. Either way the customer keeps the link: they can finish on the web at any point without losing what they have answered.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.
quote_idYesThe handle start_quote returned.
chosen_quote_idYesThe `quote_id` of the estimate the customer picked, from the list they were shown.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYesHow to put these, in the customer's language.
preambleYesSigo's own words for the customer, to say as they are before the first question. Not one of the carrier's questions and not answered. Null when there is nothing to ask here.
next_stepYesWhere the customer finishes. Theirs at any point, not only at the end.
questionsYesIn the order the platform ranked them.
ask_togetherYesCodes that can be put to the customer in one turn, grouped the way the carrier groups them. Ask each block as one message and send its answers together. A question with `depends_on` is in no block: it gets its own turn, after the one it hangs off. Empty when there is nothing to ask here.
still_neededYesWhat the application still lacks, when that is why the questions are not here. An empty array means nothing is missing. Null means this is not about the application at all — either the questions came back, or the carrier does not finish online here.
can_answer_hereYesFalse when there is nothing to ask here yet: the application is still missing details, or the carrier does not finish online in this state. Check `still_needed` to tell the two apart.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, it discloses rich behavior: say preamble first, one ask_together block per turn, questions must be relayed verbatim and not reworded, and can_answer_here=false hands off to a Sigo agent while the customer retains the link. This is well past what the annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but mostly earned; the turn protocol and verbatim requirement each justify their place. The first sentence is front-loaded with opaque references rather than the tool's core purpose, which costs a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description covers the gating step, the per-turn asking protocol, the handoff when can_answer_here is false, and the customer-link persistence — everything needed to invoke and use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents quote_id, chosen_quote_id and the locale language semantics. The description adds no further parameter-specific detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns the questions the carrier asks in the customer's state (attestations and disclosures). It is distinguishable from answer_carrier_questions and next_question. The opening sentence, however, leans on unexplained context ('the three steps', 'to_final_quote.next_call') that an agent must already know, which blunts the clarity slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the trigger condition (after the customer has picked an estimate, when to_final_quote.next_call names it) and routes to the alternative (send answers with answer_carrier_questions). The preamble/ask_together turn protocol is spelled out, leaving no inference needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_occupationFind the rater's code for a customer's jobA
Read-only
Inspect

Second-round helper, outside the three steps: turns the customer's words into the occupation code start_quote takes.

Turns what the customer said they do into the carrier's own occupation codes. Call it before sending occupation on a driver: the catalogue is written in trade names and customers answer in their own, so the code is never something to guess at. Pick the entry that matches what they described and send its code.

An empty list means ask them another way rather than settle for the nearest thing.

ParametersJSON Schema
NameRequiredDescriptionDefault
saidYesWhat the customer said they do, in their own words — 'chofer', 'trabajo en construcción'.
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYesWhat to do with this list, in the customer's language — including when it comes back empty.
matchesYesThe rater's entries that fit, best first. Pick the one that matches what the customer described and send its `code` as the driver's `occupation`.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond them: the catalogue is in trade names, matching is approximate so an empty list is meaningful, and the result must be verified rather than guessed. It does not discuss rate limits or return shape, but the output schema covers the latter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the tool's role before the how-to, and every clause is actionable. Minor redundancy between 'turns the customer's words into the occupation code' and 'Turns what the customer said they do into the carrier's own occupation codes' costs it the top mark.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation, and annotations carry the safety profile. The description covers purpose, workflow position, and empty-result handling, leaving only minor gaps such as whether multiple matches can be returned. Adequate for a two-parameter lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so `said` and `locale` are already fully documented, including the enum and locale's effect on notice language. The description reinforces the 'customer's own words' intent but adds no syntax or constraints beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific transformation (customer's spoken words → carrier occupation code) and names the sibling it feeds (`start_quote` / the `occupation` field). An agent can distinguish it from next_question, carrier_questions, and get_quote without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-call ('Call it before sending `occupation` on a driver'), why the lookup is necessary ('the code is never something to guess at'), and what to do on an empty result ('ask them another way rather than settle for the nearest thing'). It also locates itself in the flow ('outside the three steps').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_quoteRead car insurance estimatesA
Read-only
Inspect

Step 3 of 3: read the quote_id start_quote returned, after poll_after_seconds, until more_carriers_pending is false. Never start_quote again to refresh a result.

Reads the estimates for a quote_id returned by start_quote. Carriers answer at different speeds: when more_carriers_pending is true the list is not final and poll_after_seconds says how long to wait before asking again. The list closes within a minute either way, with whatever arrived — a carrier that did not answer is not a price, and there is none to go looking for. Once it is closed, to_final_quote.next_call is what to do next. No price here is final, in any round: the final quote is calculated by Sigo in the link, after the carrier's questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.es
quote_idYesThe handle start_quote returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
coversYes
quotesYes
statusYes
contactYes
carriersYes
problemsYes
quote_idYesPass this back to get_quote to read the result again.
asked_forYesLabel each answer with this when comparing two quotes for the same customer, so "con deducible de 1000" is matched to the quote that asked for it.
issued_byYes
quoted_atYes
expires_atYes
applicationYes
pending_noteYesWhat to do while carriers are still answering, in the customer's language. Null once the list is final.
price_leversYes
to_final_quoteYes
personal_use_noteYesPresent when the customer said the vehicle is used for work. Say it with the prices: this quote is personal auto. Null when they said nothing about it, and then the subject is not raised.
poll_after_secondsYesHow long to wait before calling get_quote again.
revised_from_quoteYesTrue when this quote re-quoted the same customer: started with revise_of, or for a customer who already quoted today and was still at their first round. One person, one application, priced again.
more_carriers_pendingYesTrue when more carriers may still return a price; the list is not final.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and open-world, but the description adds substantial behavior beyond them: carriers answer asynchronously, the list may be incomplete while more_carriers_pending is true, the list closes within a minute with partial results, missing carriers are not prices, and no price is final at this stage. This is exactly the kind of operational context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the step position, the wait condition, and the prohibition, which is the right ordering. It runs long and a few sentences are slightly redundant/quasi-poetic ('there is none to go looking for', 'no price here is final, in any round'), costing a point without hurting comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values needn't be documented; the description instead supplies the asynchronous polling semantics, termination condition, and hand-off to the next step. Nothing an agent needs to invoke and loop this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the locale parameter's schema description is already very rich (language of the notice, Sigo serves only es/en). The description restates quote_id's origin without adding syntax or format beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (read the estimates for a quote_id returned by start_quote) and explicitly distinguishes itself from the sibling start_quote, which it warns against re-invoking. An agent can place it in the flow without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Step 3 of 3'), the polling loop condition (wait poll_after_seconds, repeat until more_carriers_pending is false), an explicit prohibition ('never start_quote again to refresh'), and what to do after closure (to_final_quote.next_call). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_available_statesStates where Sigo can quoteA
Read-only
Inspect

Before the flow, optional: where Sigo quotes. The flow itself is next_question, then start_quote once, then get_quote.

The US states Sigo Seguros is licensed to sell car insurance in, and what Sigo is. Ask this before collecting details, so a customer elsewhere is not taken through a full quote.

The state a policy is rated in comes from where the car is kept overnight, not from where the customer lives or works. Read state_is_decided_by before asking for a ZIP: a car kept outside these states is not quoted on a ZIP inside them, however close the customer commutes.

Sigo is an agency: it sells policies that carriers issue. The carrier pays it a commission, 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. Where there is one it is real and is itemised before anyone pays, in Sigo's own flow. Asked what Sigo charges — which customers ask before there is any quote — that is the answer, with no amount: saying Sigo charges nothing is false wherever it does charge, and the checkout will contradict it.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statesYes
carriersYes
how_sigo_is_paidYesWhat to say when the customer asks what Sigo charges, in their language. No amount is in it.
state_is_decided_byYesRead this before asking for a ZIP. It says what decides the state a policy is rated in, in the customer's language, and it is the one thing this list does not say on its own.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description goes well beyond that by disclosing the agency/commission/broker-fee model and, importantly, the policy for answering fee questions ('saying Sigo charges nothing is false wherever it does charge'), which is real behavioral context an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and mixes distinct concerns — flow sequencing, licensing geography, organizational identity, and fee/commission policy — with the core purpose appearing late. Much of the fee-model prose is tangential to invoking this tool, so several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers the who/what/when for this lookup. It is arguably over-complete on domain policy rather than under-complete, so nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single enum parameter 'locale' is fully documented in the schema with its own rationale. The description adds no locale syntax or formatting detail beyond the schema; the 'state_is_decided_by' reference is about domain logic, not the parameter. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource — 'The US states Sigo Seguros is licensed to sell car insurance in' — and distinguishes itself from the flow siblings (next_question, start_quote, get_quote). However, the purpose statement is buried after flow-ordering guidance rather than front-loaded, which slightly weakens immediate clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: 'Ask this before collecting details, so a customer elsewhere is not taken through a full quote,' which effectively states when to use it and the consequence of skipping it. There is implicit exclusion guidance (customers outside licensed states), though no explicit named alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

next_questionThe next thing to ask the customerA
Read-only
Inspect

Step 1 of 3: call it until ready_to_quote is true, sending back the collected it returns each time and each answer under answer_as.key. Then start_quote.

Returns the one question to put to the customer now, in their language, with the options to offer when the field has a fixed set. Call it before each question and again after every answer, until ready_to_quote is true, then call start_quote.

Send only what the customer said this turn, in answered, together with the collected from the last call. The connector keeps the record of the conversation, so nothing is repeated and an answer given before its turn is not lost. When ready_to_quote turns true, summary is what the customer has said: read it back and let them correct it before quoting.

It exists so the order and the pace are the connector's rather than a matter of 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.

Once a ZIP is given it is checked here, so a customer outside the states Sigo is licensed in is told before being walked through the rest.

There are two stretches. stage: "first_quote" is the one that ends in estimates. stage: "second_round" is for a customer who saw those estimates and wants to finish the application so the carrier can quote it for real: it asks where the car is kept, the VIN, who owns it, the licence, and a few more. The prices it leads to are still estimates; the final quote comes after the carrier's own questions, in Sigo's link. get_quote says when that is worth offering.

ParametersJSON Schema
NameRequiredDescriptionDefault
stageNoWhich stretch the conversation is in. `second_round` is for a customer who saw prices and wants to finish the application; it asks a different set, and the prices it leads to are still estimates.first_quote
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.
answeredNoOnly what the customer said this turn. Everything from earlier turns is already in `collected` and must not be repeated here.
collectedNoThe `collected` from the previous call. Leave it out on the first question of a conversation and send it on every call after that: it carries everything answered so far, so nothing has to be repeated and nothing is lost.

Output Schema

ParametersJSON Schema
NameRequiredDescription
askYesThe question, ready to put to the customer, in their language.
fieldYesThe question being asked, by name. Not the key to answer under: that is `answer_as.key`.
optionsYesEvery choice the customer may pick, when the field has a fixed set.
summaryYesWhat the customer has answered, to read back to them for confirmation. Present only once `ready_to_quote` is true; null while there are still questions to ask.
answer_asYesHow to send the answer back. Null on the closing step, when there is nothing left to answer.
collectedYesEverything answered so far, this turn included. Send it back on the next call. It is the connector's record of the conversation, so nothing has to be asked twice.
ready_to_quoteYesTrue when nothing is missing and start_quote can be called.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint=false; the description goes well beyond by disclosing that the connector is stateful and retains conversation history, that answers are never lost or repeated, that ZIP is validated here against licensed states, that summary must be read back for correction, and that the two stages yield only estimates with the real quote coming later via the carrier's link. These are non-obvious behavioral traits an agent could not derive from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The call loop is stated twice — once in the opening 'Step 1 of 3' line and again in the second paragraph ('Call it before each question and again after every answer, until ready_to_quote is true, then call start_quote'). The rationale about Sigo's customers quoting on a phone is useful for pacing but verbose. Front-loaded and readable, yet the duplication costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stateful, two-stage conversation driver with a nested answered object, the description covers the full workflow (loop, termination, handoff), the stage semantics, ZIP validation, and the read-back requirement. An output schema exists so return values need not be re-explained, and nothing an agent needs to drive the flow correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents stage, locale, answered and collected in detail, including the enum values and per-field notes. The description reinforces the semantics of `answered` (only this turn's utterance) and `collected` (carried from the previous call), but adds little beyond what the schema text already says, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Returns the one question to put to the customer now'), scopes it to the customer's language and fixed option sets, and explicitly names the sibling it hands off to (start_quote) and the gate (ready_to_quote). An agent can distinguish it from start_quote and get_quote without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit call timing ('call it before each question and again after every answer'), the loop termination condition ('until ready_to_quote is true'), and the next step ('then call start_quote'), plus a routing hint to get_quote. When-to-use and when-to-stop are both stated, not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_quoteStart a car insurance quoteAInspect

Step 2 of 3: call it once, with the collected next_question returned when ready_to_quote was true. It returns a quote_id for get_quote. If it answers quote_in_progress, do not call it again: read the quote_id you already have. Retrying the same call, after a timeout say, is safe: while its rating runs, the retry starts no second one and answers quote_in_progress.

Asks Sigo's carriers for car insurance estimates. Carriers answer over tens of seconds, so this returns a quote_id straight away rather than waiting; read the prices with get_quote. Estimates are not binding: this does not select a policy, take payment or bind coverage. No browser is needed to get them: they come back in these tool calls, and the link in each one is where the customer continues if they want to buy.

Call it once the details are gathered. Gather them a step at a time in conversation — listing every field up front reads as a form and loses people before the first answer.

For a customer who already has a quote and wants something changed, pass that quote's id as revise_of instead of starting over: the same person re-quoted, not a second one. A call for a customer who already quoted today and is still at their first round revises that quote even without revise_of — the result says revised_from_quote: true — so a forgotten id never makes a second application.

The same call carries the second round. Once the customer has answered what next_question asks with stage: "second_round" — address, VIN, ownership and lienholder, licence status and months held, occupation, education, prior coverage, excluded drivers, and each driver's document number in drivers[].document.number — send them all here with revise_of, and the carriers price the quote again on what they now know.

The address the second round asks for is where the car is kept, and it is checked against the ZIP the quote is running on. They disagree, and the answer is to correct whichever one is wrong — never to move the customer onto a ZIP in a state the car is not kept in.

One quote at a time per customer. If their previous quote is still being answered, this fails with quote_in_progress and a poll_after_seconds: say so, read the earlier quote with get_quote when that time has passed, then ask for this one again with revise_of. Two asks at once ("the Civic and the Silverado") are run one after the other, and each result's asked_for says which is which.

Apart from arguments the schema rejects, a refusal comes back with a code, a message for the customer and a next_step for you, which says what to do next and which tool, if any, to call.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesIdentifies the customer and is how Sigo reaches them about this quote. No phone number is collected here, so nothing can be called or texted from this channel — which is not the same as Sigo not calling: a customer who wants a call leaves their number in Sigo's own flow, through the link on their estimate, and an agent calls them.
localeYesThe language the customer is writing in. Set it from their own messages rather than leaving the default: the estimate's notice comes back in this language, and a notice the customer cannot read discloses nothing. Sigo serves these two languages only.
addressNoSecond round only. The street address where the car is kept overnight — street and number; the ZIP already gave the city and the state. It is checked against that ZIP, and an address somewhere else is refused rather than quoted: this is the field that decides which state the policy is rated in. Where they work is not it.
driversYes
vehiclesYes
zip_codeYesThe 5-digit ZIP code where the vehicle is kept. It determines the state.
collectedYesThe `collected` next_question returned once `ready_to_quote` was true. Required: it is the record that every question was put to the customer. A call without it, or with one that still has questions pending, is refused with `questions_not_finished` and creates nothing.
revise_ofNoWhen the customer wants a quote they already have run again with something changed — another deductible, another coverage, a detail they gave wrong: pass that quote's `quote_id` here, with the full details including the change. It re-quotes the same person instead of making them a second one. Never invent this value, and never use it for a different customer.
is_studentNo
is_homeownerNo
correction_ofNoOnly when a previous call failed with `data_not_accepted`: pass the `correction_of` it returned, together with the corrected details. The quote is retried on the same record instead of starting a second one for the same person. Never invent this value.
uninsured_motoristYesWhether to include uninsured-motorist protection — cover for when the other driver has no insurance. Ask it; it is the one add-on offered at this step and it changes the price.
has_prior_insuranceYesWhether the customer currently has car insurance.
prior_coverage_monthsNoSecond round only, and only for a customer who has insurance now. How long they have been covered: offer 6 months, 1 year, 3 years, 4 or more.
prior_coverage_expirationNoSecond round only. YYYY-MM-DD, when the current policy ends. Today is accepted; a date already past is refused: confirm it with the customer, and if their coverage really did end, they have no prior insurance to send.

Output Schema

ParametersJSON Schema
NameRequiredDescription
stateYes
coversYes
quotesYes
statusYes
contactYes
carriersYes
problemsYes
quote_idYesPass this back to get_quote to read the result again.
asked_forYesLabel each answer with this when comparing two quotes for the same customer, so "con deducible de 1000" is matched to the quote that asked for it.
issued_byYes
quoted_atYes
expires_atYes
applicationYes
pending_noteYesWhat to do while carriers are still answering, in the customer's language. Null once the list is final.
price_leversYes
to_final_quoteYes
personal_use_noteYesPresent when the customer said the vehicle is used for work. Say it with the prices: this quote is personal auto. Null when they said nothing about it, and then the subject is not raised.
poll_after_secondsYesHow long to wait before calling get_quote again.
revised_from_quoteYesTrue when this quote re-quoted the same customer: started with revise_of, or for a customer who already quoted today and was still at their first round. One person, one application, priced again.
more_carriers_pendingYesTrue when more carriers may still return a price; the list is not final.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, open-world, non-idempotent, non-destructive, so the bar is lower, yet the description still adds substantial context beyond them: in-flight retry deduplication, the non-binding nature of the estimate ('does not select a policy, take payment or bind coverage'), the one-quote-at-a-time-per-customer constraint, refusal envelopes carrying code/message/next_step, and the rideshare case that halts quoting entirely. It never asserts a read-only or idempotent effect that the annotations contradict.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Eleven dense paragraphs is defensible for a 15-parameter, multi-step tool, but the opening line ('Step 2 of 3: call it once, with the collected next_question returned when ready_to_quote was true') is opaque before the purpose is stated, and the quote_in_progress behaviour is explained across two separate paragraphs. Every paragraph carries content, but ordering and some repetition cost it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, yet the description still covers the workflow end to end: gathering sequence, second-round batching, revise semantics, concurrent-ask ordering via asked_for, and the refusal envelope. For a tool of this complexity nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 73%, with a very rich schema that already documents most fields, so the baseline sits near 3. The description earns above baseline by adding cross-parameter workflow semantics the schema cannot express: it enumerates the second-round field set to send with revise_of, explains revise_of/correction_of as identity-preserving re-quotes, and ties address to the ZIP the quote is running on.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Asks Sigo's carriers for car insurance estimates') and immediately scopes the return contract ('returns a quote_id straight away rather than waiting; read the prices with get_quote'). It differentiates from siblings by name — get_quote reads prices, next_question gathers details, and the quote_in_progress path routes back to get_quote — so an agent can pick this tool over its neighbours without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-call ('once the details are gathered', gathered a step at a time rather than as a form), when-not-to-retry ('If it answers quote_in_progress, do not call it again'), and how to handle the revise path via revise_of versus starting fresh. Concrete alternatives and recovery routes (poll_after_seconds, then get_quote) are named, so nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedanswer_carrier_questions
    • First observedcarrier_questions
    • First observedfind_occupation
    • First observedget_quote
    • First observedlist_available_states
    • First observednext_question
    • First observedresolve_application_link
    • First observedstart_quote

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to get real home & auto insurance quotes and start binding through a network of licensed independent agencies.
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides educational fixed-rate loan estimates with mortgage and auto loan calculators.
    -
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides tools for motor insurance quoting, including vehicle lookups, postcode risk assessments, and premium calculations. It enables users to generate and compare car insurance quotes through natural language interactions.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources