AI 에이전트로 돌아가기

API 문서

LockTrip 호텔 예약 MCP API의 완전한 레퍼런스. 검색, 예약, 결제, 관리를 커버하는 15개 도구.

인증

API는 Bearer JWT 토큰을 사용합니다. 검색 및 탐색 도구는 인증이 필요 없습니다. 예약 및 관리 도구에는 유효한 토큰이 필요합니다.

토큰 받기

guest_login(이메일만, 즉시) 또는 login(이메일 + 비밀번호)을 사용하여 JWT 토큰을 받으세요.

토큰 사용

Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...

도구 분류

공개 (인증 없음)인증됨 (Bearer token)
search_location, hotel_search,
get_search_results, get_hotel_rooms,
get_hotel_details,
check_cancellation_policy,
login, guest_login
prepare_booking, confirm_booking,
create_checkout, get_payment_url,
list_bookings, get_booking_details,
cancel_booking

기본 URL 및 트랜스포트

모든 엔드포인트는 https://locktrip.com/mcp/에서 제공됩니다. 3가지 트랜스포트 모드가 지원됩니다:

트랜스포트메서드엔드포인트
RESTPOSThttps://locktrip.com/mcp/tools/{tool_name}
JSON-RPC 2.0POSThttps://locktrip.com/mcp/rpc
SSEGEThttps://locktrip.com/mcp/sse

디스커버리 엔드포인트

URL설명
GET /mcp/openapi.jsonOpenAPI 3.1 사양
GET /mcp/tools스키마가 포함된 모든 도구 목록
GET /mcp/discoveryMCP 디스커버리 문서

모든 POST 요청에 Content-Type: application/json을 사용하세요.

오류 처리

REST 오류

상태의미
200성공
400유효성 검사 오류 (잘못된 입력)
401Bearer token이 없거나 유효하지 않음
404알 수 없는 도구 이름
429요율 제한 초과

JSON-RPC 오류

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32001,
    "message": "Authentication required for this tool.",
    "data": {
      "loginUrl": "https://users.locktrip.com/api/auth/login",
      "signupTool": "guest_login"
    }
  }
}
코드의미
-32600유효하지 않은 JSON-RPC 요청
-32601알 수 없는 도구 / 메서드를 찾을 수 없음
-32001인증이 필요하거나 토큰이 유효하지 않음
-32007요율 제한 초과
-32603내부 서버 오류

요율 제한

IP 기반(익명) 또는 사용자 ID 기반(인증됨) 슬라이딩 윈도우 요율 제한. 제한 초과 시 HTTP 429 또는 JSON-RPC 오류 코드 -32007이 반환됩니다.

도구익명인증됨
hotel_search5/ 분20/ 분
기타 모든 도구30/ 분120/ 분

도구 레퍼런스

권장 워크플로우 순서로 나열된 15개 도구.

search_location

공개

위치(도시, 지역, 호텔)를 검색하여 호텔 검색용 ID를 가져옵니다. 유형과 전체 이름이 포함된 일치하는 위치를 반환합니다.

요청

필드유형필수설명
querystringYesSearch query (city name, region, or hotel name)
languagestringNoLanguage code (default: "en")

응답

필드유형설명
locationsLocation[]Array of matching locations
locations[].idstringLocation ID (use as regionId in hotel_search)
locations[].namestringLocation name
locations[].typestringLocation type (e.g., "CITY")
locations[].fullNamestringFull location name with country
locations[].countrystringCountry name
totalCountnumberTotal number of matches returned

예시

curl -X POST https://locktrip.com/mcp/tools/search_location \
  -H "Content-Type: application/json" \
  -d '{"query": "Paris"}'

# Response (200 OK):
{
  "locations": [
    {
      "id": "5f078e431fd614748f9037f9",
      "name": "Paris, France",
      "country": "",
      "type": "CITY",
      "fullName": "Paris, France"
    },
    {
      "id": "5f080b92b8f3040a9045c3e8",
      "name": "Disneyland Paris, Boulevard de Parc, Coupvray, France",
      "country": "",
      "type": "CITY",
      "fullName": "Disneyland Paris, Boulevard de Parc, Coupvray, France"
    }
  ],
  "totalCount": 10
}

