Skip to main content
Glama

Server Details

Compare travel insurance quotes from 15+ insurers — Schengen, WHV, students, long stays, seniors.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 38 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: checking existing card coverage vs. obtaining new quotes. No overlap or ambiguity exists, and each tool's description clearly specifies when to use it.

Naming Consistency5/5

Both tool names follow a consistent verb_noun pattern: 'check_card_coverage' and 'get_quote'. The naming is uniform and predictable, with no style mixing.

Tool Count3/5

With only 2 tools, the server is very thin. While the focus is narrow, the small count feels borderline for a typical MCP server, though it may be sufficient for the stated purpose of checking and quoting insurance.

Completeness4/5

The server covers the core workflow of checking existing coverage and obtaining quotes. However, it lacks any tool for managing policies (e.g., purchase, cancel, file claims), which is a minor gap but acceptable given the server's specific scope.

Available Tools

2 tools
check_card_coverageA
Read-only
Inspect

Use HelloSafe to check what travel insurance a credit card already includes, from the card's real terms & conditions. Call whenever the user asks what their card covers for a trip (medical, cancellation, baggage, ski…), whether their card is enough, or mentions relying on their card's insurance. Identify the card from its name (and bank / country when given). Returns the real covered guarantees with amounts and conditions, plus the coverage gaps for the trip. If gaps exist, offer to get complementary travel-insurance quotes via get_quote, passing this card's id as cardId so the offers are ranked by how well they fill the gaps. Never invent coverage: only state what this tool returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardIdNoExact HelloSafe card ID from a previous call — use it to re-check a specific candidate instead of fuzzy matching.
localeNoLanguage the user is conversing in, as a BCP 47 tag or 2-letter code (e.g. "fr", "pt-BR"). ALWAYS pass it.
networkNoCard network when stated: "Visa", "Mastercard", "Amex".
cardQueryNoCard 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.
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 — sharpen the gap analysis. Omit what you do not know.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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 — phrase as "not documented, check your contract", never as "not covered".
alternativesNoOther cards matching the query. If the analysed card is not the user's, ask which one and call again with its cardId.
allGuaranteesNoThe card's FULL guarantee sheet, grouped by section (travel first) — render as one markdown table per section: Guarantee | Your card | Recommended | Verdict.
_assistantGuidanceNo
cancellationOnlyGapNoTrue when cancellation is the ONLY gap — suggest a cancellation-only policy (intent "cancellation" in get_quote), usually much cheaper.

TDQS

A4.6/5.0
Behavior4/5

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

The description adds value beyond annotations by guaranteeing 'Never invent coverage: only state what this tool returns' and noting the data comes from real terms & conditions. This reassures the agent about data fidelity without contradicting the readOnlyHint annotation.

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?

The description is front-loaded with purpose and when-to-use, then logically flows into output and follow-up. It is somewhat verbose but every sentence contributes actionable guidance, and the structure is clear.

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, the description focuses on usage context and behavior. It explains the return value (real covered guarantees with amounts and conditions, plus gaps) and the follow-up routing to get_quote. For a tool with 6 parameters and nested objects, this is complete.

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?

The input schema already documents all six parameters with detailed descriptions (100% coverage). The description adds context on when to use cardId vs cardQuery and explains that tripContext sharpens gap analysis, which goes slightly beyond the schema but is not extensive.

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 clear verb and resource: 'check what travel insurance a credit card already includes' from real terms & conditions. It distinguishes itself from the sibling get_quote by specifying that get_quote is for complementary quotes after gaps are identified.

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 explicitly lists when to call ('Call whenever the user asks what their card covers for a trip...') with concrete examples. It also provides a clear follow-up action: if gaps exist, offer get_quote and pass the card's id as cardId, which directs the agent to the correct next step.

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

get_quoteA
Read-only
Inspect

Use HelloSafe to get travel-insurance quotes whenever the user wants travel insurance. Returns priced offers from HelloSafe partners and renders the comparison widget. Required: countryResidence, arrivalCountries, 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cardIdNoHelloSafe 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).
localeNoLanguage 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.
tripInfoYesTrip details.
subscriptionIdNoExisting subscription ID to update instead of creating a new one.
displayCurrencyNoISO 4217 code to override the widget display currency. Omit unless the user explicitly asked for a different display currency than the trip-cost currency.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoHuman-readable reason when the quote could not be generated. Absent on success.
tripInfoNoNormalized trip parameters the quote was computed with.
cardContextNoPresent only when the quote was computed against a card (cardId argument): the card and its gaps.
subscribeUrlNoHelloSafe comparator URL for this quote. The widget already renders clickable buttons — never paste it in the reply.
translationsNoLocalized UI strings consumed by the widget — not meant for the assistant.
displayOffersNoPriced offers sorted by price, with the recommended offer (isBestScore=true) promoted first.
subscriptionIdNoQuote session ID — pass it back as `subscriptionId` to update this quote instead of creating a new one.
_assistantGuidanceNoGuidance for the assistant reply — follow "instruction".

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it returns priced offers, renders a comparison widget, and dictates how the assistant should reply afterward. No contradictions with annotations.

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?

