Viatsy
Search Asia travel tours, browse guides, request quotes, find upcoming group departures.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`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
}커뮤니티
증거