Stayspan Schengen Days
Plan Schengen short stays with a rolling 90/180 rule calculator and a daily CSV download.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"schengen-days": {
"url": "https://schengen-days.zovo.one/mcp"
}
}
}遠端端點
https://schengen-days.zovo.one/mcpstreamable-http它能做什麼
工具清單
工具(3)
🟢calculate_schengen_days(stays, check_date)
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",
"properties": {
"stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"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"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"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."
}
},
"required": [
"stays",
"check_date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"check_date": {
"type": "string"
},
"window_start": {
"type": "string"
},
"window_end": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_left": {
"type": "number"
},
"overstay_day_count": {
"type": "number"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
},
"stay_results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stay": {
"type": "number"
},
"entry_date": {
"type": "string"
},
"exit_date": {
"type": "string"
},
"days": {
"type": "number"
},
"legal": {
"type": "boolean"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
},
"overstay_days": {
"type": "number"
}
},
"required": [
"stay",
"entry_date",
"exit_date",
"days",
"legal",
"first_overstay_date",
"overstay_days"
],
"additionalProperties": false
}
},
"stay_result_count": {
"type": "number"
},
"overstay_ranges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"through": {
"type": "string"
},
"days": {
"type": "number"
}
},
"required": [
"from",
"through",
"days"
],
"additionalProperties": false
}
},
"next_legal_entry": {
"type": "string"
},
"next_entry_max_days": {
"type": "number"
}
},
"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"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢plan_schengen_trip(past_stays, entry_date, planned_length)
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",
"properties": {
"past_stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"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"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"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."
},
"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."
},
"planned_length": {
"description": "Optional consecutive trip length, including entry and exit, from 1 to 90 days. Example: 30.",
"type": "integer",
"minimum": 1,
"maximum": 90
}
},
"required": [
"past_stays",
"entry_date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"entry_date": {
"type": "string"
},
"max_legal_days": {
"type": "number"
},
"last_legal_exit": {
"type": [
"string",
"null"
]
},
"planned_length": {
"type": [
"number",
"null"
]
},
"planned_length_possible": {
"type": [
"boolean",
"null"
]
},
"first_entry_for_full_length": {
"type": [
"string",
"null"
]
},
"days_used_before_trip": {
"type": "number"
},
"history_overstay_days": {
"type": "number"
}
},
"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"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢find_schengen_reset_dates(past_stays, reference_date)
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",
"properties": {
"past_stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"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"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"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."
}
},
"required": [
"past_stays"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"reference_date": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_left": {
"type": "number"
},
"first_available_date": {
"type": [
"string",
"null"
]
},
"full_90_available_date": {
"type": [
"string",
"null"
]
},
"reset_event_count": {
"type": "number"
},
"reset_dates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_available": {
"type": "number"
},
"days_returned": {
"type": "number"
}
},
"required": [
"date",
"days_used",
"days_available",
"days_returned"
],
"additionalProperties": false
}
}
},
"required": [
"kind",
"notes",
"downloads",
"note",
"reference_date",
"days_used",
"days_left",
"first_available_date",
"full_90_available_date",
"reset_event_count",
"reset_dates"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社群
證據