Locktrip
← Back to AI Agents

API Documentation

Complete reference for the LockTrip Hotel Booking MCP API. 15 tools covering search, booking, payment, and management.

Authentication

The API uses Bearer JWT tokens. Search and browse tools require no authentication. Booking and management tools require a valid token.

Getting a Token

Use guest_login (email only, instant) or login (email + password) to obtain a JWT token.

Using the Token

Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...

Tool Classification

Public (no auth)Authenticated (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

Base URL & Transports

All endpoints are served from https://locktrip.com/mcp/. Three transport modes are supported:

TransportMethodEndpoint
RESTPOSThttps://locktrip.com/mcp/tools/{tool_name}
JSON-RPC 2.0POSThttps://locktrip.com/mcp/rpc
SSEGEThttps://locktrip.com/mcp/sse

Discovery Endpoints

URLDescription
GET /mcp/openapi.jsonOpenAPI 3.1 specification
GET /mcp/toolsList all tools with schemas
GET /mcp/discoveryMCP discovery document

Content-Type: application/json for all POST requests.

Error Handling

REST Errors

StatusMeaning
200Success
400Validation error (bad input)
401Missing or invalid Bearer token
404Unknown tool name
429Rate limit exceeded

JSON-RPC Errors

{
  "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"
    }
  }
}
CodeMeaning
-32600Invalid JSON-RPC request
-32601Unknown tool / method not found
-32001Authentication required or invalid token
-32007Rate limit exceeded
-32603Internal server error

Rate Limits

Sliding-window rate limits per IP (anonymous) or per user ID (authenticated). Exceeding limits returns HTTP 429 or JSON-RPC error code -32007.

ToolAnonymousAuthenticated
hotel_search5 / minute20 / minute
All other tools30 / minute120 / minute

Tool Reference

15 tools listed in recommended workflow order.

search_location

Public

Search for locations (cities, regions, hotels) to get their IDs for hotel search. Returns matching locations with type and full name.

Request

FieldTypeReqDescription
querystringYesSearch query (city name, region, or hotel name)
languagestringNoLanguage code (default: "en")

Response

FieldTypeDescription
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

Example

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

Public

Get paginated hotel search results. Poll until searchStatus is "COMPLETED". Supports filtering by price, stars, amenities, and meal types. Sorting by price, rating, or distance.

Pricing Intelligence

Each hotel result includes discountScore — LockTrip's proprietary machine learning score that calculates how much cheaper the offer is compared to other travel websites. The V8 ML model analyzes real-time pricing data from multiple hotel suppliers to predict savings. Use minPrice (LockTrip's price) and originalPrice (last best price on competing sites) together with discountScore to surface the best deals to users.

Request

FieldTypeReqDescription
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

Response

FieldTypeDescription
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"

Example

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

Public

Get available room packages for a specific hotel. Returns quoteIds needed for booking. Each package includes price, meal type, amenities, and cancellation info.

Request

FieldTypeReqDescription
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")

Response

FieldTypeDescription
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

Example

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",
      "roomDescription": "<p><strong>1 Double Bed</strong></p>...",
      "mealType": "Room Only",
      "mealDescription": "Room Only",
      "maxOccupancy": 2,
      "amenities": ["Free WiFi", "Flat-panel TV", "Private bathroom", "..."],
      "price": 71.34,
      "currency": "EUR",
      "pricePerNight": 35.67,
      "totalNights": 2,
      "isRefundable": false
    },
    {
      "quoteId": "e3fca710-0a05-4b96-a472-a93c941a58fc_4384127",
      "packageId": "e3fca710-0a05-4b96-a472-a93c941a58fc_4384127",
      "roomName": "Standard, 3 Beds",
      "mealType": "Room Only",
      "price": 77.53,
      "currency": "EUR",
      "pricePerNight": 38.765,
      "totalNights": 2,
      "isRefundable": true
    }
  ]
}

get_hotel_details

Public

Get detailed hotel information including description, amenities, reviews, photos, and location. Use after search to get full hotel info before booking.

Request

FieldTypeReqDescription
hotelIdnumberYesHotel ID (numeric, from search results)
languagestringNoLanguage code (default: "en")
includeImagesbooleanNoFetch additional images (default: false)
imageLimitnumberNoMax additional images (default: 20, max: 100)

Response

FieldTypeDescription
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)

