Phi Phi Paradise Travel

Plan and book southern Thailand trips: island tours, private boats, ferries, hotels, itineraries.

사용해야 할까요

품질 및 안전성

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

발견 사항 (2)

  • LOWTool 'get_experience_details' description lacks action verbget_experience_details에서
  • LOWTool 'search_transfers' description lacks action verbsearch_transfers에서

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

컨텍스트 비용

~3,539토큰 (도구 정의)
~2.6 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.76%)

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

설치

원클릭 설치

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

{
  "mcpServers": {
    "booking": {
      "url": "https://phiphiparadise.travel/mcp"
    }
  }
}

원격 엔드포인트

https://phiphiparadise.travel/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (10)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_experiences(query, destination, private_only, max_price_thb, limit)

Search our tours: island hopping, Maya Bay, private boats, snorkeling, diving, boat parties, cultural day trips. Covers Koh Phi Phi, Krabi (Ao Nang, Railay), Phuket, Koh Yao, Bangkok and Chiang Mai. Returns ids, starting prices, durations and page links. Tour titles are in French.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "What the traveller wants, any language, e.g. 'Maya Bay sunrise', 'private longtail', 'elephant sanctuary'.",
      "type": "string",
      "maxLength": 200
    },
    "destination": {
      "description": "koh-phi-phi, krabi, phuket, koh-yao, bangkok or chiang-mai.",
      "type": "string",
      "maxLength": 40
    },
    "private_only": {
      "description": "true = private boats/tours only, false = shared group tours only.",
      "type": "boolean"
    },
    "max_price_thb": {
      "description": "Budget cap on the starting price, in THB.",
      "type": "number",
      "exclusiveMinimum": 0
    },
    "limit": {
      "description": "Max results (default 8).",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_experience_details(experience)

Full live sheet of one tour: price tiers (per person or per whole boat), child price, dated price periods, duration, schedule, meeting point, what is included, national park fee, page link.

입력 스키마

{
  "type": "object",
  "properties": {
    "experience": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "Tour id 'destination/slug' from search_experiences, or its name."
    }
  },
  "required": [
    "experience"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_availability(experience, date, adults, children, toddlers, ...)

Live availability and exact party price of one tour on one date (seats left, blocked dates, 48h notice rule, dated prices). When the date is not bookable, it lists the next open dates.

입력 스키마

{
  "type": "object",
  "properties": {
    "experience": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "Tour id 'destination/slug' or name."
    },
    "date": {
      "type": "string",
      "description": "Trip date, YYYY-MM-DD."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Adults and children 12+."
    },
    "children": {
      "description": "Children 4-11 (child rate).",
      "type": "integer",
      "minimum": 0,
      "maximum": 40
    },
    "toddlers": {
      "description": "Babies 0-3 (free).",
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    },
    "option": {
      "description": "Exact option label (boat type, duration...) when the tour has several priced options.",
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "experience",
    "date",
    "adults"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴book_experience(experience, date, adults, children, toddlers, ...)

Creates a tour booking pending payment and returns its reference and a secure payment page on phiphiparadise.travel. Requires traveller_confirmed: true, set once the traveller has approved the tour, date, party, total and payment. Payment is online: 'full' (default) or 'deposit' when the tour offers it (private tours: balance online before the trip; shared tours: balance in cash on the day). The booking is secured only when the traveller pays on that page.

입력 스키마

{
  "type": "object",
  "properties": {
    "experience": {
      "type": "string",
      "minLength": 2,
      "maxLength": 160,
      "description": "Tour id 'destination/slug'."
    },
    "date": {
      "type": "string",
      "description": "Trip date, YYYY-MM-DD."
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "Adults and children 12+."
    },
    "children": {
      "description": "Children 4-11 (child rate).",
      "type": "integer",
      "minimum": 0,
      "maximum": 40
    },
    "toddlers": {
      "description": "Babies 0-3 (free).",
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    },
    "option": {
      "description": "Exact option label when the tour has several priced options.",
      "type": "string",
      "maxLength": 200
    },
    "payment": {
      "description": "'full' (default) or 'deposit'.",
      "type": "string",
      "enum": [
        "full",
        "deposit"
      ]
    },
    "hotel": {
      "description": "Hotel name, needed for tours with hotel pickup (Phuket, Krabi).",
      "type": "string",
      "maxLength": 200
    },
    "traveller_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120,
      "description": "Full name of the lead traveller."
    },
    "traveller_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email: receives the confirmation and e-ticket after payment."
    },
    "traveller_phone": {
      "description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day.",
      "type": "string",
      "maxLength": 40
    },
    "language": {
      "description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language.",
      "type": "string",
      "maxLength": 8
    },
    "notes": {
      "description": "Kids ages, allergies, special requests.",
      "type": "string",
      "maxLength": 1500
    },
    "confirm_duplicate": {
      "description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer.",
      "type": "boolean"
    },
    "traveller_confirmed": {
      "type": "boolean",
      "const": true,
      "description": "true once the traveller has approved the restated product, date, party, total and payment."
    }
  },
  "required": [
    "experience",
    "date",
    "adults",
    "traveller_name",
    "traveller_email",
    "traveller_confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_transfers(from, to, date, passengers, type, ...)

Transfers across the whole of Thailand: ferries, speedboats and catamarans between the islands (Phuket, Krabi, Ao Nang, Koh Phi Phi, Koh Lanta, Koh Yao, Koh Lipe, Samui, Phangan, Tao, Koh Chang, Koh Kood…), shared vans and private taxis between towns and airports. Departure times, operator, piers or pickup point, price per person or per vehicle, and a photo page of the boat. Our own boat routes are booked with book_transfer; every other route returns its booking page.

입력 스키마

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "description": "Departure place, e.g. Phuket, Krabi, Ao Nang, Phi Phi, Koh Lanta."
    },
    "to": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40,
      "description": "Arrival place."
    },
    "date": {
      "description": "Travel date YYYY-MM-DD (checks the 48h booking notice).",
      "type": "string"
    },
    "passengers": {
      "description": "Number of passengers (for totals).",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "type": {
      "description": "Only ferries or only speedboats.",
      "type": "string",
      "enum": [
        "Ferry",
        "Speedboat"
      ]
    },
    "lang": {
      "description": "Traveller language code for the booking links (en, fr, de…).",
      "type": "string",
      "maxLength": 5
    }
  },
  "required": [
    "from",
    "to"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴book_transfer(trip_id, pickup_time, from, to, type, ...)

Creates a booking for one transfer listed by search_transfers and returns its reference and a secure payment page. Departures listed with a trip_id (boats, vans, private taxis anywhere in Thailand): pass trip_id. Our own boat departures: pass from, to, type, departure_time and company exactly as listed. Requires traveller_confirmed: true, set once the traveller has approved the route, date, time, passengers and total. Transfers are paid online in full; the seat is secured only when paid.

입력 스키마

{
  "type": "object",
  "properties": {
    "trip_id": {
      "description": "trip_id of a departure listed by search_transfers.",
      "type": "string",
      "pattern": "^[0-9a-f]{12}$"
    },
    "pickup_time": {
      "description": "Private taxi / van / boat (no fixed time): pickup time HH:MM chosen by the traveller.",
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "from": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40
    },
    "to": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40
    },
    "type": {
      "type": "string",
      "enum": [
        "Ferry",
        "Speedboat"
      ]
    },
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "departure_time": {
      "description": "HH:MM exactly as listed by search_transfers (our own departures).",
      "type": "string",
      "maxLength": 5
    },
    "company": {
      "description": "Operator exactly as listed by search_transfers (our own departures).",
      "type": "string",
      "maxLength": 80
    },
    "passengers": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "hotel": {
      "description": "Hotel name, for pickup.",
      "type": "string",
      "maxLength": 200
    },
    "hotel_pickup": {
      "description": "Only for departures listed 'hotel pickup on request, +100 THB/person'.",
      "type": "boolean"
    },
    "traveller_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120,
      "description": "Full name of the lead traveller."
    },
    "traveller_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email: receives the confirmation and e-ticket after payment."
    },
    "traveller_phone": {
      "description": "WhatsApp number with country code (e.g. +33612345678). Strongly recommended: the local team uses it on the day.",
      "type": "string",
      "maxLength": 40
    },
    "language": {
      "description": "Traveller language code (en, fr, de, es, zh...). Sets the emails and the payment page language.",
      "type": "string",
      "maxLength": 8
    },
    "notes": {
      "description": "Kids ages, allergies, special requests.",
      "type": "string",
      "maxLength": 1500
    },
    "confirm_duplicate": {
      "description": "Only true if the traveller explicitly wants a SECOND identical booking after an ALREADY BOOKED answer.",
      "type": "boolean"
    },
    "traveller_confirmed": {
      "type": "boolean",
      "const": true,
      "description": "true once the traveller has approved the restated product, date, party, total and payment."
    }
  },
  "required": [
    "date",
    "passengers",
    "traveller_name",
    "traveller_email",
    "traveller_confirmed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_hotels(destination, check_in, check_out, adults, children, ...)

Hotels for a destination. With check-in and check-out dates: live Agoda nightly rates, stars, guest scores and booking links. Without dates: our editorial shortlist. Destinations: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk.

입력 스키마

{
  "type": "object",
  "properties": {
    "destination": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40
    },
    "check_in": {
      "description": "YYYY-MM-DD",
      "type": "string"
    },
    "check_out": {
      "description": "YYYY-MM-DD",
      "type": "string"
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    },
    "children": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10
    },
    "language": {
      "type": "string",
      "maxLength": 8
    }
  },
  "required": [
    "destination"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_flights(from, to, date, return_date, adults, ...)

Flights to and within Thailand (e.g. Paris CDG to Bangkok BKK, Bangkok to Krabi KBV or Phuket HKT). Returns live fares when our search has them, plus ready-made Google Flights and Skyscanner links in every case. The traveller books flights with the airline.

입력 스키마

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Departure IATA airport code, e.g. CDG, BKK."
    },
    "to": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Arrival IATA airport code, e.g. KBV (Krabi), HKT (Phuket), USM (Koh Samui)."
    },
    "date": {
      "type": "string",
      "description": "Outbound date YYYY-MM-DD."
    },
    "return_date": {
      "description": "Return date YYYY-MM-DD for a round trip.",
      "type": "string"
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 9
    },
    "children": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "infants": {
      "type": "integer",
      "minimum": 0,
      "maximum": 8
    },
    "cabin": {
      "type": "string",
      "enum": [
        "ECONOMY",
        "PREMIUM_ECONOMY",
        "BUSINESS",
        "FIRST"
      ]
    }
  },
  "required": [
    "from",
    "to",
    "date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴plan_trip(destinations, start_date, end_date, adults, children, ...)

Build a multi-stop Thailand itinerary (stops in travel order) and get a shareable page plus a PDF: day-by-day plan, map, transport between stops with prices, hotel picks and tours. Suited to trips of several days or several places.

입력 스키마

{
  "type": "object",
  "properties": {
    "destinations": {
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "description": "Stops in travel order, from: koh-phi-phi, phuket, krabi, koh-yao, bangkok, chiang-mai, koh-lanta, koh-lipe, koh-samui, koh-phangan, koh-tao, khao-lak, khao-sok, koh-muk."
    },
    "start_date": {
      "description": "First day YYYY-MM-DD.",
      "type": "string"
    },
    "end_date": {
      "description": "Last day YYYY-MM-DD.",
      "type": "string"
    },
    "adults": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "children": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    },
    "language": {
      "description": "Page language code.",
      "type": "string",
      "maxLength": 8
    }
  },
  "required": [
    "destinations"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢ask_travel_guides(question)

Search our own Thailand travel guides: how to get from A to B, last boats, weather and monsoon by month, Maya Bay rules, how many days per island, budgets, safety. Returns excerpts and links.

입력 스키마

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "minLength": 3,
      "maxLength": 300,
      "description": "The traveller's question, any language."
    }
  },
  "required": [
    "question"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

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