get_search_results

공개

페이지별 호텔 검색 결과를 가져옵니다. searchStatus가 "COMPLETED"가 될 때까지 폴링합니다. 가격, 별점, 편의시설, 식사 유형별 필터링을 지원합니다. 가격, 평점, 거리별 정렬이 가능합니다.

가격 인텔리전스

각 호텔 결과에는 discountScore가 포함됩니다. 이는 다른 여행 웹사이트와 비교하여 얼마나 저렴한지 계산하는 LockTrip의 독자적인 머신러닝 점수입니다. V8 ML 모델은 여러 호텔 공급업체의 실시간 가격 데이터를 분석하여 절약액을 예측합니다. minPrice(LockTrip 가격)와 originalPrice(경쟁 사이트의 마지막 최저가)를 discountScore와 함께 사용하여 사용자에게 최고의 할인 정보를 제공하세요.

요청

필드유형필수설명
searchKeystringYesSearch key from hotel_search
pagenumberNoPage number, 0-indexed (default: 0)
sizenumberNoResults per page (default: 100, max: 5000)
currencystringNoCurrency code from hotel_search
sortBystringNoPRICE_ASC, PRICE_DESC, RATING_DESC, or DISTANCE
filtersobjectNoOptional filters (see below)
filters.minPricenumberNoMinimum price
filters.maxPricenumberNoMaximum price
filters.starRatingsnumber[]NoStar ratings to include (1-5)
filters.amenitiesstring[]NoRequired amenities
filters.mealTypesstring[]NoRequired meal types
filters.hotelNamestringNoHotel name search

응답

필드유형설명
hotelsHotel[]Array of matching hotels
hotels[].hotelIdstringHotel ID (use in get_hotel_rooms, get_hotel_details)
hotels[].namestringHotel name
hotels[].starRatingnumberStar rating (1-5)
hotels[].addressstringStreet address
hotels[].latitudenumberLatitude coordinate
hotels[].longitudenumberLongitude coordinate
hotels[].imagesstring[]Hotel image URLs
hotels[].amenitiesstring[]Available amenities
hotels[].minPricenumberLockTrip's price for this hotel (lowest available rate)
hotels[].originalPricenumberLast best price found on competing travel websites (e.g. Booking.com, Expedia). When equal to minPrice, no discount was detected.
hotels[].currencystringPrice currency code
hotels[].discountScorenumberLockTrip's proprietary machine learning score (0-10) indicating how much cheaper this offer is compared to other travel websites. Powered by a V8 ML model that analyzes real-time pricing data from multiple hotel suppliers. Higher scores = bigger savings vs competitors. A score of 0 means no significant discount was detected.
hotels[].qualitynumberOverall quality score (0-1) combining star rating, reviews, amenities, and other factors
hotels[].reviewScorenumberGuest review score (0-10)
hotels[].reviewCountnumber|nullNumber of guest reviews
hotels[].hasFreeCancellationbooleanWhether any room has free cancellation
hotels[].isRefundablebooleanWhether any room is refundable
hotels[].refundableUntilstring|nullISO date until which free cancellation is available
hotels[].paymentstringPayment type (e.g., "Cash")
hotels[].distancenumberDistance from search center (km)
hotels[].boardTypestring|nullDefault board type
hotels[].availableMealTypesstring[]Available meal types
totalCountnumberTotal hotels matching search
pagenumberCurrent page number
pageSizenumberResults per page
hasMorebooleanWhether more pages are available
searchStatusstring"IN_PROGRESS" or "COMPLETED"

예시

curl -X POST https://locktrip.com/mcp/tools/get_search_results \
  -H "Content-Type: application/json" \
  -d '{
    "searchKey": "47de06e3262ea3822bdc384a04470783",
    "page": 0,
    "size": 2
  }'