Example

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",
    "latitude": 48.7987,
    "longitude": 1.9545,
    "description": "<h2>Hotel Details</h2><p>Property Location...</p>",
    "phone": null,
    "hotelPhotos": [
      {"url": "/gmx/full/d174a039-ebf9-4e42-8b42-5e31a6950b0e.jpeg"}
    ],
    "reviews": {
      "scoreSummary": 0,
      "reviewsCount": 0,
      "keyWords": []
    },
    "hotelAmenities": [
      {
        "hotelId": 4384127,
        "categoryName": "Hotel Facilities & Services",
        "features": [
          {"name": "Free Wifi"},
          {"name": "Parking"},
          {"name": "24 Hour Front Desk"}
        ]
      }
    ]
  }
}

check_cancellation_policy

Public

Get detailed cancellation policy for room packages. Shows free cancellation deadline and penalty fees by date range.

Request

FieldTypeReqDescription
searchKeystringYesSearch key from hotel_search
hotelIdstringYesHotel ID
packageIdsstring[]YesPackage IDs to check (from get_hotel_rooms)

Response

FieldTypeDescription
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

Example

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,
          "description": "Full penalty after free cancellation period"
        }
      ],
      "remarks": ["Room: Standard, 3 Beds", "Board: Room Only"]
    }
  ]
}

guest_login

Public

Register or login as a guest with just an email address. Returns a Bearer token for authenticated tools. New users receive a verification email and can set a password later.

Request

FieldTypeReqDescription
emailstringYesUser email address

Response

FieldTypeDescription
tokenstringJWT Bearer token for authenticated API calls
userIdnumberNumeric user ID
emailstringUser email address
isNewUserbooleanWhether a new account was created

Example

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

Public

Login with email and password to obtain a Bearer token. For registered users with confirmed accounts.

Request

FieldTypeReqDescription
emailstringYesUser email address
passwordstringYesUser password

Response

FieldTypeDescription
tokenstringJWT Bearer token for authenticated API calls
userIdnumberNumeric user ID
emailstringUser email address

Example

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

Auth Required

Create a booking with guest details. Returns a preparedBookingId for confirmation. The booking expires after approximately 15 minutes. Guest count per room must match the adults count from the search.

Request

FieldTypeReqDescription
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

Response

FieldTypeDescription
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
taxes[].feeTitlestringFee description
taxes[].valuestringFee amount
taxes[].currencystringFee currency
taxes[].isIncludedInPricebooleanWhether included in the total price
essentialInformationstring[]Check-in instructions, mandatory fees, policies

Example

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},
        {"firstName": "Jane", "lastName": "Smith", "title": "Mrs"}
      ]
    }],
    "contactPerson": {
      "firstName": "John",
      "lastName": "Smith",
      "email": "[email protected]",
      "phone": "+1234567890"
    }
  }'

# Response (200 OK):
{
  "preparedBookingId": "69a2b7540a93415a4b4dbf13",
  "bookingInternalId": "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
    },
    {
      "feeTitle": "Taxes and Fees",
      "value": "4.50",
      "currency": "EUR",
      "isIncludedInPrice": false
    }
  ],
  "essentialInformation": [
    "CheckIn instructions: ...",
    "Mandatory fees: ...",
    "Know before you go: ..."
  ]
}

confirm_booking

Auth Required

Confirm and pay for a prepared booking using B2B credit line. Returns booking confirmation with voucher URL. For consumer payments, use create_checkout or get_payment_url instead.

Request

FieldTypeReqDescription
bookingInternalIdstringYesBooking ID from prepare_booking (preparedBookingId)
quoteIdstringYesQuote ID used in prepare_booking
paymentMethodstringNoPayment method (default: "CREDIT_LINE" for B2B)

Response

FieldTypeDescription
acceptedbooleanWhether booking confirmation was accepted
messagestring|nullConfirmation status message
voucherUrlstring|nullURL to booking voucher (if accepted)

Example

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

Auth Required

Create a Revolut payment checkout URL for a prepared booking. Returns a hosted checkout link the user can click to pay. After payment completes, the booking is automatically confirmed via webhook. Use this for B2C consumers.

Request

FieldTypeReqDescription
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

Response

FieldTypeDescription
checkoutUrlstringRevolut hosted checkout URL for payment
checkoutTokenstringPayment token for tracking
expiresInMinutesnumberToken expiration time (20 minutes)
messagestringUser instruction message

