Departi – Travel Compliance & Curated Booking

Travel-compliance intelligence and curated booking for digital nomads and long-stay travellers.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
90%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,592token 数(工具定义)
~2.4 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.02%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "travel-compliance": {
      "url": "https://mcp.departi.eu/v3"
    }
  }
}

远程端点

https://mcp.departi.eu/v3streamable-http

它能做什么

工具清单

工具(7)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢departi_check_visa(nationality, destination, purpose, duration, locale, ...)

Returns the entry/visa options for a traveller of a given nationality (passport) going to a destination for a stated purpose and length of stay. Each option includes: visa/permit type, whether a visa is required, maximum stay, whether remote/on-site work is allowed, cost, processing time, and application/renewal notes — sourced from official immigration authorities. Use this for "what visa do I need / can I stay N days / can I work remotely here". To count days already spent against the 90/180 limit use departi_track_schengen; for the tax consequences of staying use departi_check_tax. Tip: nationality should be the traveller's most favorable passport — multi-nationals may have better entry on one passport.

输入模式

{
  "type": "object",
  "properties": {
    "nationality": {
      "type": "string",
      "description": "Traveller's citizenship / passport, ISO alpha-2, e.g. \"BE\". This is the passport country, not tax residence."
    },
    "destination": {
      "type": "string",
      "description": "Destination country, ISO alpha-2, e.g. \"PT\"."
    },
    "purpose": {
      "type": "string",
      "description": "One of tourism | remote_work | business | study | retirement. Default tourism.",
      "default": "tourism"
    },
    "duration": {
      "type": "integer",
      "description": "Intended stay in days, integer > 0."
    },
    "locale": {
      "type": "string",
      "description": "Output language. Default en.",
      "default": "en"
    },
    "currency": {
      "type": "string",
      "description": "Currency for costs. Default EUR.",
      "default": "EUR"
    }
  },
  "required": [
    "nationality",
    "destination",
    "duration"
  ]
}
🟢departi_track_schengen(entries, referenceDate, nationality, residencePermit, locale, ...)

Calculates Schengen 90/180 short-stay status from a list of stays. Returns: days used and days remaining in the rolling 180-day window, a status (safe | warning | critical | exceeded), the projected date the limit would be reached at the current pace, and — for residence/digital-nomad-permit holders — a count that excludes days in the permit-issuing country while still counting every other Schengen state (with a note of which country is excluded). Use for non-EU travellers tracking the 90-days-in-180 limit. Note: EU/EEA nationals have free movement (not counted); a residence permit exempts only its issuing country, not the rest of Schengen.

输入模式

{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "country": {
            "type": "string",
            "description": "ISO alpha-2 country code."
          },
          "entryDate": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD."
          },
          "exitDate": {
            "type": "string",
            "format": "date",
            "description": "YYYY-MM-DD."
          }
        },
        "required": [
          "country",
          "entryDate",
          "exitDate"
        ]
      },
      "description": "Array of Schengen zone stays."
    },
    "referenceDate": {
      "type": "string",
      "format": "date",
      "description": "ISO date to evaluate the window at. Default: today."
    },
    "nationality": {
      "type": "string",
      "description": "Citizenship, ISO alpha-2. EU/EEA nationals are exempt from counting."
    },
    "residencePermit": {
      "type": "object",
      "properties": {
        "issuingCountry": {
          "type": "string",
          "description": "ISO alpha-2 country that issued the permit."
        },
        "validFrom": {
          "type": "string",
          "format": "date",
          "description": "YYYY-MM-DD."
        },
        "validUntil": {
          "type": "string",
          "format": "date",
          "description": "YYYY-MM-DD."
        }
      },
      "required": [
        "issuingCountry",
        "validFrom",
        "validUntil"
      ],
      "description": "Residence or digital-nomad permit. When present and active on the reference date, days in the issuing country are excluded from the 90/180 count; all other Schengen days still count."
    },
    "locale": {
      "type": "string",
      "description": "Default en.",
      "default": "en"
    },
    "currency": {
      "type": "string",
      "description": "Default EUR.",
      "default": "EUR"
    }
  },
  "required": [
    "entries"
  ]
}
🟢departi_check_tax(nationality, taxResidence, destination, duration, purpose, ...)

Assesses tax-residency risk and double-tax-treaty position for a traveller in a destination. Returns: whether the stay risks triggering destination tax residency (the day threshold and the country's day-counting method), the relevant treaty provisions between the traveller's tax-residence country and the destination (employment income, tie-breaker, social security, withholding), any special or digital-nomad tax regime, and — for US citizens — FEIE / Physical-Presence-Test context. Advisory only, not tax advice. Use for "will staying here make me tax resident / what does the treaty say / how are my days counted". Note: any US citizenship triggers worldwide/citizenship-based obligations regardless of residence or other passports.

输入模式

{
  "type": "object",
  "properties": {
    "nationality": {
      "type": "string",
      "description": "Citizenship / passport, ISO alpha-2. Drives citizenship-based obligations (e.g. US — taxed worldwide regardless of residence). May differ from tax residence."
    },
    "taxResidence": {
      "type": "string",
      "description": "The traveller's current country of tax residence, ISO alpha-2. This selects the treaty \"resident state\" and can differ from nationality."
    },
    "destination": {
      "type": "string",
      "description": "Country being visited, ISO alpha-2."
    },
    "duration": {
      "type": "integer",
      "description": "Stay in days."
    },
    "purpose": {
      "type": "string",
      "description": "tourism | remote_work | business … Default tourism.",
      "default": "tourism"
    },
    "employmentType": {
      "type": "string",
      "description": "employed | self_employed | company_director | retired. Affects PE / treaty analysis."
    },
    "yearToDateDays": {
      "type": "integer",
      "description": "Days already spent in the destination this tax year. Default 0.",
      "default": 0
    },
    "locale": {
      "type": "string",
      "description": "Default en.",
      "default": "en"
    },
    "currency": {
      "type": "string",
      "description": "Default EUR.",
      "default": "EUR"
    }
  },
  "required": [
    "nationality",
    "taxResidence",
    "destination",
    "duration"
  ]
}
🟢departi_search_accommodation(destination, checkin, checkout, guests, rooms, ...)

Searches bookable accommodation in a destination for given dates and returns a ranked list of stays, each with: name, property type, nightly price (in the requested currency), star rating, guest rating, key facilities (e.g. wifi, kitchen), a persona/traveler-type fit score, and a booking deep-link. Curated and scored for the traveller's persona and trip type — e.g. long-stay nomad apartments with kitchen + fast wifi vs weekend hotels. Use when the user needs a place to stay; for getting there use departi_search_transport, for things to do use departi_search_experiences. Returns an empty list if no inventory matches.

输入模式

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination as ISO-2 country or city/slug, e.g. \"PT\" or \"lisbon\"."
    },
    "checkin": {
      "type": "string",
      "format": "date",
      "description": "ISO date, checkout must be strictly after checkin."
    },
    "checkout": {
      "type": "string",
      "format": "date",
      "description": "ISO date, strictly after checkin."
    },
    "guests": {
      "type": "integer",
      "description": "Default 1.",
      "default": 1
    },
    "rooms": {
      "type": "integer",
      "description": "Default 1.",
      "default": 1
    },
    "maxPrice": {
      "type": "number",
      "description": "Max per-night price in currency."
    },
    "currency": {
      "type": "string",
      "description": "Default EUR.",
      "default": "EUR"
    },
    "locale": {
      "type": "string",
      "description": "Default en.",
      "default": "en"
    },
    "persona": {
      "type": "string",
      "description": "e.g. 'culture_explorer', 'foodie', 'adventure' — biases scoring."
    },
    "traveler_type": {
      "type": "string",
      "description": "e.g. 'digital_nomad', 'slow_traveler', 'weekend_breaker' — biases inventory (long-stay vs short)."
    }
  },
  "required": [
    "destination",
    "checkin",
    "checkout"
  ]
}
🟢departi_search_transport(origin, destination, departure_date, return_date, passengers, ...)

Searches flights between two places and returns a ranked list of options, each with: carrier, price (in requested currency), cabin class, total duration, number of stops, departure & arrival times, and a booking deep-link. Flights are sourced across providers (Duffel + Travelpayouts) for broad full-service and low-cost coverage. Use for "how do I get from A to B by air". For where to stay use departi_search_accommodation; for things to do use departi_search_experiences. Prices are indicative — book via the returned link. Returns an empty list if no route is found. Ground/rail/bus is not offered through this tool.

输入模式

{
  "type": "object",
  "properties": {
    "origin": {
      "type": "string",
      "description": "Departure IATA code or city, e.g. \"BRU\" or \"Brussels\"."
    },
    "destination": {
      "type": "string",
      "description": "Arrival IATA code or city, e.g. \"LIS\" or \"Lisbon\"."
    },
    "departure_date": {
      "type": "string",
      "format": "date",
      "description": "ISO date, today or future."
    },
    "return_date": {
      "type": "string",
      "format": "date",
      "description": "Optional ISO date after departure_date for a round trip."
    },
    "passengers": {
      "type": "integer",
      "description": "Default 1.",
      "default": 1
    },
    "cabin_class": {
      "type": "string",
      "enum": [
        "economy",
        "premium_economy",
        "business",
        "first"
      ],
      "default": "economy",
      "description": "Cabin class for the search. Default economy."
    },
    "traveler_type": {
      "type": "string",
      "description": "Optional persona hint."
    }
  },
  "required": [
    "origin",
    "destination",
    "departure_date"
  ]
}
🟢departi_search_experiences(destination, categories, persona, traveler_type, limit)

Searches bookable tours, activities and local experiences in a destination and returns a ranked list, each with: title, category (cultural / culinary / adventure / wellness / nature), duration, price (in requested currency), a persona-fit score, and a booking deep-link. Matched to the traveller's persona/personality. Use for "what can I do in X". For a place to stay use departi_search_accommodation; to get there use departi_search_transport. Returns an empty list if nothing matches the filters.

输入模式

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "ISO-2 country or city/slug, e.g. \"lisbon\"."
    },
    "categories": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional array from cultural | culinary | adventure | wellness | nature."
    },
    "persona": {
      "type": "string",
      "description": "e.g. 'culture_explorer', 'foodie', 'adventure'."
    },
    "traveler_type": {
      "type": "string",
      "description": "e.g. 'digital_nomad', 'slow_traveler'."
    },
    "limit": {
      "type": "integer",
      "description": "Max results. Default 10.",
      "default": 10
    }
  },
  "required": [
    "destination"
  ]
}
🟢departi_get_profile

Returns the authenticated user's Departi profile: nationality, tax residence, subscription tier, traveller persona, and preferences. No PII (name, email, date of birth) is returned — only the fields the other tools need for personalisation. Requires authentication (OAuth). Use to personalise the other tools' answers, or to answer "where do I stand right now". Read-only; takes no parameters.

输入模式

{
  "type": "object",
  "properties": {},
  "required": []
}

社区

评价此服务器

证据

最近观测

已验证未记录版本7 个工具
已验证未记录版本7 个工具
已验证未记录版本7 个工具