# Response (200 OK):
{
  "hotels": [
    {
      "hotelId": "4703420",
      "name": "Premiere Classe Boissy Saint Leger",
      "starRating": 1,
      "address": "P.A De La Haie Griselle 4 Rue Pompadour, Boissy-Saint-Leger",
      "latitude": 48.759967,
      "longitude": 2.501443,
      "images": [
        "https://imagecontent.net/images/full/5a0d94a0-5f7e-4e4e-b457-5e0673a96a95.jpeg"
      ],
      "amenities": ["Family rooms", "Free Wifi", "Parking", "Air conditioning"],
      "minPrice": 71.51,
      "originalPrice": 71.51,
      "currency": "EUR",
      "discountScore": 0,
      "quality": 0.19,
      "reviewScore": 2.5,
      "reviewCount": null,
      "hasFreeCancellation": false,
      "isRefundable": false,
      "refundableUntil": null,
      "payment": "Cash",
      "distance": 15.32,
      "boardType": null,
      "availableMealTypes": []
    }
  ],
  "totalCount": 2403,
  "page": 1,
  "pageSize": 2,
  "hasMore": true,
  "searchStatus": "COMPLETED"
}

get_hotel_rooms

공개

특정 호텔의 이용 가능한 객실 패키지를 가져옵니다. 예약에 필요한 quoteIds를 반환합니다. 각 패키지에는 가격, 식사 유형, 편의시설, 취소 정보가 포함됩니다.

요청

필드유형필수설명
hotelIdstringYesHotel ID from search results
searchKeystringYesSearch key from hotel_search
startDatestringYesCheck-in date (YYYY-MM-DD)
endDatestringYesCheck-out date (YYYY-MM-DD)
roomsRoom[]YesRoom occupancy (same as hotel_search)
nationalitystringYes2-letter country code
regionIdstringYesRegion ID from search_location
currencystringNoCurrency code (default: "USD")

응답

필드유형설명
hotelIdstringHotel ID
hotelNamestringHotel name
checkInstringCheck-in date (YYYY-MM-DD)
checkOutstringCheck-out date (YYYY-MM-DD)
packagesPackage[]Available room packages
packages[].quoteIdstringQuote ID (use in prepare_booking)
packages[].packageIdstringPackage identifier
packages[].roomNamestringRoom type name (e.g., "Standard, 3 Beds")
packages[].roomDescriptionstringHTML description of room features
packages[].mealTypestring"Room Only", "Breakfast Included", etc.
packages[].mealDescriptionstringMeal plan description
packages[].maxOccupancynumberMaximum guests per room
packages[].amenitiesstring[]Room amenities list
packages[].pricenumberTotal price for all nights
packages[].currencystringPrice currency
packages[].pricePerNightnumberPrice per night
packages[].totalNightsnumberNumber of nights
packages[].isRefundablebooleanWhether room is refundable

예시

curl -X POST https://locktrip.com/mcp/tools/get_hotel_rooms \
  -H "Content-Type: application/json" \
  -d '{"hotelId":"4384127","searchKey":"47de06e3262ea3822bdc384a04470783","startDate":"2026-04-15","endDate":"2026-04-17","rooms":[{"adults":2}],"nationality":"US","regionId":"5f078e431fd614748f9037f9","currency":"EUR"}'

# Response (200 OK):
{
  "hotelId": "4384127",
  "hotelName": "",
  "checkIn": "2026-04-15",
  "checkOut": "2026-04-17",
  "packages": [
    {
      "quoteId": "3e242771-1c15-4356-9a3b-1cd4bfc6d9fc_4384127",
      "packageId": "3e242771-1c15-4356-9a3b-1cd4bfc6d9fc_4384127",
      "roomName": "Standard, 3 Beds",
      "mealType": "Room Only",
      "price": 71.34,
      "currency": "EUR",
      "pricePerNight": 35.67,
      "totalNights": 2,
      "isRefundable": false
    }
  ]
}

get_hotel_details

공개

설명, 편의시설, 리뷰, 사진, 위치를 포함한 호텔의 상세 정보를 가져옵니다. 예약 전에 호텔의 전체 정보를 얻기 위해 검색 후 사용합니다.

요청

필드유형필수설명
hotelIdnumberYesHotel ID (numeric, from search results)
languagestringNoLanguage code (default: "en")
includeImagesbooleanNoFetch additional images (default: false)
imageLimitnumberNoMax additional images (default: 20, max: 100)

