Stayspan Schengen Days MCP
A community MCP server that calculates Schengen short-stay compliance using the rolling 90/180 day rule. It allows users to check days used and remaining, identify potential overstay dates, and download daily CSV calculations for itineraries up to 60 stays within a 1,100-day window.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://schengen-days.zovo.one/mcpWhat you can do with it
- Check days used and days left for specific date ranges
- Identify overstay dates based on rolling window rules
- Download daily CSV calculations for itinerary planning
- Plan future stays assuming no further visits
Source and maintenance
Protocol and capabilities
- Server
- schengen-days 1.0.1
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
calculate_schengen_days — Calculate Schengen days
Use this when the user needs a schengen calculator, schengen days left, schengen overstay dates or a 90/180 rule calculator for past and planned short stays. Returns days used and left on the check date, stay compliance, overstay dates and daily CSV. Accepts ISO or English US text dates, up to 60 stays over 1,100 days, years 1900–2100. Open stays end at the check date; touching stays merge. Does not model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; calculation aid, not legal advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"stays",
"check_date"
],
"properties": {
"stays": {
"type": "array",
"items": {
"type": "object",
"required": [
"entry_date"
],
"properties": {
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
},
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
}
},
"additionalProperties": false
},
"maxItems": 60,
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"check_date": {
"type": "string",
"maxLength": 80,
"description": "Window ends on this day, inclusive. Example: 2026-03-20 or March 20, 2026. Required for an ongoing stay."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"notes",
"downloads",
"note",
"check_date",
"window_start",
"window_end",
"days_used",
"days_left",
"overstay_day_count",
"first_overstay_date",
"stay_results",
"stay_result_count",
"overstay_ranges",
"next_legal_entry",
"next_entry_max_days"
],
"properties": {
"kind": {
"type": "string"
},
"note": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"days_left": {
"type": "number"
},
"days_used": {
"type": "number"
},
"downloads": {
"type": "object",
"required": [
"csv"
],
"properties": {
"csv": {
"type": "string"
}
},
"additionalProperties": false
},
"check_date": {
"type": "string"
},
"window_end": {
"type": "string"
},
"stay_results": {
"type": "array",
"items": {
"type": "object",
"required": [
"stay",
"entry_date",
"exit_date",
"days",
"legal",
"first_overstay_date",
"overstay_days"
],
"properties": {
"days": {
"type": "number"
},
"stay": {
"type": "number"
},
"legal": {
"type": "boolean"
},
"exit_date": {
"type": "string"
},
"entry_date": {
"type": "string"
},
"overstay_days": {
"type": "number"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
},
"window_start": {
"type": "string"
},
"overstay_ranges": {
"type": "array",
"items": {
"type": "object",
"required": [
"from",
"through",
"days"
],
"properties": {
"days": {
"type": "number"
},
"from": {
"type": "string"
},
"through": {
"type": "string"
}
},
"additionalProperties": false
}
},
"next_legal_entry": {
"type": "string"
},
"stay_result_count": {
"type": "number"
},
"overstay_day_count": {
"type": "number"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
},
"next_entry_max_days": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Calculate Schengen days",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}plan_schengen_trip — Plan Schengen trip
Use this when the user asks how many days can I stay in Europe, wants a schengen visa calculator or needs to plan 90 days in 180 days. Finds the maximum consecutive short stay from an entry date and the first entry that supports a requested length. Past stays must be closed and end by entry; up to 60 stays over 1,100 days, years 1900–2100, requested lengths 1–90 days. Does not authorize entry or model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; not legal advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"past_stays",
"entry_date"
],
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "Planned first day in Schengen. Example: 2026-07-01 or July 1, 2026. Past stays must end on or before this day."
},
"past_stays": {
"type": "array",
"items": {
"type": "object",
"required": [
"entry_date"
],
"properties": {
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
},
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
}
},
"additionalProperties": false
},
"maxItems": 60,
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"planned_length": {
"type": "integer",
"maximum": 90,
"minimum": 1,
"description": "Optional consecutive trip length, including entry and exit, from 1 to 90 days. Example: 30."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"notes",
"downloads",
"note",
"entry_date",
"max_legal_days",
"last_legal_exit",
"planned_length",
"planned_length_possible",
"first_entry_for_full_length",
"days_used_before_trip",
"history_overstay_days"
],
"properties": {
"kind": {
"type": "string"
},
"note": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"csv"
],
"properties": {
"csv": {
"type": "string"
}
},
"additionalProperties": false
},
"entry_date": {
"type": "string"
},
"max_legal_days": {
"type": "number"
},
"planned_length": {
"type": [
"number",
"null"
]
},
"last_legal_exit": {
"type": [
"string",
"null"
]
},
"days_used_before_trip": {
"type": "number"
},
"history_overstay_days": {
"type": "number"
},
"planned_length_possible": {
"type": [
"boolean",
"null"
]
},
"first_entry_for_full_length": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Plan Schengen trip",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_schengen_reset_dates — Find Schengen reset dates
Use this when the user wants schengen days left to return, a schengen 90 day rule projection or a days in Europe calculator for future availability. Projects window headroom on the next 180 dates with a daily CSV, assuming no further stays and departure by the reference date. Up to 60 stays over 1,100 days, years 1900–2100. Reference date defaults to America/New_York today. Headroom is not maximum consecutive trip length. Does not model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; not legal advice.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"past_stays"
],
"properties": {
"past_stays": {
"type": "array",
"items": {
"type": "object",
"required": [
"entry_date"
],
"properties": {
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
},
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
}
},
"additionalProperties": false
},
"maxItems": 60,
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"reference_date": {
"type": "string",
"maxLength": 80,
"description": "Projection starts the day after this date. Example: 2026-03-31 or March 31, 2026. If omitted, uses today's date in America/New_York and says so."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind",
"notes",
"downloads",
"note",
"reference_date",
"days_used",
"days_left",
"first_available_date",
"full_90_available_date",
"reset_event_count",
"reset_dates"
],
"properties": {
"kind": {
"type": "string"
},
"note": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"days_left": {
"type": "number"
},
"days_used": {
"type": "number"
},
"downloads": {
"type": "object",
"required": [
"csv"
],
"properties": {
"csv": {
"type": "string"
}
},
"additionalProperties": false
},
"reset_dates": {
"type": "array",
"items": {
"type": "object",
"required": [
"date",
"days_used",
"days_available",
"days_returned"
],
"properties": {
"date": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_returned": {
"type": "number"
},
"days_available": {
"type": "number"
}
},
"additionalProperties": false
}
},
"reference_date": {
"type": "string"
},
"reset_event_count": {
"type": "number"
},
"first_available_date": {
"type": [
"string",
"null"
]
},
"full_90_available_date": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Find Schengen reset dates",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
schengen-days-widget — Stayspan Schengen Days view
Interactive view for Stayspan Schengen Days.
ui://widget/schengen-days-v4-1.0.1-5210f73dd40a82a1e1142d0cbce5f11121e9a94c450ff7f3b31aad348587c8cf.htmlschengen-days-widget-legacy — Stayspan Schengen Days view (previous versions)
ui://widget/schengen-days-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 461 ms
- 95th percentile latency
- 461 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 461 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http stayspan-schengen-days-mcp https://schengen-days.zovo.one/mcpCodex
codex mcp add stayspan-schengen-days-mcp --url https://schengen-days.zovo.one/mcpCursor
{
"mcpServers": {
"stayspan-schengen-days-mcp": {
"url": "https://schengen-days.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"stayspan-schengen-days-mcp": {
"type": "streamableHttp",
"url": "https://schengen-days.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"stayspan-schengen-days-mcp": {
"type": "http",
"url": "https://schengen-days.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http stayspan-schengen-days-mcp https://schengen-days.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"stayspan-schengen-days-mcp": {
"url": "https://schengen-days.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"stayspan-schengen-days-mcp": {
"serverUrl": "https://schengen-days.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Stayspan Schengen Days MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.