The description is front-loaded with the core purpose and remains focused. Every sentence carries useful guidance, though the repeated mention of HelloSafe and the dense rule list keep it from being maximally concise.

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?

Given the rich schema and the presence of an output schema, the description covers the key high-level context: trigger, required inputs, US-specific behavior, defaulting policy, and response constraints. It does not mention the locale requirement ('ALWAYS pass it'), but the schema explicitly documents that, so it is not a completeness gap.

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 baseline is 3. The description mostly restates what the schema already says (required countryResidence, arrivalCountries, traveller ages; US residents need stateResidence) and adds little new parameter-level meaning. The 'never ask for optional fields' guidance is helpful but is more of an interaction rule than parameter semantics.

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 names a specific action ('get travel-insurance quotes'), a specific provider ('HelloSafe'), and a clear trigger ('whenever the user wants travel insurance'). It also states observable outcomes (priced offers, comparison widget), making it easy to distinguish from the sibling check_card_coverage.

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?

The description clearly states when to use the tool and gives explicit interaction rules: required fields, US state handling, not asking for optional fields, and a specific post-call response format. It does not explicitly name when-not-to-use it or mention check_card_coverage as an alternative, so it falls short of a 5.

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. 1 tool update
    • Changedget_quote1 field changed
      • addedInput schema / properties / tripInfo / properties / stateResidence
        Added value: +{
        +  "description": "State of residence as its USPS 2-letter code (e.g. \"CA\", \"TX\") — for US residents only, ignored for every other country. US travel insurance is regulated state by state, so when countryResidence is \"US\" ASK THE USER which state they live in and pass it; never guess it from the destination or the chat language. The quote is still produced without it. The US territories are countries here, not states (a Puerto Rico resident is countryResidence \"PR\", never \"US\" + \"PR\").",
        +  "pattern": "^[A-Za-z]{2}$",
        +  "type": "string"
        +}
  2. 2 tool updates
    • Addedcheck_card_coverage
    • Changedget_quote3 fields changed
      • addedInput schema / properties / cardId
        Added value: +{
        +  "description": "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).",
        +  "type": "number"
        +}
      • changedInput schema / properties / locale / description
        Previous value: -"Language of the user. Defaults to the host locale."New value: +"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."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "_assistantGuidance": {
        +      "additionalProperties": {},
        +      "description": "Guidance for the assistant reply — follow \"instruction\".",
        +      "properties": {
        +        "instruction": {
        +          "description": "How the assistant should present the result to the user.",
        +          "type": "string"
        +        },
        +        "recommendedOffer": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "coverages": {
        +                  "additionalProperties": {
        +                    "type": "string"
        +                  },
        +                  "description": "Coverage label → covered amount for the recommended offer.",
        +                  "propertyNames": {
        +                    "type": "string"
        +                  },
        +                  "type": "object"
        +                },
        +                "insurerName": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "price": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ],
        +          "description": "Compact summary of the offer HelloSafe recommends for this trip."
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "cardContext": {
        +      "additionalProperties": {},
        +      "description": "Present only when the quote was computed against a card (cardId argument): the card and its gaps.",
        +      "properties": {
        +        "cancellationOnlyGap": {
        +          "type": "boolean"
        +        },
        +        "cardId": {
        +          "type": "number"
        +        },
        +        "cardName": {
        +          "type": "string"
        +        },
        +        "gaps": {
        +          "description": "The card coverage gaps that drove the offer ranking.",
        +          "items": {},
        +          "type": "array"
        +        },
        +        "unknown": {
        +          "items": {},
        +          "type": "array"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "displayOffers": {
        +      "description": "Priced offers sorted by price, with the recommended offer (isBestScore=true) promoted first.",
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "complementsCard": {
        +            "description": "Only when the quote carries a cardId: labels of the card's coverage gaps this offer fills — what it adds over the user's card.",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "faq": {
        +            "description": "Frequently asked questions about this offer.",
        +            "items": {},
        +            "type": "array"
        +          },
        +          "features": {
        +            "additionalProperties": {
        +              "type": "string"
        +            },
        +            "description": "Coverage feature slug → formatted covered amount, already filtered for the trip purpose and converted to the display currency.",
        +            "propertyNames": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "id": {
        +            "description": "HelloSafe offer ID.",
        +            "type": "number"
        +          },
        +          "insurerLogoUrl": {
        +            "description": "Absolute URL of the insurer logo.",
        +            "type": "string"
        +          },
        +          "insurerName": {
        +            "description": "Insurer brand name.",
        +            "type": "string"
        +          },
        +          "isBestScore": {
        +            "description": "True for the single offer HelloSafe recommends for this trip (shown first).",
        +            "type": "boolean"
        +          },
        +          "isStartingPrice": {
        +            "description": "True when the price is a \"from\" price.",
        +            "type": "boolean"
        +          },
        +          "name": {
        +            "description": "Commercial name of the offer / formula.",
        +            "type": "string"
        +          },
        +          "noList": {
        +            "description": "Newline-separated list of exclusions.",
        +            "type": "string"
        +          },
        +          "priceFullText": {
        +            "description": "Total price for the whole trip and all travellers, formatted in the display currency (e.g. \"34,20 €\").",
        +            "type": "string"
        +          },
        +          "priceParts": {
        +            "additionalProperties": {},
        +            "description": "Price split into rendering parts (used by the widget).",
        +            "properties": {
        +              "decimal": {
        +                "type": "string"
        +              },
        +              "decimalSeparator": {
        +                "type": "string"
        +              },
        +              "integer": {
        +                "type": "string"
        +              },
        +              "symbol": {
        +                "type": "string"
        +              },
        +              "symbolPosition": {
        +                "description": "\"prefix\" or \"suffix\".",
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "subscribeUrl": {
        +            "description": "HelloSafe comparator URL for this quote. The widget already renders it as a button — never paste it in the reply.",
        +            "type": "string"
        +          },
        +          "suffix": {
        +            "description": "Price period suffix key: \"perMonth\", \"perYear\", \"perDay\" or empty.",
        +            "type": "string"
        +          },
        +          "topBanner": {
        +            "description": "Short marketing highlight for this offer, if any.",
        +            "type": "string"
        +          },
        +          "yesList": {
        +            "description": "Newline-separated list of advantages.",
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error": {
        +      "description": "Human-readable reason when the quote could not be generated. Absent on success.",
        +      "type": "string"
        +    },
        +    "subscribeUrl": {
        +      "description": "HelloSafe comparator URL for this quote. The widget already renders clickable buttons — never paste it in the reply.",
        +      "type": "string"
        +    },
        +    "subscriptionId": {
        +      "description": "Quote session ID — pass it back as `subscriptionId` to update this quote instead of creating a new one.",
        +      "type": "string"
        +    },
        +    "translations": {
        +      "additionalProperties": {},
        +      "description": "Localized UI strings consumed by the widget — not meant for the assistant.",
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "tripInfo": {
        +      "additionalProperties": {},
        +      "description": "Normalized trip parameters the quote was computed with.",
        +      "properties": {
        +        "arrivalCountriesCodes": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "arrivalCountriesNames": {
        +          "description": "Destination country names in the response locale.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "countryResidenceCode": {
        +          "type": "string"
        +        },
        +        "countryResidenceName": {
        +          "type": "string"
        +        },
        +        "currency": {
        +          "description": "ISO 4217 currency the amounts are shown in.",
        +          "type": "string"
        +        },
        +        "endDate": {
        +          "type": "string"
        +        },
        +        "endDateLabel": {
        +          "type": "string"
        +        },
        +        "intentName": {
        +          "description": "Human-readable trip purpose.",
        +          "type": "string"
        +        },
        +        "isAnnual": {
        +          "type": "boolean"
        +        },
        +        "numberOfDays": {
        +          "type": "number"
        +        },
        +        "shouldCoverCancellation": {
        +          "type": "boolean"
        +        },
        +        "startDate": {
        +          "type": "string"
        +        },
        +        "startDateLabel": {
        +          "type": "string"
        +        },
        +        "travellers": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "age": {
        +                "type": "number"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "tripBoughtDateLabel": {
        +          "type": "string"
        +        },
        +        "tripPrice": {
        +          "description": "Trip cost per traveller; -1 when not provided.",
        +          "type": "number"
        +        },
        +        "tripPriceText": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  3. 1 tool update
    • Changedget_quote1 field changed
      • changedInput schema / properties / tripInfo / properties / tripPrice / description
        Previous value: -"Trip cost PER TRAVELLER (not the group total). Omit unless the user explicitly asked for cancellation coverage."New value: +"TOTAL trip cost for ALL travellers (not per traveller). Omit unless the user explicitly asked for cancellation coverage."
  4. 1 tool update
    • Changedget_quote2 fields changed
      • changedInput schema / properties / tripInfo / properties / intent / description
        Previous value: -"Trip purpose. Map from the user message when clear: leisure / holidays / sightseeing → \"forTourism\"; study abroad, Erasmus, internship → \"studyInternship\"; working-holiday visa (PVT) → \"whv\"; yearly multi-trip cover → \"annual\"; long-term relocation → \"expat\"; cancellation-only (no medical) → \"cancellation\"; ski / trek / mountaineering → \"mountainTrip\"; cruise → \"cruise\"; remote-work nomading → \"digitalNomad\"; group of 10+ travellers → \"groupTravel\"; Schengen visa application → \"schengenArea\"; humanitarian mission or au pair → \"humanitarianAuPair\"; business / work trip → \"toWork\"; returning home for a visit → \"backToHome\"; rental / Airbnb stay focus → \"rentalStay\". If you cannot confidently map the user's situation to one of these values, ASK THE USER which purpose fits best — do not guess. Note: \"annual\" and \"expat\" automatically force isAnnual=true."New value: +"Trip purpose. Map from the user message when clear: leisure / holidays / sightseeing → \"forTourism\"; study abroad, Erasmus, internship → \"studyInternship\"; working-holiday visa (PVT) → \"whv\"; yearly multi-trip cover → \"annual\"; long-term relocation → \"expat\"; cancellation-only (no medical) → \"cancellation\"; ski / trek / mountaineering → \"mountainTrip\"; cruise → \"cruise\"; remote-work nomading → \"digitalNomad\"; group of 10+ travellers → \"groupTravel\"; Schengen visa application → \"schengenArea\"; humanitarian mission or volunteering → \"humanitarian\"; au pair placement → \"auPair\"; business / work trip → \"toWork\"; returning home for a visit → \"backToHome\"; rental / Airbnb stay focus → \"rentalStay\". If you cannot confidently map the user's situation to one of these values, ASK THE USER which purpose fits best — do not guess. Note: \"annual\" and \"expat\" automatically force isAnnual=true."
      • changedInput schema / properties / tripInfo / properties / intent / enum
        Previous value: -[
        -  "forTourism",
        -  "schengenArea",
        -  "annual",
        -  "studyInternship",
        -  "whv",
        -  "cruise",
        -  "digitalNomad",
        -  "expat",
        -  "groupTravel",
        -  "rentalStay",
        -  "mountainTrip",
        -  "backToHome",
        -  "humanitarianAuPair",
        -  "toWork",
        -  "cancellation"
        -]New value: +[
        +  "forTourism",
        +  "schengenArea",
        +  "annual",
        +  "studyInternship",
        +  "whv",
        +  "cruise",
        +  "digitalNomad",
        +  "expat",
        +  "groupTravel",
        +  "rentalStay",
        +  "mountainTrip",
        +  "backToHome",
        +  "humanitarian",
        +  "auPair",
        +  "toWork",
        +  "cancellation"
        +]
  5. 1 tool update
    • Changedget_quote20 fields changed
      • addedInput schema / properties / displayCurrency / description
        Added value: +"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."
      • addedInput schema / properties / locale / description
        Added value: +"Language of the user. Defaults to the host locale."
      • addedInput schema / properties / subscriptionId / description
        Added value: +"Existing subscription ID to update instead of creating a new one."
      • addedInput schema / properties / tripInfo / description
        Added value: +"Trip details."
      • addedInput schema / properties / tripInfo / properties / arrivalCountries / description
        Added value: +"Destination countries as ISO 3166-1 alpha-2 codes. Prefer an array ([\"TH\",\"VN\"]); a comma-separated string also works."
      • addedInput schema / properties / tripInfo / properties / countryResidence / description
        Added value: +"User's country of residence as ISO 3166-1 alpha-2 code (e.g. \"FR\"). Ask the user if they did not state it — do not infer from destination or chat language."
      • addedInput schema / properties / tripInfo / properties / currency / description
        Added value: +"ISO 4217 code for tripPrice. Defaults to the currency of countryResidence. Only pass if the user gave an explicit amount in another currency."
      • addedInput schema / properties / tripInfo / properties / durationDays / description
        Added value: +"Trip length in days. Use this instead of endDate when the user gave a duration (e.g. \"20 days\") — the server computes endDate = startDate + durationDays."
      • addedInput schema / properties / tripInfo / properties / endDate / description
        Added value: +"Trip end date (YYYY-MM-DD). Either endDate or durationDays must be provided (or use intent=\"annual\"/\"expat\")."
      • addedInput schema / properties / tripInfo / properties / intent / description
        Added value: +"Trip purpose. Map from the user message when clear: leisure / holidays / sightseeing → \"forTourism\"; study abroad, Erasmus, internship → \"studyInternship\"; working-holiday visa (PVT) → \"whv\"; yearly multi-trip cover → \"annual\"; long-term relocation → \"expat\"; cancellation-only (no medical) → \"cancellation\"; ski / trek / mountaineering → \"mountainTrip\"; cruise → \"cruise\"; remote-work nomading → \"digitalNomad\"; group of 10+ travellers → \"groupTravel\"; Schengen visa application → \"schengenArea\"; humanitarian mission or au pair → \"humanitarianAuPair\"; business / work trip → \"toWork\"; returning home for a visit → \"backToHome\"; rental / Airbnb stay focus → \"rentalStay\". If you cannot confidently map the user's situation to one of these values, ASK THE USER which purpose fits best — do not guess. Note: \"annual\" and \"expat\" automatically force isAnnual=true."
      • addedInput schema / properties / tripInfo / properties / isAnnual / description
        Added value: +"Annual / multi-trip cover. Defaults to false (auto-true for intent=\"annual\" or \"expat\")."
      • addedInput schema / properties / tripInfo / properties / shouldCoverCancellation / description
        Added value: +"Include trip cancellation coverage. Defaults to false."
      • addedInput schema / properties / tripInfo / properties / shouldCoverExtremeSports / description
        Added value: +"Cover extreme sports (mountaineering, off-piste skiing, diving, paragliding, climbing). Defaults to false; set true only if the user mentioned such activities."
      • addedInput schema / properties / tripInfo / properties / startDate / description
        Added value: +"Trip start date (YYYY-MM-DD). Defaults to tomorrow when omitted."
      • addedInput schema / properties / tripInfo / properties / studiesAmount / description
        Added value: +"Tuition fees to cover, in tripInfo.currency. Required when studiesInterruption=true."
      • addedInput schema / properties / tripInfo / properties / studiesInterruption / description
        Added value: +"Cover interrupted studies (intent=\"studyInternship\" only). Defaults to false. Requires studiesAmount when true."
      • addedInput schema / properties / tripInfo / properties / travellers / description
        Added value: +"All travellers covered by the policy, including children. Example: a couple aged 35 with a 5-year-old → [{age:35},{age:35},{age:5}]."
      • addedInput schema / properties / tripInfo / properties / travellers / items / properties / age / description
        Added value: +"Age in years, 0–99."
      • addedInput schema / properties / tripInfo / properties / tripBoughtDate / description
        Added value: +"Date the trip was booked (YYYY-MM-DD). Required when shouldCoverCancellation=true (most insurers require booking within ~30 days)."
      • addedInput schema / properties / tripInfo / properties / tripPrice / description
        Added value: +"Trip cost PER TRAVELLER (not the group total). Omit unless the user explicitly asked for cancellation coverage."
  6. 1 tool update
    • Changedget_quote3 fields changed
      • addedInput schema / properties / tripInfo / properties / durationDays
        Added value: +{
        +  "exclusiveMinimum": 0,
        +  "maximum": 9007199254740991,
        +  "type": "integer"
        +}
      • changedInput schema / properties / tripInfo / required
        Previous value: -[
        -  "intent",
        -  "startDate",
        -  "endDate",
        -  "countryResidence",
        -  "arrivalCountries",
        -  "tripPrice",
        -  "currency",
        -  "isAnnual",
        -  "travellers"
        -]New value: +[
        +  "countryResidence",
        +  "arrivalCountries",
        +  "travellers"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "locale",
        -  "tripInfo"
        -]New value: +[
        +  "tripInfo"
        +]
  7. 1 tool update
    • Changedget_quote1 field changed
      • addedInput schema / properties / tripInfo / properties / shouldCoverExtremeSports
        Added value: +{
        +  "type": "boolean"
        +}
  8. 1 tool update
    • First observedget_quote

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Travel compliance and trip planning for digital nomads — visa requirements, tax residency analysis, Schengen 90/180-day tracking, and curated accommodation, transport, and experience search across 189 European destinations.
    7
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Check visa requirements for 39,585 passport-destination pairs in 15 languages. Returns visa type, required documents, application process, and travel tips from 136 official government sources. Free quick checks without API key.
    5
    94 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Search flights, compare prices, check visas, look up airports, get travel advisories through a single endpoint.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources