Аутентификација
API користи Bearer JWT токене. Алати за претрагу и прегледање не захтевају аутентификацију. Алати за резервацију и управљање захтевају важећи токен.
Добијање токена
Користите guest_login (само имејл, тренутно) или login (имејл + лозинка) за добијање JWT токена.
Коришћење токена
Authorization: Bearer eyJhbGciOiJIUzUxMiJ9...
Класификација алата
| Јавни (без аутентификације) | Аутентификовани (Bearer токен) |
|---|
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/. Подржана су три начина транспорта:
| Транспорт | Метода | Крајња тачка |
|---|
| REST | POST | https://locktrip.com/mcp/tools/{tool_name} |
| JSON-RPC 2.0 | POST | https://locktrip.com/mcp/rpc |
| SSE | GET | https://locktrip.com/mcp/sse |
Крајње тачке за откривање
| URL | Опис |
|---|
| GET /mcp/openapi.json | OpenAPI 3.1 спецификација |
| GET /mcp/tools | Листа свих алата са шемама |
| GET /mcp/discovery | MCP документ за откривање |
Content-Type: application/json за све POST захтеве.
Управљање грешкама
REST грешке
| Статус | Значење |
|---|
| 200 | Успех |
| 400 | Грешка валидације (неисправан унос) |
| 401 | Недостајући или неважећи Bearer токен |
| 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_search | 5/ минут | 20/ минут |
| Сви остали алати | 30/ минут | 120/ минут |
Референца алата
15 алата наведених у препорученом редоследу радног процеса.
search_location
ЈавниПретрага локација (градови, региони, хотели) за добијање њихових ID-ова за претрагу хотела. Враћа одговарајуће локације са типом и пуним именом.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| query | string | Yes | Search query (city name, region, or hotel name) |
| language | string | No | Language code (default: "en") |
Одговор
| Поље | Тип | Опис |
|---|
| locations | Location[] | | Array of matching locations |
| locations[].id | string | | Location ID (use as regionId in hotel_search) |
| locations[].name | string | | Location name |
| locations[].type | string | | Location type (e.g., "CITY") |
| locations[].fullName | string | | Full location name with country |
| locations[].country | string | | Country name |
| totalCount | number | | Total 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
}hotel_search
ЈавниПокретање претраге хотела. Наведите regionId од search_location или latitude/longitude координате. Враћа searchKey за проверу путем get_search_results. Претрага се извршава асинхроно.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| regionId | string | No | Location ID from search_location. Required unless lat/lng provided. |
| startDate | string | Yes | Check-in date (YYYY-MM-DD) |
| endDate | string | Yes | Check-out date (YYYY-MM-DD) |
| currency | string | No | Currency code (default: "USD") |
| rooms | Room[] | Yes | Room configurations |
| rooms[].adults | number | Yes | Number of adults (1-4) |
| rooms[].childrenAges | number[] | No | Ages of children (0-17) |
| nationality | string | Yes | 2-letter country code (e.g., US, GB) |
| latitude | number | No | Latitude (-90 to 90). Use with longitude instead of regionId. |
| longitude | number | No | Longitude (-180 to 180). Use with latitude instead of regionId. |
| radiusInMeters | number | No | Search radius in meters (default: 30000, max: 100000). Only with lat/lng. |
Одговор
| Поље | Тип | Опис |
|---|
| searchKey | string | | Key to poll results with get_search_results |
| sessionId | string | | Internal session identifier |
| status | string | | Search status (e.g., "IN_PROGRESS") |
Пример
curl -X POST https://locktrip.com/mcp/tools/hotel_search \
-H "Content-Type: application/json" \
-d '{
"regionId": "5f078e431fd614748f9037f9",
"startDate": "2026-04-15",
"endDate": "2026-04-17",
"currency": "EUR",
"rooms": [{"adults": 2}],
"nationality": "US"
}'
# Response (200 OK):
{
"searchKey": "47de06e3262ea3822bdc384a04470783",
"sessionId": "/280/137970/D20260228T093158/4fcf789dd1294b4194cdb2c263bdf264",
"status": "IN_PROGRESS"
}get_search_results
ЈавниПреузимање пагинираних резултата претраге хотела. Проверавајте док searchStatus не буде "COMPLETED". Подржава филтрирање по цени, звездицама, погодностима и типовима оброка. Сортирање по цени, оцени или удаљености.
Ценовна интелигенција
Сваки резултат хотела укључује discountScore — LockTrip-ов власнички резултат машинског учења који израчунава колико је понуда јефтинија у поређењу са другим путничким веб страницама. V8 ML модел анализира податке о ценама у реалном времену од више добављача хотела како би предвидео уштеде. Користите minPrice (LockTrip-ова цена) и originalPrice (последња најбоља цена на конкурентским страницама) заједно са discountScore за приказ најбољих понуда корисницима.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| searchKey | string | Yes | Search key from hotel_search |
| page | number | No | Page number, 0-indexed (default: 0) |
| size | number | No | Results per page (default: 100, max: 5000) |
| currency | string | No | Currency code from hotel_search |
| sortBy | string | No | PRICE_ASC, PRICE_DESC, RATING_DESC, or DISTANCE |
| filters | object | No | Optional filters (see below) |
| filters.minPrice | number | No | Minimum price |
| filters.maxPrice | number | No | Maximum price |
| filters.starRatings | number[] | No | Star ratings to include (1-5) |
| filters.amenities | string[] | No | Required amenities |
| filters.mealTypes | string[] | No | Required meal types |
| filters.hotelName | string | No | Hotel name search |
Одговор
| Поље | Тип | Опис |
|---|
| hotels | Hotel[] | | Array of matching hotels |
| hotels[].hotelId | string | | Hotel ID (use in get_hotel_rooms, get_hotel_details) |
| hotels[].name | string | | Hotel name |
| hotels[].starRating | number | | Star rating (1-5) |
| hotels[].address | string | | Street address |
| hotels[].latitude | number | | Latitude coordinate |
| hotels[].longitude | number | | Longitude coordinate |
| hotels[].images | string[] | | Hotel image URLs |
| hotels[].amenities | string[] | | Available amenities |
| hotels[].minPrice | number | | LockTrip's price for this hotel (lowest available rate) |
| hotels[].originalPrice | number | | Last best price found on competing travel websites (e.g. Booking.com, Expedia). When equal to minPrice, no discount was detected. |
| hotels[].currency | string | | Price currency code |
| hotels[].discountScore | number | | LockTrip'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[].quality | number | | Overall quality score (0-1) combining star rating, reviews, amenities, and other factors |
| hotels[].reviewScore | number | | Guest review score (0-10) |
| hotels[].reviewCount | number|null | | Number of guest reviews |
| hotels[].hasFreeCancellation | boolean | | Whether any room has free cancellation |
| hotels[].isRefundable | boolean | | Whether any room is refundable |
| hotels[].refundableUntil | string|null | | ISO date until which free cancellation is available |
| hotels[].payment | string | | Payment type (e.g., "Cash") |
| hotels[].distance | number | | Distance from search center (km) |
| hotels[].boardType | string|null | | Default board type |
| hotels[].availableMealTypes | string[] | | Available meal types |
| totalCount | number | | Total hotels matching search |
| page | number | | Current page number |
| pageSize | number | | Results per page |
| hasMore | boolean | | Whether more pages are available |
| searchStatus | string | | "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 потребне за резервацију. Сваки пакет укључује цену, тип оброка, погодности и информације о отказивању.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| hotelId | string | Yes | Hotel ID from search results |
| searchKey | string | Yes | Search key from hotel_search |
| startDate | string | Yes | Check-in date (YYYY-MM-DD) |
| endDate | string | Yes | Check-out date (YYYY-MM-DD) |
| rooms | Room[] | Yes | Room occupancy (same as hotel_search) |
| nationality | string | Yes | 2-letter country code |
| regionId | string | Yes | Region ID from search_location |
| currency | string | No | Currency code (default: "USD") |
Одговор
| Поље | Тип | Опис |
|---|
| hotelId | string | | Hotel ID |
| hotelName | string | | Hotel name |
| checkIn | string | | Check-in date (YYYY-MM-DD) |
| checkOut | string | | Check-out date (YYYY-MM-DD) |
| packages | Package[] | | Available room packages |
| packages[].quoteId | string | | Quote ID (use in prepare_booking) |
| packages[].packageId | string | | Package identifier |
| packages[].roomName | string | | Room type name (e.g., "Standard, 3 Beds") |
| packages[].roomDescription | string | | HTML description of room features |
| packages[].mealType | string | | "Room Only", "Breakfast Included", etc. |
| packages[].mealDescription | string | | Meal plan description |
| packages[].maxOccupancy | number | | Maximum guests per room |
| packages[].amenities | string[] | | Room amenities list |
| packages[].price | number | | Total price for all nights |
| packages[].currency | string | | Price currency |
| packages[].pricePerNight | number | | Price per night |
| packages[].totalNights | number | | Number of nights |
| packages[].isRefundable | boolean | | Whether 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
ЈавниДетаљне информације о хотелу укључујући опис, погодности, рецензије, фотографије и локацију. Користите после претраге за потпуне информације пре резервације.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| hotelId | number | Yes | Hotel ID (numeric, from search results) |
| language | string | No | Language code (default: "en") |
| includeImages | boolean | No | Fetch additional images (default: false) |
| imageLimit | number | No | Max additional images (default: 20, max: 100) |
Одговор
| Поље | Тип | Опис |
|---|
| hotel | object | | Hotel details object |
| hotel.id | number | | Hotel ID |
| hotel.name | string | | Hotel name |
| hotel.country | string | | Country |
| hotel.city | string | | City |
| hotel.star | number | | Star rating (1-5) |
| hotel.address | string | | Street address |
| hotel.latitude | number | | Latitude |
| hotel.longitude | number | | Longitude |
| hotel.description | string | | HTML description with sections |
| hotel.phone | string|null | | Phone number |
| hotel.hotelPhotos | Photo[] | | Photo URLs (relative paths) |
| hotel.reviews | object | | Review summary with score, count, keywords |
| hotel.hotelAmenities | Category[] | | Amenities grouped by category |
| additionalImages | Photo[] | | 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
ЈавниДетаљна политика отказивања за пакете соба. Приказује рок бесплатног отказивања и пенале по распону датума.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| searchKey | string | Yes | Search key from hotel_search |
| hotelId | string | Yes | Hotel ID |
| packageIds | string[] | Yes | Package IDs to check (from get_hotel_rooms) |
Одговор
| Поље | Тип | Опис |
|---|
| hotelId | string | | Hotel ID |
| policies | Policy[] | | Cancellation policy per package |
| policies[].packageId | string | | Package identifier |
| policies[].isRefundable | boolean | | Whether package is refundable |
| policies[].freeCancellationUntil | string|null | | Last date for free cancellation (YYYY-MM-DD) |
| policies[].fees | Fee[] | | Cancellation penalty fees |
| policies[].fees[].fromDate | string | | Penalty period start (YYYY-MM-DD) |
| policies[].fees[].toDate | string|null | | Penalty period end |
| policies[].fees[].amount | number | | Penalty amount |
| policies[].fees[].currency | string | | Currency code |
| policies[].fees[].percentage | number|null | | Percentage of booking price |
| policies[].remarks | string[]|null | | Additional 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 токен за аутентификоване алате. Нови корисници добијају имејл за верификацију и могу поставити лозинку касније.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| email | string | Yes | User email address |
Одговор
| Поље | Тип | Опис |
|---|
| token | string | | JWT Bearer token for authenticated API calls |
| userId | number | | Numeric user ID |
| email | string | | User email address |
| isNewUser | boolean | | Whether 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 токена. За регистроване кориснике са потврђеним налозима.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| email | string | Yes | User email address |
| password | string | Yes | User password |
Одговор
| Поље | Тип | Опис |
|---|
| token | string | | JWT Bearer token for authenticated API calls |
| userId | number | | Numeric user ID |
| email | string | | User 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 минута. Број гостију по соби мора одговарати броју одраслих из претраге.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| quoteId | string | Yes | Quote ID from get_hotel_rooms |
| searchKey | string | No | Search key (validates cancellation policy) |
| rooms | Room[] | Yes | Guest assignments per room |
| rooms[].roomIndex | number | Yes | Room index (0-based) |
| rooms[].guests | Guest[] | Yes | Adult guests in this room |
| rooms[].guests[].firstName | string | Yes | First name |
| rooms[].guests[].lastName | string | Yes | Last name |
| rooms[].guests[].title | string | No | "Mr", "Mrs", or "Ms" (default: "Mr") |
| rooms[].guests[].email | string | No | Email address |
| rooms[].guests[].phone | string | No | Phone number |
| rooms[].guests[].isLeadGuest | boolean | No | Whether this is the lead guest |
| rooms[].children | Child[] | No | Children in this room |
| rooms[].children[].firstName | string | Yes | First name |
| rooms[].children[].lastName | string | Yes | Last name |
| rooms[].children[].age | number | Yes | Child age (0-17) |
| contactPerson | object | Yes | Contact person details |
| contactPerson.firstName | string | Yes | First name |
| contactPerson.lastName | string | Yes | Last name |
| contactPerson.email | string | Yes | Email address |
| contactPerson.phone | string | Yes | Phone number (min 5 chars) |
| contactPerson.title | string | No | "Mr", "Mrs", or "Ms" |
| contactPerson.countryCode | string | No | 2-letter country code |
| specialRequests | string | No | Special requests for the hotel |
Одговор
| Поље | Тип | Опис |
|---|
| preparedBookingId | string | | Booking ID for confirm_booking |
| bookingInternalId | string | | Internal booking identifier |
| price | number | | Total price |
| currency | string | | Price currency |
| payment | string | | Payment type (e.g., "Cash") |
| discount | object | | Discount details (amount, currency) |
| taxes | Tax[] | | Itemized taxes and fees |
| essentialInformation | string[] | | 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.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| bookingInternalId | string | Yes | Booking ID from prepare_booking (preparedBookingId) |
| quoteId | string | Yes | Quote ID used in prepare_booking |
| paymentMethod | string | No | Payment method (default: "CREDIT_LINE" for B2B) |
Одговор
| Поље | Тип | Опис |
|---|
| accepted | boolean | | Whether booking confirmation was accepted |
| message | string|null | | Confirmation status message |
| voucherUrl | string|null | | URL 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 потрошаче.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| bookingId | string | Yes | Booking ID from prepare_booking (preparedBookingId) |
| currency | string | Yes | 3-letter currency code (e.g., USD, EUR, GBP) |
| backUrl | string | No | Cancel/back redirect URL (defaults to locktrip.com) |
| successUrl | string | No | Success redirect URL |
Одговор
| Поље | Тип | Опис |
|---|
| checkoutUrl | string | | Revolut hosted checkout URL for payment |
| checkoutToken | string | | Payment token for tracking |
| expiresInMinutes | number | | Token expiration time (20 minutes) |
| message | string | | User 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 за преусмеравање клијента за завршетак плаћања кредитном картицом.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| bookingId | string | Yes | Booking ID from prepare_booking (preparedBookingId) |
| currency | string | Yes | Payment currency code (e.g., USD, EUR) |
| backUrl | string | Yes | URL to redirect on cancel/back |
| successUrl | string | No | Custom URL to redirect on success |
Одговор
| Поље | Тип | Опис |
|---|
| url | string | | Stripe checkout URL to redirect customer to |
| sessionId | string | | Stripe 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.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| type | string | No | "UPCOMING", "COMPLETED", "CANCELLED", or "PENDING" (default: "UPCOMING") |
| page | number | No | Page number (0-indexed) |
| size | number | No | Results per page |
Одговор
| Поље | Тип | Опис |
|---|
| bookings | BookingSummary[] | | Array of booking summaries |
| bookings[].bookingId | string | | Booking identifier |
| bookings[].bookingReferenceId | string | | Provider reference ID |
| bookings[].hotelName | string | | Hotel name |
| bookings[].hotelCity | string | | City |
| bookings[].checkIn | string | | Check-in date (YYYY-MM-DD) |
| bookings[].checkOut | string | | Check-out date (YYYY-MM-DD) |
| bookings[].status | string | | Booking status (DONE, PENDING, CANCELLED) |
| bookings[].totalPrice | number | | Total booking price |
| bookings[].currency | string | | Currency code |
| bookings[].guestName | string | | Lead guest name |
| bookings[].roomCount | number | | Number of rooms |
| bookings[].createdAt | string | | Booking creation timestamp (ISO 8601) |
| bookings[].hotelPhoto | string|null | | Hotel image URL |
| totalCount | number | | Total number of bookings |
| page | number | | Current page number |
| pageSize | number | | Results 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
Потребна аутентификацијаПотпуни детаљи одређене резервације укључујући информације о хотелу, госте, собе, статус плаћања и политику отказивања.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| bookingId | string | Yes | Booking ID to retrieve |
Одговор
| Поље | Тип | Опис |
|---|
| bookingId | string | | Booking identifier |
| bookingReferenceId | string | | Provider reference ID |
| status | string | | Booking status (DONE, PENDING, CANCELLED) |
| hotel | object | | Hotel details |
| hotel.name | string | | Hotel name |
| hotel.address | string | | Street address |
| hotel.city | string | | City |
| hotel.country | string | | Country |
| hotel.starRating | number | | Star rating (1-5) |
| checkIn | string | | Check-in date (YYYY-MM-DD) |
| checkOut | string | | Check-out date (YYYY-MM-DD) |
| rooms | Room[] | | Booked rooms with guests |
| contactPerson | object | | Contact person (firstName, lastName, email, phone) |
| totalPrice | number | | Total booking price |
| currency | string | | Currency code |
| paymentStatus | string | | Payment status (PAID, PENDING) |
| cancellationPolicy | object|null | | Cancellation policy with fees and deadlines |
| createdAt | string | | Booking creation date |
| confirmedAt | string|null | | Confirmation 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 за извршење. Враћа износ повраћаја и накнаду за отказивање.
Захтев
| Поље | Тип | Обав. | Опис |
|---|
| bookingId | string | Yes | Booking ID to cancel |
| confirmed | boolean | Yes | Set true to execute cancellation |
| reason | string | No | Reason for cancellation |
Одговор
| Поље | Тип | Опис |
|---|
| success | boolean | | Whether cancellation was executed |
| message | string | | Status 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"}