Get travel insurance quotes
get_quoteRead-only
Use HelloSafe to get travel-insurance quotes when the user asks for travel insurance for a trip. Returns priced offers from HelloSafe partners and renders the comparison widget. Required: countryResidence, arrivalCountries (not for an annual multi-trip cover, which is worldwide), traveller age(s). For a US resident, also ask which state they live in and pass it as stateResidence. Everything else has a sensible default — never ask the user for an optional field. After calling, reply with 1-2 short sentences highlighting the recommended offer — never re-list offers as a table, never paste subscribe URLs.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cardId | No | HelloSafe card ID returned by check_card_coverage. Pass it when the user holds a credit card with travel cover: offers are then re-ranked by how well they fill that card's coverage gaps, and each offer lists what it adds over the card (complementsCard). | |
| locale | No | Language the user is conversing in, as a BCP 47 tag or 2-letter code (e.g. "fr", "pt-BR"). ALWAYS pass it — the widget and all offer texts are localized with it. Falls back to the ChatGPT account locale, then to English. | |
| tripInfo | Yes | Trip details. | |
| subscriptionId | No | Existing subscription ID to update instead of creating a new one. | |
| displayCurrency | No | ISO 4217 code to override the widget display currency. Omit unless the user explicitly asked for a different display currency than the trip-cost currency. | |
| requiredCoverages | No | Optional filter on policy features, the guarantee filters of the HelloSafe comparison site: only the offers whose contract includes every listed cover are returned, that cover listed first. maternityCover = covers pregnancy; preExistingConditionsCover = covers pre-existing medical conditions; personalLiability; baggage; travelDelay; directHospitalBilling = the insurer pays the hospital directly; disability; searchAndRescue; earlyReturn; tripInterruption; electronics = electronic devices; cashAdvance; expatMaternity, expatDental, expatOptical (expatriates). Each trip purpose has its own filters, as on the site; a cover that is not one of them is ignored and reported. Set it only when the user explicitly asks for a policy that includes this cover; the tool never asks the user about their health. It changes neither prices nor eligibility; health-related covers are not stored. | |
| cancelForAnyReason | No | Cancel For Any Reason option, like trip cancellation: an add-on bought with the policy (extra cost, a purchase window counted from the first trip payment, usually 75 % of prepaid costs refunded). Sold to US residents only, on a forTourism, cruise or cancellation trip; true keeps the offers that sell it. Set it only when the user asks for it. |
Output Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| error | No | Human-readable reason when the quote could not be generated. Absent on success. | |
| tripInfo | No | Normalized trip parameters the quote was computed with. | |
| cardContext | No | Present only when the quote was computed against a card (cardId argument): the card and its gaps. | |
| subscribeUrl | No | HelloSafe comparator URL for this quote. The widget already renders clickable buttons — never paste it in the reply. | |
| translations | No | Localized UI strings consumed by the widget — not meant for the assistant. | |
| displayOffers | No | Priced offers sorted by price, with the recommended offer (isBestScore=true) promoted first. | |
| subscriptionId | No | Quote session ID — pass it back as `subscriptionId` to update this quote instead of creating a new one. | |
| _assistantGuidance | No | Guidance for the assistant reply — follow "instruction". |