응답

필드유형설명
hotelobjectHotel details object
hotel.idnumberHotel ID
hotel.namestringHotel name
hotel.countrystringCountry
hotel.citystringCity
hotel.starnumberStar rating (1-5)
hotel.addressstringStreet address
hotel.latitudenumberLatitude
hotel.longitudenumberLongitude
hotel.descriptionstringHTML description with sections
hotel.phonestring|nullPhone number
hotel.hotelPhotosPhoto[]Photo URLs (relative paths)
hotel.reviewsobjectReview summary with score, count, keywords
hotel.hotelAmenitiesCategory[]Amenities grouped by category
additionalImagesPhoto[]Extra images (if includeImages=true)

예시

curl -X POST https://locktrip.com/mcp/tools/get_hotel_details \
  -H "Content-Type: application/json" \
  -d '{"hotelId": 4384127}'

# Response (200 OK):
{
  "hotel": {
    "id": 4384127,
    "name": "Premiere Classe Plaisir",
    "country": "France",
    "city": "Plaisir",
    "star": 1,
    "address": "Za De Sainte Apolline Rue Des Poiriers",
    "description": "<h2>Hotel Details</h2><p>Property Location...</p>",
    "hotelPhotos": [{"url": "/gmx/full/d174a039-ebf9-4e42-8b42-5e31a6950b0e.jpeg"}],
    "reviews": {"scoreSummary": 0, "reviewsCount": 0, "keyWords": []},
    "hotelAmenities": [{"categoryName": "Hotel Facilities & Services", "features": [{"name": "Free Wifi"}]}]
  }
}

check_cancellation_policy

공개

객실 패키지의 상세 취소 정책을 가져옵니다. 무료 취소 기한과 날짜 범위별 위약금을 표시합니다.

요청

필드유형필수설명
searchKeystringYesSearch key from hotel_search
hotelIdstringYesHotel ID
packageIdsstring[]YesPackage IDs to check (from get_hotel_rooms)

응답

필드유형설명
hotelIdstringHotel ID
policiesPolicy[]Cancellation policy per package
policies[].packageIdstringPackage identifier
policies[].isRefundablebooleanWhether package is refundable
policies[].freeCancellationUntilstring|nullLast date for free cancellation (YYYY-MM-DD)
policies[].feesFee[]Cancellation penalty fees
policies[].fees[].fromDatestringPenalty period start (YYYY-MM-DD)
policies[].fees[].toDatestring|nullPenalty period end
policies[].fees[].amountnumberPenalty amount
policies[].fees[].currencystringCurrency code
policies[].fees[].percentagenumber|nullPercentage of booking price
policies[].remarksstring[]|nullAdditional policy notes

예시

curl -X POST https://locktrip.com/mcp/tools/check_cancellation_policy \
  -H "Content-Type: application/json" \
  -d '{"searchKey":"47de06e3262ea3822bdc384a04470783","hotelId":"4384127","packageIds":["e3fca710-0a05-4b96-a472-a93c941a58fc_4384127"]}'

# Response (200 OK):
{
  "hotelId": "4384127",
  "policies": [{
    "packageId": "e3fca710-0a05-4b96-a472-a93c941a58fc_4384127",
    "isRefundable": true,
    "freeCancellationUntil": "2026-04-13",
    "fees": [{"fromDate":"2026-04-13","toDate":"2026-04-15","amount":77.53,"currency":"EUR","percentage":100}],
    "remarks": ["Room: Standard, 3 Beds", "Board: Room Only"]
  }]
}

guest_login

공개

이메일 주소만으로 게스트로 등록 또는 로그인합니다. 인증된 도구용 Bearer token을 반환합니다. 신규 사용자에게는 확인 이메일이 전송되며, 나중에 비밀번호를 설정할 수 있습니다.

요청

필드유형필수설명
emailstringYesUser email address

응답

필드유형설명
tokenstringJWT Bearer token for authenticated API calls
userIdnumberNumeric user ID
emailstringUser email address
isNewUserbooleanWhether a new account was created

예시

