travel-facts
Server Details
No-auth: save a planned trip as a claimable itinerary, visa rules per passport, Schengen 90/180
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- eladkishon/nomadpoint-skills
- GitHub Stars
- 0
TDQS
Scored across 3 tools
Each tool serves a clearly distinct purpose: Schengen day calculation, visa requirement lookup, and trip plan creation. The descriptions explicitly state boundaries and exclusions, leaving no room for confusion.
All tools follow a consistent verb_noun snake_case pattern: calculate_schengen_days, check_visa_requirement, create_trip_plan. No deviations or mixed conventions.
Three tools is on the lower end but still within the reasonable range for a focused travel helper. The set is well-scoped, though a broader 'travel-facts' server might warrant a few more tools.
The surface covers visa requirements, Schengen calculations, and trip plan creation, but notable gaps exist for a travel-facts server, such as passport validity, health requirements, and travel advisories. Also, no update or delete operations for trip plans.
Available Tools
3 toolscalculate_schengen_daysCalculate Schengen daysARead-onlyIdempotentInspect
Use this when someone wants to know how many days they have used or have left in the Schengen Area under the 90/180 rule, or whether a planned trip would overstay. Pass every stay in any Schengen country with entry and exit dates. Do not use it for countries outside the Schengen Area, or for holders of an EU/EEA/Swiss passport, to whom the rule does not apply.
| Name | Required | Description | Default |
|---|---|---|---|
| as_of | No | Date to assess on, YYYY-MM-DD. Defaults to today. | |
| stays | Yes | Each stay in the Schengen Area. Past and planned stays can be mixed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and non-open-world, so the safety profile is covered. The description adds domain framing — the 90/180 rule itself and the applicability limits — which helps an agent predict the computation, though it says nothing about return format or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, input requirement second, exclusions last. No filler and no repetition of schema detail beyond what reinforces correct use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only calculator with full schema coverage and no output schema, the description covers purpose, applicability, and input expectations. It implies the return values ('how many days used or left') but does not describe the response structure, which is the only minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes slightly beyond it by stressing 'Pass every stay' and that past and planned stays can be mixed, which signals that incomplete input produces a wrong count — a meaningful semantic emphasis.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — computing Schengen days used/remaining under the 90/180 rule, plus an overstay check for planned trips. The scope is precise enough that an agent can tell it apart from a generic visa-requirement check without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it (days used/left, planned-trip overstay) and when not to (non-Schengen countries, EU/EEA/Swiss passport holders, to whom the rule does not apply). The exclusions are concrete and actionable, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_visa_requirementCheck visa requirementARead-onlyIdempotentInspect
Use this when someone asks whether they need a visa to visit a country, or how long they can stay, for a specific passport. Returns the entry type (visa free, visa on arrival, e-visa, visa required) and the permitted stay in days when known. Do not use it for work, study or residence permits; it covers short tourist stays only.
| Name | Required | Description | Default |
|---|---|---|---|
| passport | Yes | The passport's issuing country as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH | |
| destination | Yes | The country being visited as an ISO 3166-1 alpha-2 code, e.g. US, GB, TH |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond them by disclosing the response shape (entry type plus permitted stay in days 'when known') and a real coverage limitation: short tourist stays only, not work/study/residence. It stops short of noting data freshness or how gaps in coverage are signalled, so it is not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the triggering question, then the return values, then the scope exclusion. No filler, and every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the returned entry-type categories and the stay-in-days field, and it bounds the domain to tourist stays. What is missing is any relationship to the sibling calculate_schengen_days for multi-country itineraries, which an agent handling travel questions would likely need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both parameters are documented in the schema with the ISO 3166-1 alpha-2 format and examples. The description adds no syntax, case, or format detail beyond that, so the baseline of 3 for high-coverage schemas is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('check visa requirement') and immediately narrows scope: it answers whether a visa is needed and how long one may stay for a given passport. It also enumerates the exact return categories (visa free, visa on arrival, e-visa, visa required), which lets an agent distinguish it from siblings like calculate_schengen_days 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a clear trigger ('when someone asks whether they need a visa to visit a country, or how long they can stay') and an explicit exclusion ('Do not use it for work, study or residence permits; it covers short tourist stays only'). The one gap is that it never names an alternative tool for the excluded cases or for Schengen day-counting, which is what a 5 would require.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_trip_planSave a trip planAInspect
Use this after you have planned a trip with someone, to hand them the itinerary as a real, editable plan instead of a wall of text. No account or key needed. Pass the stops in order with arrival and departure dates, and optionally things to do in each. Returns plan_url: the traveller opens it to see the route and save it to their own NomadPoint on iPhone, Mac or web (free). Give the traveller that link. Do not use it for bookings: it records a plan, it does not reserve anything.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | What the traveller would call it, e.g. 'Japan in April' | |
| stops | Yes | Each city on the route, in order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this as a non-read-only, non-destructive, non-idempotent write; the description adds genuinely new context: no account or key required, nothing is reserved, and a plan_url is returned for the traveller to open and save. It does not warn that repeated calls create duplicate plans, which is the main gap given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded: purpose, then prerequisites, then how to pass stops, then return value, then the booking exclusion. Slightly padded by the redundant 'Give the traveller that link' right after describing plan_url.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the return value (plan_url) and telling the agent what to do with it, which is exactly what a caller needs. Nothing required to invoke or hand off the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description restates what the schema already documents (stops in order, arrival/departure dates, optional activities) without adding format or constraint detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('save a trip plan') and explains the concrete outcome: handing a traveller an editable itinerary plus a plan_url instead of a wall of text. It is unmistakably distinct from the visa/schengen siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('after you have planned a trip with someone') and an explicit exclusion ('Do not use it for bookings: it records a plan, it does not reserve anything'). The agent knows both when to call it and when not to.
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.
3 tool updates
- First observed
calculate_schengen_days - First observed
check_visa_requirement - First observed
create_trip_plan
Related MCP Connectors
Plan trips and track visa days per traveller across 39,601 entry rules
Schengen 90/180 rolling-window calculator MCP server: stay math, trip checks, rule explainer.
Travel ledger for AI: journeys, stays, expenses, tax-residency day counts and Schengen 90/180.
Schengen 90/180-day calculator, earliest re-entry date and ETIAS check. Stateless, no data stored.
Related MCP Servers
AlicenseAqualityBmaintenanceTravel 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.7MIT- AlicenseAqualityDmaintenanceTravel planning tools from Plantrip: generate day-by-day itineraries, AI packing lists, weather insights, and trip cost estimates. Every itinerary gets a shareable page the user owns; free API key, no subscription.1435 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying passport visa rules for any nationality to destination pair.30 npmMIT
- AlicenseBqualityBmaintenanceProvides AI agents with a structured API for travel planning, enabling them to read trip data, search places, calculate routes, and create/validate itinerary change proposals that require explicit human approval before being applied.15MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.