Viatsy

Search Asia travel tours, browse guides, request quotes, find upcoming group departures.

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
95%
이름 품질
98%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,259토큰 (도구 정의)
~1.5 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 0.98%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "mcp": {
      "url": "https://viatsy.com/mcp"
    }
  }
}

원격 엔드포인트

https://viatsy.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (8)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_trips(destination, search, minDuration, maxDuration, maxPrice, ...)

Search published tours. Filter by destination slug, free-text search, duration, or price.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "description": "Destination slug — use list_destinations to get valid slugs"
    },
    "search": {
      "type": "string",
      "description": "Free-text search over trip name, description, and destinations — matches any supported language, accent-insensitive"
    },
    "minDuration": {
      "type": "number",
      "description": "Minimum duration in days"
    },
    "maxDuration": {
      "type": "number",
      "description": "Maximum duration in days"
    },
    "maxPrice": {
      "type": "number",
      "description": "Maximum price per person"
    },
    "featured": {
      "type": "boolean"
    },
    "limit": {
      "type": "number",
      "description": "Page size (default 20, max 50)"
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor from a previous response"
    }
  },
  "additionalProperties": false
}
🟢list_destinations(limit, cursor)

List all published destinations this agency operates in (countries and sub-destinations).

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Page size (default 50, max 100)"
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor from a previous response"
    }
  },
  "additionalProperties": false
}
🟢get_trip_details(slug)

Get full trip details: description, duration, highlights, what is included/excluded, and a short itinerary summary. Use when the user asks about a specific trip.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Trip slug from search_trips results"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
🟢list_blog_articles(limit, cursor)

Browse travel guides and articles. Returns published blog posts.

입력 스키마

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Page size (default 20, max 50)"
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor from a previous response"
    }
  },
  "additionalProperties": false
}
🟢list_upcoming_departures(destinationSlug, fromDate, toDate, maxPrice, limit, ...)

Find open group-trip departures with future dates. Filter by destination slug, date range, or max price. Use when the user asks "when can I go to X?" or wants to compare dates.

입력 스키마

{
  "type": "object",
  "properties": {
    "destinationSlug": {
      "type": "string",
      "description": "Destination slug — use list_destinations to get valid slugs"
    },
    "fromDate": {
      "type": "string",
      "description": "Earliest departure date (YYYY-MM-DD). Defaults to today."
    },
    "toDate": {
      "type": "string",
      "description": "Latest departure date (YYYY-MM-DD). Optional."
    },
    "maxPrice": {
      "type": "number",
      "description": "Max price per person (departure currency)"
    },
    "limit": {
      "type": "number",
      "description": "Page size (default 20, max 50)"
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor from a previous response"
    }
  },
  "additionalProperties": false
}
🟡request_quote(name, email, message, phone, tripSlug, ...)

Submit a quote request (inquiry) for a trip. Only use after the user has clearly asked for a quote and provided their name and email.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Traveller full name"
    },
    "email": {
      "type": "string",
      "description": "Contact email address"
    },
    "message": {
      "type": "string",
      "description": "Free-text message (required)"
    },
    "phone": {
      "type": "string",
      "description": "Phone with country code"
    },
    "tripSlug": {
      "type": "string",
      "description": "Trip slug the quote is about"
    },
    "travellers": {
      "type": "number",
      "description": "Number of adult travellers"
    },
    "departureDate": {
      "type": "string",
      "description": "Preferred departure date (YYYY-MM-DD)"
    }
  },
  "required": [
    "name",
    "email",
    "message"
  ],
  "additionalProperties": false
}
⚪subscribe_newsletter(email, name, language)

Subscribe the user to the travel newsletter. Sends a confirmation email — the subscription activates only after the user clicks the link.

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "Email address to subscribe"
    },
    "name": {
      "type": "string",
      "description": "Subscriber name (optional)"
    },
    "language": {
      "type": "string",
      "enum": [
        "en",
        "es",
        "ca"
      ],
      "description": "Preferred content language"
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}
🟡start_checkout(departureId, tripSlug, startDate, name, email, ...)

Create a booking and get a secure payment link the customer opens to pay — card details never pass through you. Provide departureId for a group departure, or tripSlug + startDate for a private trip, plus the lead traveller name, email and traveller counts. Returns a bookingReference and paymentUrl; hand the paymentUrl to the customer to complete payment. Quote prices beforehand via get_trip_details or list_upcoming_departures — the payment page shows the authoritative total.

입력 스키마

{
  "type": "object",
  "properties": {
    "departureId": {
      "type": "string",
      "description": "Group-departure id (from list_upcoming_departures). Provide this OR tripSlug."
    },
    "tripSlug": {
      "type": "string",
      "description": "Trip slug for a private booking (from search_trips). Provide this OR departureId; requires startDate."
    },
    "startDate": {
      "type": "string",
      "description": "Private-trip start date (YYYY-MM-DD). Required when tripSlug is used, and must then be at least 14 days out and no more than 18 months ahead. Ignored for departureId bookings — the departure row owns the date."
    },
    "name": {
      "type": "string",
      "description": "Lead traveller full name"
    },
    "email": {
      "type": "string",
      "description": "Customer email — the payment link is tied to it"
    },
    "phone": {
      "type": "string",
      "description": "Customer phone (optional)"
    },
    "adults": {
      "type": "number",
      "description": "Number of adult travellers (1 or more)"
    },
    "children": {
      "type": "number",
      "description": "Number of children (default 0)"
    },
    "infants": {
      "type": "number",
      "description": "Number of infants (default 0)"
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "es",
        "ca"
      ],
      "description": "Preferred language for the payment page and confirmation"
    }
  },
  "required": [
    "name",
    "email",
    "adults"
  ],
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 8개
검증됨버전이 기록되지 않음도구 8개