curl -X POST https://locktrip.com/mcp/tools/guest_login \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]"}'

# Response (200 OK):
{"token":"eyJhbGciOiJIUzUxMiJ9...","userId":413900,"email":"[email protected]","isNewUser":true}

login

공개

이메일과 비밀번호로 로그인하여 Bearer token을 받습니다. 계정이 확인된 등록 사용자용입니다.

요청

필드유형필수설명
emailstringYesUser email address
passwordstringYesUser password

응답

필드유형설명
tokenstringJWT Bearer token for authenticated API calls
userIdnumberNumeric user ID
emailstringUser email address

예시

curl -X POST https://locktrip.com/mcp/tools/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"yourpassword"}'

# Response (200 OK):
{"token":"eyJhbGciOiJIUzUxMiJ9...","userId":12345,"email":"[email protected]"}

prepare_booking

인증 필요

게스트 정보로 예약을 생성합니다. 확인용 preparedBookingId를 반환합니다. 예약은 약 15분 후 만료됩니다. 객실당 게스트 수는 검색 시의 성인 수와 일치해야 합니다.

요청

필드유형필수설명
quoteIdstringYesQuote ID from get_hotel_rooms
searchKeystringNoSearch key (validates cancellation policy)
roomsRoom[]YesGuest assignments per room
rooms[].roomIndexnumberYesRoom index (0-based)
rooms[].guestsGuest[]YesAdult guests in this room
rooms[].guests[].firstNamestringYesFirst name
rooms[].guests[].lastNamestringYesLast name
rooms[].guests[].titlestringNo"Mr", "Mrs", or "Ms" (default: "Mr")
rooms[].guests[].emailstringNoEmail address
rooms[].guests[].phonestringNoPhone number
rooms[].guests[].isLeadGuestbooleanNoWhether this is the lead guest
rooms[].childrenChild[]NoChildren in this room
rooms[].children[].firstNamestringYesFirst name
rooms[].children[].lastNamestringYesLast name
rooms[].children[].agenumberYesChild age (0-17)
contactPersonobjectYesContact person details
contactPerson.firstNamestringYesFirst name
contactPerson.lastNamestringYesLast name
contactPerson.emailstringYesEmail address
contactPerson.phonestringYesPhone number (min 5 chars)
contactPerson.titlestringNo"Mr", "Mrs", or "Ms"
contactPerson.countryCodestringNo2-letter country code
specialRequestsstringNoSpecial requests for the hotel

응답

필드유형설명
preparedBookingIdstringBooking ID for confirm_booking
bookingInternalIdstringInternal booking identifier
pricenumberTotal price
currencystringPrice currency
paymentstringPayment type (e.g., "Cash")
discountobjectDiscount details (amount, currency)
taxesTax[]Itemized taxes and fees
essentialInformationstring[]Check-in instructions, mandatory fees, policies

예시

curl -X POST https://locktrip.com/mcp/tools/prepare_booking \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"quoteId":"3e242771-1c15-4356-9a3b-1cd4bfc6d9fc_4384127","rooms":[{"roomIndex":0,"guests":[{"firstName":"John","lastName":"Smith","title":"Mr","email":"[email protected]","phone":"+1234567890","isLeadGuest":true}]}],"contactPerson":{"firstName":"John","lastName":"Smith","email":"[email protected]","phone":"+1234567890"}}'

# Response (200 OK):
{"preparedBookingId":"69a2b7540a93415a4b4dbf13","price":71.34,"currency":"EUR","payment":"Cash","discount":{"amount":0,"currency":"EUR"},"taxes":[{"feeTitle":"Taxes and Fees","value":"1.59","currency":"EUR","isIncludedInPrice":true}],"essentialInformation":["CheckIn instructions: ..."]}

confirm_booking

인증 필요

B2B 크레딧 라인을 사용하여 준비된 예약을 확인하고 결제합니다. 바우처 URL이 포함된 예약 확인을 반환합니다. 소비자 결제에는 create_checkout 또는 get_payment_url을 사용하세요.

요청

필드유형필수설명
bookingInternalIdstringYesBooking ID from prepare_booking (preparedBookingId)
quoteIdstringYesQuote ID used in prepare_booking
paymentMethodstringNoPayment method (default: "CREDIT_LINE" for B2B)

