Skip to main content
Glama

Sigo Seguros car insurance quotes

Start a car insurance quote

start_quote

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.

Input 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

NameRequiredDescriptionDefault
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
firm_pricesYes
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / email / pattern
      Previous value: -"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"New value: +"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
  2. Changed5 schema fields changed
    • addedInput schema / properties / vehicles / items / properties / annual_mileage
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 50000,
      +      "minimum": 1000,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Second round only, and only where next_question asked it (California). The customer's own estimate of miles per year, as a whole number: the figure they said or the round number they picked, never a range converted by the agent. The carrier has them attest to it."
      +}
    • removedOutput schema / properties / cover_first
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "chosen_quote_id": {
      -          "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "confirmed_price": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "currency": {
      -                  "const": "USD",
      -                  "type": "string"
      -                },
      -                "due_today": {
      -                  "type": "number"
      -                },
      -                "monthly_payment": {
      -                  "type": "number"
      -                },
      -                "total_for_term": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "currency",
      -                "due_today",
      -                "monthly_payment",
      -                "total_for_term"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      -        },
      -        "more_options_offered": {
      -          "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      -          "type": "boolean"
      -        },
      -        "next_call": {
      -          "description": "Exactly what to call next, with its arguments; null when nothing is.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "note": {
      -          "description": "What to tell the customer and do next, in their language.",
      -          "type": "string"
      -        },
      -        "poll_after_seconds": {
      -          "anyOf": [
      -            {
      -              "maximum": 9007199254740991,
      -              "minimum": -9007199254740991,
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "While confirming: how long to wait before get_quote again."
      -        },
      -        "status": {
      -          "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. handed_off: the answers are in and the carrier did not confirm here; give the customer next_step's link and stop. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      -          "enum": [
      -            "rating",
      -            "questions_pending",
      -            "confirming",
      -            "confirmed",
      -            "declined",
      -            "not_available",
      -            "handed_off"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "status",
      -        "chosen_quote_id",
      -        "confirmed_price",
      -        "more_options_offered",
      -        "poll_after_seconds",
      -        "next_call",
      -        "note"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • addedOutput schema / properties / firm_prices
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "next_call": {
      +          "description": "Exactly what to call next, with its arguments; null when nothing is.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "note": {
      +          "description": "What to tell the customer and do next, in their language.",
      +          "type": "string"
      +        },
      +        "options": {
      +          "description": "The firm prices the customer may pay now, lowest today's payment first. Each is a carrier's confirmed price, still subject to underwriting, eligibility, and state filing, and bought only in the link.",
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "carrier_name": {
      +                "type": "string"
      +              },
      +              "currency": {
      +                "const": "USD",
      +                "type": "string"
      +              },
      +              "due_today": {
      +                "description": "What the customer pays today, broker fee included.",
      +                "type": "number"
      +              },
      +              "excluded_people": {
      +                "description": "How many people the carrier excluded from this price. Say so with the price when it is not zero; who they are is shown in the link, never here.",
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "installment_amount": {
      +                "description": "Per instalment after today; null for pay-in-full.",
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "number_of_installments": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "payment_method": {
      +                "description": "The way of paying this price is valid on: card, ach or direct_bill. The customer confirms it in the link.",
      +                "type": "string"
      +              },
      +              "requires_autopay": {
      +                "description": "True when this price is only available with automatic payments. Say so with the price; the customer accepts autopay in the link before paying it.",
      +                "type": "boolean"
      +              },
      +              "roadside_included": {
      +                "description": "Whether roadside assistance is part of this price.",
      +                "type": "boolean"
      +              },
      +              "term_months": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": -9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "total_for_term": {
      +                "description": "Today's payment plus the instalments. Stated so it is not worked out.",
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "carrier_name",
      +              "currency",
      +              "due_today",
      +              "installment_amount",
      +              "number_of_installments",
      +              "total_for_term",
      +              "payment_method",
      +              "term_months",
      +              "roadside_included",
      +              "requires_autopay",
      +              "excluded_people"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "poll_after_seconds": {
      +          "anyOf": [
      +            {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "While pricing: how long to wait before get_quote again."
      +        },
      +        "status": {
      +          "description": "rating: carriers still answering. questions_pending: ask carrier_questions with this quote_id and no chosen_quote_id. pricing: the carriers are confirming; options holds what has landed, read again after poll_after_seconds. ready: every price is in options and the customer chooses and pays in the link. agent: no carrier confirmed a price online; a Sigo agent takes it.",
      +          "enum": [
      +            "rating",
      +            "questions_pending",
      +            "pricing",
      +            "ready",
      +            "agent"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "options",
      +        "poll_after_seconds",
      +        "next_call",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / to_final_quote / properties / next_call / description
      Previous value: -"Exactly what to call next, with its arguments: `next_question` with stage second_round while the application is incomplete; `carrier_questions` with `quote_id` (this quote) and `chosen_quote_id` (the `quote_id` of the estimate the customer picked) once it is. Null before there are prices."New value: +"Exactly what to call next, with its arguments: `next_question` with stage second_round while the application is incomplete; `carrier_questions` with `quote_id` (this quote) and `chosen_quote_id` (the `quote_id` of the estimate the customer picked) once it is, or with no `chosen_quote_id` when `firm_prices` is present. Null before there are prices."
    • changedOutput schema / required
      Previous value: -[
      -  "quote_id",
      -  "status",
      -  "more_carriers_pending",
      -  "poll_after_seconds",
      -  "pending_note",
      -  "to_final_quote",
      -  "cover_first",
      -  "application",
      -  "state",
      -  "quoted_at",
      -  "expires_at",
      -  "quotes",
      -  "problems",
      -  "contact",
      -  "covers",
      -  "asked_for",
      -  "revised_from_quote",
      -  "price_levers",
      -  "personal_use_note",
      -  "carriers",
      -  "issued_by"
      -]New value: +[
      +  "quote_id",
      +  "status",
      +  "more_carriers_pending",
      +  "poll_after_seconds",
      +  "pending_note",
      +  "to_final_quote",
      +  "firm_prices",
      +  "application",
      +  "state",
      +  "quoted_at",
      +  "expires_at",
      +  "quotes",
      +  "problems",
      +  "contact",
      +  "covers",
      +  "asked_for",
      +  "revised_from_quote",
      +  "price_levers",
      +  "personal_use_note",
      +  "carriers",
      +  "issued_by"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / drivers / items / properties / document / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "description": "Offer all six. A customer without a US licence is quotable on a foreign licence, a consular ID (matrícula) or a passport, and offering fewer reads as being turned away. None of the six is a learner permit, and the type on its own is never read as a full licence: a permit holder is recorded with the type of the document they carry and with `license_status: \"learner-permit\"`, which is what the rater prices as a permit.",
      -        "enum": [
      -          "us_license",
      -          "foreign_license",
      -          "us_id",
      -          "foreign_id",
      -          "consular_id",
      -          "passport"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "number": {
      +        "anyOf": [
      +          {
      +            "maxLength": 13,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Second round only, as on sigoseguros.com: required there for every driver who is not excluded, and dropped if sent on a first quote. A Texas licence is 7 or 8 digits, a California one 1 letter and 7 digits, a Florida one 1 letter and 12 digits; any other is up to 12 characters."
      +      },
      +      "type": {
      +        "description": "Offer all six. A customer without a US licence is quotable on a foreign licence, a consular ID (matrícula) or a passport, and offering fewer reads as being turned away. None of the six is a learner permit, and the type on its own is never read as a full licence: a permit holder is recorded with the type of the document they carry and with `license_status: \"learner-permit\"`, which is what the rater prices as a permit.",
      +        "enum": [
      +          "us_license",
      +          "foreign_license",
      +          "us_id",
      +          "foreign_id",
      +          "consular_id",
      +          "passport"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / cover_first / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "chosen_quote_id": {
      -        "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "confirmed_price": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "currency": {
      -                "const": "USD",
      -                "type": "string"
      -              },
      -              "due_today": {
      -                "type": "number"
      -              },
      -              "monthly_payment": {
      -                "type": "number"
      -              },
      -              "total_for_term": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "currency",
      -              "due_today",
      -              "monthly_payment",
      -              "total_for_term"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      -      },
      -      "more_options_offered": {
      -        "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      -        "type": "boolean"
      -      },
      -      "next_call": {
      -        "description": "Exactly what to call next, with its arguments; null when nothing is.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "note": {
      -        "description": "What to tell the customer and do next, in their language.",
      -        "type": "string"
      -      },
      -      "poll_after_seconds": {
      -        "anyOf": [
      -          {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "While confirming: how long to wait before get_quote again."
      -      },
      -      "status": {
      -        "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      -        "enum": [
      -          "rating",
      -          "questions_pending",
      -          "confirming",
      -          "confirmed",
      -          "declined",
      -          "not_available"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "chosen_quote_id",
      -      "confirmed_price",
      -      "more_options_offered",
      -      "poll_after_seconds",
      -      "next_call",
      -      "note"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "chosen_quote_id": {
      +        "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "confirmed_price": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "currency": {
      +                "const": "USD",
      +                "type": "string"
      +              },
      +              "due_today": {
      +                "type": "number"
      +              },
      +              "monthly_payment": {
      +                "type": "number"
      +              },
      +              "total_for_term": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "currency",
      +              "due_today",
      +              "monthly_payment",
      +              "total_for_term"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      +      },
      +      "more_options_offered": {
      +        "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      +        "type": "boolean"
      +      },
      +      "next_call": {
      +        "description": "Exactly what to call next, with its arguments; null when nothing is.",
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "note": {
      +        "description": "What to tell the customer and do next, in their language.",
      +        "type": "string"
      +      },
      +      "poll_after_seconds": {
      +        "anyOf": [
      +          {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "While confirming: how long to wait before get_quote again."
      +      },
      +      "status": {
      +        "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. handed_off: the answers are in and the carrier did not confirm here; give the customer next_step's link and stop. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      +        "enum": [
      +          "rating",
      +          "questions_pending",
      +          "confirming",
      +          "confirmed",
      +          "declined",
      +          "not_available",
      +          "handed_off"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "chosen_quote_id",
      +      "confirmed_price",
      +      "more_options_offered",
      +      "poll_after_seconds",
      +      "next_call",
      +      "note"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / drivers / items / properties / document / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "number": {
      -        "anyOf": [
      -          {
      -            "maxLength": 30,
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Optional on a first quote. The second round asks for it, as the web does, and the carrier's questions do not open until every driver who is not excluded has it."
      -      },
      -      "type": {
      -        "description": "Offer all six. A customer without a US licence is quotable on a foreign licence, a consular ID (matrícula) or a passport, and offering fewer reads as being turned away. None of the six is a learner permit, and the type on its own is never read as a full licence: a permit holder is recorded with the type of the document they carry and with `license_status: \"learner-permit\"`, which is what the rater prices as a permit.",
      -        "enum": [
      -          "us_license",
      -          "foreign_license",
      -          "us_id",
      -          "foreign_id",
      -          "consular_id",
      -          "passport"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "description": "Offer all six. A customer without a US licence is quotable on a foreign licence, a consular ID (matrícula) or a passport, and offering fewer reads as being turned away. None of the six is a learner permit, and the type on its own is never read as a full licence: a permit holder is recorded with the type of the document they carry and with `license_status: \"learner-permit\"`, which is what the rater prices as a permit.",
      +        "enum": [
      +          "us_license",
      +          "foreign_license",
      +          "us_id",
      +          "foreign_id",
      +          "consular_id",
      +          "passport"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Changed4 schema fields changed
    • removedInput schema / properties / vehicles / items / properties / make / pattern
      Removed value: -"^[\\p{L}\\p{N} .,'\\-/]+$"
    • removedInput schema / properties / vehicles / items / properties / model / pattern
      Removed value: -"^[\\p{L}\\p{N} .,'\\-/]+$"
    • addedOutput schema / properties / cover_first
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "chosen_quote_id": {
      +          "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "confirmed_price": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "currency": {
      +                  "const": "USD",
      +                  "type": "string"
      +                },
      +                "due_today": {
      +                  "type": "number"
      +                },
      +                "monthly_payment": {
      +                  "type": "number"
      +                },
      +                "total_for_term": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "currency",
      +                "due_today",
      +                "monthly_payment",
      +                "total_for_term"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      +        },
      +        "more_options_offered": {
      +          "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      +          "type": "boolean"
      +        },
      +        "next_call": {
      +          "description": "Exactly what to call next, with its arguments; null when nothing is.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "note": {
      +          "description": "What to tell the customer and do next, in their language.",
      +          "type": "string"
      +        },
      +        "poll_after_seconds": {
      +          "anyOf": [
      +            {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "While confirming: how long to wait before get_quote again."
      +        },
      +        "status": {
      +          "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      +          "enum": [
      +            "rating",
      +            "questions_pending",
      +            "confirming",
      +            "confirmed",
      +            "declined",
      +            "not_available"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "chosen_quote_id",
      +        "confirmed_price",
      +        "more_options_offered",
      +        "poll_after_seconds",
      +        "next_call",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "quote_id",
      -  "status",
      -  "more_carriers_pending",
      -  "poll_after_seconds",
      -  "pending_note",
      -  "to_final_quote",
      -  "application",
      -  "state",
      -  "quoted_at",
      -  "expires_at",
      -  "quotes",
      -  "problems",
      -  "contact",
      -  "covers",
      -  "asked_for",
      -  "revised_from_quote",
      -  "price_levers",
      -  "personal_use_note",
      -  "carriers",
      -  "issued_by"
      -]New value: +[
      +  "quote_id",
      +  "status",
      +  "more_carriers_pending",
      +  "poll_after_seconds",
      +  "pending_note",
      +  "to_final_quote",
      +  "cover_first",
      +  "application",
      +  "state",
      +  "quoted_at",
      +  "expires_at",
      +  "quotes",
      +  "problems",
      +  "contact",
      +  "covers",
      +  "asked_for",
      +  "revised_from_quote",
      +  "price_levers",
      +  "personal_use_note",
      +  "carriers",
      +  "issued_by"
      +]
  6. Changed2 schema fields changed
    • removedOutput schema / properties / cover_first
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "chosen_quote_id": {
      -          "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "confirmed_price": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "currency": {
      -                  "const": "USD",
      -                  "type": "string"
      -                },
      -                "due_today": {
      -                  "type": "number"
      -                },
      -                "monthly_payment": {
      -                  "type": "number"
      -                },
      -                "total_for_term": {
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "currency",
      -                "due_today",
      -                "monthly_payment",
      -                "total_for_term"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      -        },
      -        "more_options_offered": {
      -          "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      -          "type": "boolean"
      -        },
      -        "next_call": {
      -          "description": "Exactly what to call next, with its arguments; null when nothing is.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "note": {
      -          "description": "What to tell the customer and do next, in their language.",
      -          "type": "string"
      -        },
      -        "poll_after_seconds": {
      -          "anyOf": [
      -            {
      -              "maximum": 9007199254740991,
      -              "minimum": -9007199254740991,
      -              "type": "integer"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "While confirming: how long to wait before get_quote again."
      -        },
      -        "status": {
      -          "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      -          "enum": [
      -            "rating",
      -            "questions_pending",
      -            "confirming",
      -            "confirmed",
      -            "declined",
      -            "not_available"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "status",
      -        "chosen_quote_id",
      -        "confirmed_price",
      -        "more_options_offered",
      -        "poll_after_seconds",
      -        "next_call",
      -        "note"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "quote_id",
      -  "status",
      -  "more_carriers_pending",
      -  "poll_after_seconds",
      -  "pending_note",
      -  "to_final_quote",
      -  "cover_first",
      -  "application",
      -  "state",
      -  "quoted_at",
      -  "expires_at",
      -  "quotes",
      -  "problems",
      -  "contact",
      -  "covers",
      -  "asked_for",
      -  "revised_from_quote",
      -  "price_levers",
      -  "personal_use_note",
      -  "carriers",
      -  "issued_by"
      -]New value: +[
      +  "quote_id",
      +  "status",
      +  "more_carriers_pending",
      +  "poll_after_seconds",
      +  "pending_note",
      +  "to_final_quote",
      +  "application",
      +  "state",
      +  "quoted_at",
      +  "expires_at",
      +  "quotes",
      +  "problems",
      +  "contact",
      +  "covers",
      +  "asked_for",
      +  "revised_from_quote",
      +  "price_levers",
      +  "personal_use_note",
      +  "carriers",
      +  "issued_by"
      +]
  7. Changed2 schema fields changed
    • addedOutput schema / properties / cover_first
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "chosen_quote_id": {
      +          "description": "The one estimate's quote_id, to pass to carrier_questions. Null when there is none.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "confirmed_price": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "currency": {
      +                  "const": "USD",
      +                  "type": "string"
      +                },
      +                "due_today": {
      +                  "type": "number"
      +                },
      +                "monthly_payment": {
      +                  "type": "number"
      +                },
      +                "total_for_term": {
      +                  "type": "number"
      +                }
      +              },
      +              "required": [
      +                "currency",
      +                "due_today",
      +                "monthly_payment",
      +                "total_for_term"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The carrier's confirmed amounts, once confirmed. Still subject to eligibility and state rules."
      +        },
      +        "more_options_offered": {
      +          "description": "True when Sigo offers to look at the other carriers beside a confirmed price. Offer it once; other_carrier_questions is how, and only if the customer wants to compare.",
      +          "type": "boolean"
      +        },
      +        "next_call": {
      +          "description": "Exactly what to call next, with its arguments; null when nothing is.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "note": {
      +          "description": "What to tell the customer and do next, in their language.",
      +          "type": "string"
      +        },
      +        "poll_after_seconds": {
      +          "anyOf": [
      +            {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "While confirming: how long to wait before get_quote again."
      +        },
      +        "status": {
      +          "description": "rating: carriers still answering. questions_pending: ask carrier_questions for the one estimate shown. confirming: Sigo is confirming the price, read again. confirmed: the price is in confirmed_price and the customer pays in the link. declined / not_available: that option is not the answer; other_carrier_questions follows.",
      +          "enum": [
      +            "rating",
      +            "questions_pending",
      +            "confirming",
      +            "confirmed",
      +            "declined",
      +            "not_available"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "chosen_quote_id",
      +        "confirmed_price",
      +        "more_options_offered",
      +        "poll_after_seconds",
      +        "next_call",
      +        "note"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "quote_id",
      -  "status",
      -  "more_carriers_pending",
      -  "poll_after_seconds",
      -  "pending_note",
      -  "to_final_quote",
      -  "application",
      -  "state",
      -  "quoted_at",
      -  "expires_at",
      -  "quotes",
      -  "problems",
      -  "contact",
      -  "covers",
      -  "asked_for",
      -  "revised_from_quote",
      -  "price_levers",
      -  "personal_use_note",
      -  "carriers",
      -  "issued_by"
      -]New value: +[
      +  "quote_id",
      +  "status",
      +  "more_carriers_pending",
      +  "poll_after_seconds",
      +  "pending_note",
      +  "to_final_quote",
      +  "cover_first",
      +  "application",
      +  "state",
      +  "quoted_at",
      +  "expires_at",
      +  "quotes",
      +  "problems",
      +  "contact",
      +  "covers",
      +  "asked_for",
      +  "revised_from_quote",
      +  "price_levers",
      +  "personal_use_note",
      +  "carriers",
      +  "issued_by"
      +]
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: carriers take tens of seconds so the call returns a quote_id immediately, retries during rating start no second quote, estimates are non-binding with no policy selection/payment, and refusals return a code, customer message and next_step. The one-quote-at-a-time rule and the address-versus-ZIP refusal are side effects an agent would otherwise discover by failing.

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 number and the single-call rule, and every paragraph carries operational content. Some material is doubled — the quote_in_progress behaviour is explained both in paragraph one and in 'One quote at a time per customer', and the address/ZIP caution repeats the schema — but no sentence is pure filler.

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 15-parameter, 8-required, multi-round tool with an output schema, the description supplies the missing workflow layer: preconditions, the revise/correction reuse paths, the second-round batch, and the refusal contract. Return values are covered by the output schema, so omitting their shape is appropriate.

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?

With 73% schema coverage the schema already carries most parameter meaning, and the description still adds real semantics: which fields belong to the second round (address, VIN, ownership, lienholder, licence status, occupation, education, prior coverage, document number), that revise_of re-quotes the same person, and that collected is the completion record or the call is refused with questions_not_finished. It does not add syntax detail for the top-level required fields, which keeps it below a 5.

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 ('Asks Sigo's carriers for car insurance estimates') and immediately scopes it in a workflow ('Step 2 of 3'). It explicitly separates itself from neighbours: get_quote reads prices, next_question gathers fields, find_occupation supplies rater codes. An agent can pick this tool without opening any 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-call (once ready_to_quote was true, once details are gathered, one field at a time), when-not-to (do not retry on quote_in_progress; do not start over for a change — use revise_of; do not move a customer to a ZIP in another state), and named alternatives. The quote_in_progress / poll_after_seconds branch and the rideshare stop condition are both spelled out.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources