Skip to main content
Glama

Check a bank card's travel insurance

check_card_coverage
Read-only

Checks what travel insurance a credit card already includes, from the card's own terms & conditions in HelloSafe's card database. For questions about what a card covers for travel (medical, cancellation, baggage, ski…) or whether it is enough for a trip. The card is identified from its name (and bank / country when given). Returns the covered guarantees with amounts and conditions, the coverage gaps, and the card id, which get_quote accepts as cardId to rank offers by how well they fill those gaps. Coverage comes from the card's terms only: anything not returned is not documented.

Input Schema

NameRequiredDescriptionDefault
cardIdNoExact HelloSafe card ID from a previous call: it re-checks that card instead of matching by name.
localeNoLanguage the user is conversing in, as a BCP 47 tag or 2-letter code (e.g. "fr", "pt-BR"). Guarantee labels are localized with it.
networkNoCard network when stated: "Visa", "Mastercard", "Amex".
cardQueryNoCard name as the user said it, expanded ("American Express Platinum", not "Amex Plat"), with the bank when known ("Chase Sapphire Reserve"). Not needed when cardId is given.
bankCountryNoISO-2 country of the issuing bank (e.g. "US", "FR"). Defaults to the user's country of residence when known — greatly improves matching.
tripContextNoOptional trip details; they sharpen the gap analysis.

Output Schema

NameRequiredDescriptionDefault
cardNoThe card the analysis is about.
gapsNoGuarantees missing or insufficient for the trip — the offer features a complementary policy should provide.
errorNoHuman-readable reason when the check could not run. Absent on success.
coveredNoTravel guarantees the card really includes, with amounts and conditions from the card T&Cs.
unknownNoCore guarantees with no data on this card: not documented in HelloSafe's data, which is not the same as not covered.
cardWidgetNoData rendered by the card widget (gaps, catches, full sheet) — not meant for the assistant.
alternativesNoOther cards matching the query; any of their ids can be passed back as cardId.
translationsNoLocalized UI strings consumed by the widget — not meant for the assistant.
allGuaranteesNoThe card's FULL guarantee sheet, grouped by section (travel first). Shown in the widget.
_assistantGuidanceNoContext of the result: what the widget shows and the facts behind the analysis.
cancellationOnlyGapNoTrue when cancellation is the ONLY gap: a cancellation-only policy (get_quote intent "cancellation") is then usually much cheaper than full cover.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changed
    • changedInput schema / properties / cardId / description
      Previous value: -"Exact HelloSafe card ID from a previous call — use it to re-check a specific candidate instead of fuzzy matching."New value: +"Exact HelloSafe card ID from a previous call: it re-checks that card instead of matching by name."
    • changedInput schema / properties / cardQuery / description
      Previous value: -"Card name as the user said it, expanded (\"American Express Platinum\", not \"Amex Plat\"). Include the bank when known (\"Chase Sapphire Reserve\"). Omit only when cardId is provided."New value: +"Card name as the user said it, expanded (\"American Express Platinum\", not \"Amex Plat\"), with the bank when known (\"Chase Sapphire Reserve\"). Not needed when cardId is given."
    • changedInput schema / properties / locale / description
      Previous value: -"Language the user is conversing in, as a BCP 47 tag or 2-letter code (e.g. \"fr\", \"pt-BR\"). ALWAYS pass it."New value: +"Language the user is conversing in, as a BCP 47 tag or 2-letter code (e.g. \"fr\", \"pt-BR\"). Guarantee labels are localized with it."
    • changedInput schema / properties / tripContext / description
      Previous value: -"Optional trip details — sharpen the gap analysis. Omit what you do not know."New value: +"Optional trip details; they sharpen the gap analysis."
    • addedOutput schema / properties / _assistantGuidance / description
      Added value: +"Context of the result: what the widget shows and the facts behind the analysis."
    • addedOutput schema / properties / _assistantGuidance / properties / context
      Added value: +{
      +  "description": "Facts behind the analysis: sources, what the widget shows, the travel gaps for the trip.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _assistantGuidance / properties / instruction / description
      Added value: +"Not sent (see context)."
    • changedOutput schema / properties / alternatives / description
      Previous value: -"Other cards matching the query. If the analysed card is not the user's, ask which one and call again with its cardId."New value: +"Other cards matching the query; any of their ids can be passed back as cardId."
    • changedOutput schema / properties / alternatives / items / properties / id / description
      Previous value: -"HelloSafe card ID — pass to get_quote as `cardId` to get offers that complement this card, or back to this tool to re-check a specific candidate."New value: +"HelloSafe card ID: as `cardId`, get_quote ranks offers by how well they complement this card, and this tool re-checks it."
    • changedOutput schema / properties / cancellationOnlyGap / description
      Previous value: -"True when cancellation is the ONLY gap — suggest a cancellation-only policy (intent \"cancellation\" in get_quote), usually much cheaper."New value: +"True when cancellation is the ONLY gap: a cancellation-only policy (get_quote intent \"cancellation\") is then usually much cheaper than full cover."
    • changedOutput schema / properties / card / properties / id / description
      Previous value: -"HelloSafe card ID — pass to get_quote as `cardId` to get offers that complement this card, or back to this tool to re-check a specific candidate."New value: +"HelloSafe card ID: as `cardId`, get_quote ranks offers by how well they complement this card, and this tool re-checks it."
    • changedOutput schema / properties / unknown / description
      Previous value: -"Core guarantees with no data on this card — phrase as \"not documented, check your contract\", never as \"not covered\"."New value: +"Core guarantees with no data on this card: not documented in HelloSafe's data, which is not the same as not covered."
  2. Changed1 schema field changed
    • changedOutput schema / properties / allGuarantees / description
      Previous value: -"The card's FULL guarantee sheet, grouped by section (travel first) — render as one markdown table per section: Guarantee | Your card | Recommended | Verdict."New value: +"The card's FULL guarantee sheet, grouped by section (travel first). Shown in the widget."
  3. Changed2 schema fields changed
    • addedOutput schema / properties / cardWidget
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Data rendered by the card widget (gaps, catches, full sheet) — not meant for the assistant.",
      +  "properties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / translations
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Localized UI strings consumed by the widget — not meant for the assistant.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / tripContext / properties / intent / description
      Previous value: -"Trip purpose when known — same values as get_quote (forTourism, mountainTrip, schengenArea…). Drives the thresholds (e.g. ski cover checked for mountainTrip)."New value: +"Trip purpose when known — same values as get_quote (forTourism, schengenArea, studyInternship…). Drives the thresholds."
  5. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: coverage is limited to the card's own terms and "anything not returned is not documented", which tells the agent not to infer missing cover. It does not mention data freshness or whether a name-only match can fail or return multiple candidates.

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?

Four sentences, front-loaded with purpose before scope and the get_quote handoff; nothing is padding. The heavy parentheticals and the trailing caveat make it slightly dense, but each clause carries information an agent needs.

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?

Six optional parameters plus a nested tripContext object and an output schema would normally demand a lot of the description, and this one covers input identification, the gap-analysis framing, the completeness caveat and the sibling handoff. An agent has everything needed to decide to call it and to interpret the result.

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; the description still adds a little by stating the card is identified from its name with bank/country when given, and by framing tripContext as sharpening the gap analysis. It reinforces the cardId reuse path but does not add syntax or edge-case semantics (e.g., what happens when cardId and cardQuery conflict).

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 ("checks what travel insurance a credit card already includes") plus the data source (HelloSafe's card terms database). It also positions the tool against its sibling by naming how get_quote consumes the returned cardId, so an agent can distinguish the two without opening either schema.

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?

Gives a clear trigger: questions about what a card covers for travel (medical, cancellation, baggage, ski) or whether that cover is sufficient for a trip. The downstream handoff to get_quote is spelled out, which implicitly frames the alternative, but there is no explicit statement of when not to call it (e.g., user already has a cardId or has moved on to offer ranking).

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