응답

필드유형설명
acceptedbooleanWhether booking confirmation was accepted
messagestring|nullConfirmation status message
voucherUrlstring|nullURL to booking voucher (if accepted)

예시

curl -X POST https://locktrip.com/mcp/tools/confirm_booking \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingInternalId":"69a2b7540a93415a4b4dbf13","quoteId":"3e242771-1c15-4356-9a3b-1cd4bfc6d9fc_4384127"}'

# Response (200 OK):
{"accepted":true,"message":"Booking confirmed successfully","voucherUrl":"https://locktrip.com/booking/hotel/voucher/69a2b7540a93415a4b4dbf13"}

create_checkout

인증 필요

준비된 예약을 위한 Revolut 결제 체크아웃 URL을 생성합니다. 사용자가 클릭하여 결제할 수 있는 호스팅 체크아웃 링크를 반환합니다. 결제 완료 후, webhook을 통해 예약이 자동으로 확인됩니다. B2C 소비자용으로 사용하세요.

요청

필드유형필수설명
bookingIdstringYesBooking ID from prepare_booking (preparedBookingId)
currencystringYes3-letter currency code (e.g., USD, EUR, GBP)
backUrlstringNoCancel/back redirect URL (defaults to locktrip.com)
successUrlstringNoSuccess redirect URL

응답

필드유형설명
checkoutUrlstringRevolut hosted checkout URL for payment
checkoutTokenstringPayment token for tracking
expiresInMinutesnumberToken expiration time (20 minutes)
messagestringUser instruction message

예시

curl -X POST https://locktrip.com/mcp/tools/create_checkout \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingId":"69a2b7540a93415a4b4dbf13","currency":"EUR"}'

# Response (200 OK):
{"checkoutUrl":"https://checkout.revolut.com/pay/abc123...","checkoutToken":"rev_tok_abc123...","expiresInMinutes":20,"message":"Payment checkout link created. Share this URL with the user to complete payment."}

get_payment_url

인증 필요

준비된 예약의 결제를 위한 Stripe 체크아웃 URL을 가져옵니다. 신용카드 결제를 완료하기 위해 고객을 리디렉션할 URL을 반환합니다.

요청

필드유형필수설명
bookingIdstringYesBooking ID from prepare_booking (preparedBookingId)
currencystringYesPayment currency code (e.g., USD, EUR)
backUrlstringYesURL to redirect on cancel/back
successUrlstringNoCustom URL to redirect on success

응답

필드유형설명
urlstringStripe checkout URL to redirect customer to
sessionIdstringStripe session ID for tracking

예시

curl -X POST https://locktrip.com/mcp/tools/get_payment_url \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingId":"69a2b7540a93415a4b4dbf13","currency":"EUR","backUrl":"https://example.com/cancel"}'

# Response (200 OK):
{"url":"https://checkout.stripe.com/c/pay/cs_live_abc123...","sessionId":"cs_live_abc123..."}

list_bookings

인증 필요

인증된 사용자의 예약 목록을 가져옵니다. 상태별 필터링: UPCOMING, COMPLETED, CANCELLED 또는 PENDING.

요청

필드유형필수설명
typestringNo"UPCOMING", "COMPLETED", "CANCELLED", or "PENDING" (default: "UPCOMING")
pagenumberNoPage number (0-indexed)
sizenumberNoResults per page

응답

필드유형설명
bookingsBookingSummary[]Array of booking summaries
bookings[].bookingIdstringBooking identifier
bookings[].bookingReferenceIdstringProvider reference ID
bookings[].hotelNamestringHotel name
bookings[].hotelCitystringCity
bookings[].checkInstringCheck-in date (YYYY-MM-DD)
bookings[].checkOutstringCheck-out date (YYYY-MM-DD)
bookings[].statusstringBooking status (DONE, PENDING, CANCELLED)
bookings[].totalPricenumberTotal booking price
bookings[].currencystringCurrency code
bookings[].guestNamestringLead guest name
bookings[].roomCountnumberNumber of rooms
bookings[].createdAtstringBooking creation timestamp (ISO 8601)
bookings[].hotelPhotostring|nullHotel image URL
totalCountnumberTotal number of bookings
pagenumberCurrent page number
pageSizenumberResults per page