Example

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

Auth Required

Get a Stripe checkout URL for paying a prepared booking. Returns a URL to redirect the customer to complete payment via credit card.

Request

FieldTypeReqDescription
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

Response

FieldTypeDescription
urlstringStripe checkout URL to redirect customer to
sessionIdstringStripe session ID for tracking

Example

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

Auth Required

List bookings for the authenticated user. Filter by status: UPCOMING, COMPLETED, CANCELLED, or PENDING.

Request

FieldTypeReqDescription
typestringNo"UPCOMING", "COMPLETED", "CANCELLED", or "PENDING" (default: "UPCOMING")
pagenumberNoPage number (0-indexed)
sizenumberNoResults per page

Response

FieldTypeDescription
bookingsBookingSummary[]Array of booking summaries
bookings[].bookingIdstringBooking identifier
bookings[].bookingReferenceIdstringProvider reference ID
bookings[].hotelNamestringHotel name
bookings[].hotelCitystringCity where hotel is located
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

Example

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

Auth Required

Get full details of a specific booking including hotel info, guests, rooms, payment status, and cancellation policy.

Request

FieldTypeReqDescription
bookingIdstringYesBooking ID to retrieve

Response

FieldTypeDescription
bookingIdstringBooking identifier
bookingReferenceIdstringProvider reference ID
providerReferencestringAdditional provider reference
statusstringBooking status (DONE, PENDING, CANCELLED)
hotelobjectHotel details
hotel.idstring|numberHotel ID
hotel.namestringHotel name
hotel.addressstringStreet address
hotel.citystringCity
hotel.countrystringCountry
hotel.phonestringContact phone
hotel.starRatingnumberStar rating (1-5)
hotel.imageUrlstringHotel image URL
checkInstringCheck-in date (YYYY-MM-DD)
checkOutstringCheck-out date (YYYY-MM-DD)
roomsRoom[]Booked rooms with guests
rooms[].roomNamestringRoom type name
rooms[].mealTypestringMeal plan (BB, HB, FB, etc.)
rooms[].guestsGuest[]Guest names (firstName, lastName)
rooms[].pricenumberRoom price
contactPersonobjectContact person (firstName, lastName, email, phone)
totalPricenumberTotal booking price
currencystringCurrency code
paymentStatusstringPayment status (PAID, PENDING)
cancellationPolicyobject|nullCancellation policy with fees and deadlines
specialRequestsstringGuest special requests
createdAtstringBooking creation date
confirmedAtstring|nullConfirmation date (null if pending)

Example

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",
    "address": "Za De Sainte Apolline Rue Des Poiriers",
    "city": "Plaisir",
    "country": "France",
    "starRating": 1,
    "imageUrl": "https://imagecontent.net/images/full/d174a039.jpeg"
  },
  "checkIn": "2026-04-15",
  "checkOut": "2026-04-17",
  "rooms": [
    {
      "roomName": "Standard, 3 Beds",
      "mealType": "Room Only",
      "guests": [
        {"firstName": "John", "lastName": "Smith"},
        {"firstName": "Jane", "lastName": "Smith"}
      ],
      "price": 71.34
    }
  ],
  "contactPerson": {
    "firstName": "John",
    "lastName": "Smith",
    "email": "[email protected]",
    "phone": "+1234567890"
  },
  "totalPrice": 71.34,
  "currency": "EUR",
  "paymentStatus": "PAID",
  "cancellationPolicy": {
    "packageId": "3e242771-..._4384127",
    "isRefundable": false,
    "freeCancellationUntil": null,
    "fees": []
  },
  "createdAt": "2026-02-28",
  "confirmedAt": "2026-02-28"
}

cancel_booking

Auth Required

Request booking cancellation. Call with confirmed=false first to preview cancellation fees, then with confirmed=true to execute. Returns refund amount and cancellation fee.

Request

FieldTypeReqDescription
bookingIdstringYesBooking ID to cancel
confirmedbooleanYesSet true to execute cancellation
reasonstringNoReason for cancellation

Response

FieldTypeDescription
successbooleanWhether cancellation was executed
messagestringStatus message (preview or confirmation)

Example

# 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 with cancellation."
}

# 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"
}

Machine-readable specs: OpenAPI 3.1 | Tool List | MCP Discovery

LockTrip Hotel Booking MCP API v1.0.0