예시

curl -X POST https://locktrip.com/mcp/tools/list_bookings \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"type": "UPCOMING"}'

# Response (200 OK):
{"bookings":[{"bookingId":"69a2b7540a93415a4b4dbf13","bookingReferenceId":"LT-2026-AB12CD","hotelName":"Premiere Classe Plaisir","hotelCity":"Plaisir","checkIn":"2026-04-15","checkOut":"2026-04-17","status":"DONE","totalPrice":71.34,"currency":"EUR","guestName":"John Smith","roomCount":1,"createdAt":"2026-02-28T09:35:00.000Z","hotelPhoto":"https://imagecontent.net/images/full/d174a039.jpeg"}],"totalCount":1,"page":0,"pageSize":10}

get_booking_details

인증 필요

호텔 정보, 게스트, 객실, 결제 상태, 취소 정책을 포함한 특정 예약의 전체 상세 정보를 가져옵니다.

요청

필드유형필수설명
bookingIdstringYesBooking ID to retrieve

응답

필드유형설명
bookingIdstringBooking identifier
bookingReferenceIdstringProvider reference ID
statusstringBooking status (DONE, PENDING, CANCELLED)
hotelobjectHotel details
hotel.namestringHotel name
hotel.addressstringStreet address
hotel.citystringCity
hotel.countrystringCountry
hotel.starRatingnumberStar rating (1-5)
checkInstringCheck-in date (YYYY-MM-DD)
checkOutstringCheck-out date (YYYY-MM-DD)
roomsRoom[]Booked rooms with guests
contactPersonobjectContact person (firstName, lastName, email, phone)
totalPricenumberTotal booking price
currencystringCurrency code
paymentStatusstringPayment status (PAID, PENDING)
cancellationPolicyobject|nullCancellation policy with fees and deadlines
createdAtstringBooking creation date
confirmedAtstring|nullConfirmation date (null if pending)

예시

curl -X POST https://locktrip.com/mcp/tools/get_booking_details \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingId": "69a2b7540a93415a4b4dbf13"}'

# Response (200 OK):
{"bookingId":"69a2b7540a93415a4b4dbf13","bookingReferenceId":"LT-2026-AB12CD","status":"DONE","hotel":{"id":4384127,"name":"Premiere Classe Plaisir","city":"Plaisir","country":"France","starRating":1},"checkIn":"2026-04-15","checkOut":"2026-04-17","totalPrice":71.34,"currency":"EUR","paymentStatus":"PAID","createdAt":"2026-02-28","confirmedAt":"2026-02-28"}

cancel_booking

인증 필요

예약 취소를 요청합니다. 먼저 confirmed=false로 취소 수수료를 미리 확인한 다음, confirmed=true로 실행합니다. 환불 금액과 취소 수수료를 반환합니다.

요청

필드유형필수설명
bookingIdstringYesBooking ID to cancel
confirmedbooleanYesSet true to execute cancellation
reasonstringNoReason for cancellation

응답

필드유형설명
successbooleanWhether cancellation was executed
messagestringStatus message (preview or confirmation)

예시

# Step 1: Preview cancellation (dry run)
curl -X POST https://locktrip.com/mcp/tools/cancel_booking \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingId":"69a2b7540a93415a4b4dbf13","confirmed":false}'

# Response (200 OK):
{"success":false,"message":"Cancellation not confirmed. Set confirmed=true to proceed."}

# Step 2: Execute cancellation
curl -X POST https://locktrip.com/mcp/tools/cancel_booking \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzUxMiJ9..." \
  -d '{"bookingId":"69a2b7540a93415a4b4dbf13","confirmed":true,"reason":"Change of plans"}'

# Response (200 OK):
{"success":true,"message":"Booking cancelled successfully"}

기계 판독 가능 사양: OpenAPI 3.1 | Tool List | MCP Discovery

LockTrip Hotel Booking MCP API v1.0.0