Skip to main content
Glama

Booking.com MCP Server

Claude, Cursor, Windsurf 등 모든 MCP 클라이언트에 읽기 전용 Booking.com 도구 두 개를 제공하는 호스팅형 Model Context Protocol(MCP) 서버입니다. 목적지와 날짜로 숙박을 풍부한 필터와 함께 검색하고, 개별 숙소를 전체적으로 읽을 수 있습니다. 모두 구조화된 JSON으로 제공되며, Booking.com 계정도 호스팅할 것도 필요 없습니다.

로그아웃한 방문자가 볼 수 있는 Booking.com의 공개 숙소 페이지를 읽습니다.

https://mcp.hasdata.com/api/mcp?apis=booking

Glama score tool contract MCP Tools npm PyPI License

목차

Related MCP server: mydatavalue-mcp

필요한 것

MCP 클라이언트와 대시보드에서 발급한 HasData API 키가 필요합니다. 카드 없이 무료로 만들 수 있으며, 평가판은 10크레딧 요율로 100회 호출을 포함합니다. 이 서버는 원격 서버이므로 가장 간단한 방법은 URL과 x-api-key 헤더를 사용하는 것이며, 실행할 컨테이너도 흐름 어디에도 Booking.com 계정이 필요 없습니다. stdio만 지원하는 클라이언트는 아래에 소개된 얇은 런처(npm의 @hasdata/booking-mcp, PyPI의 hasdata-booking-mcp)를 통해 이 서버에 접속합니다.

빠른 시작

서버 URL은 모든 클라이언트에서 동일합니다. Claude Code와 Claude Desktop에서 직접 실행해 보았습니다. 그 외 블록은 각 클라이언트가 문서화한 원격 서버 형식을 따릅니다.

필드

값

URL

https://mcp.hasdata.com/api/mcp?apis=booking

전송

HTTP, streamable

인증 헤더

x-api-key: HASDATA_API_KEY

OAuth를 지원하는 클라이언트는 동일한 URL을 커넥터로 추가하고 구성 파일에 키를 넣지 않고 로그인할 수 있습니다.

claude mcp add --transport http booking "https://mcp.hasdata.com/api/mcp?apis=booking" \
  --header "x-api-key: HASDATA_API_KEY"

설정, 커넥터, 사용자 지정 커넥터 추가 순서로 이동한 다음 https://mcp.hasdata.com/api/mcp?apis=booking을 붙여넣고 로그인합니다.

구성 파일을 사용하는 경우 Claude Desktop은 로컬(stdio) 서버만 로드하므로 stdio 런처를 통해 원격 서버에 접속합니다. @hasdata/booking-mcp 패키지가 바로 그 런처이며, 환경 변수에서 키를 읽습니다. claude_desktop_config.json에 다음을 추가하세요:

{
  "mcpServers": {
    "booking": {
      "command": "npx",
      "args": ["-y", "@hasdata/booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Node 대신 Python을 사용한다면 런처를 PyPI 패키지로 바꾸면 됩니다. uvx가 수동 설치 없이 실행합니다:

{
  "mcpServers": {
    "booking": {
      "command": "uvx",
      "args": ["hasdata-booking-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

모든 프로젝트에 적용하려면 ~/.cursor/mcp.json, 단일 프로젝트에 적용하려면 .cursor/mcp.json:

{
  "mcpServers": {
    "booking": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json. Windsurf는 필드 이름을 url이 아닌 serverUrl로 사용합니다:

{
  "mcpServers": {
    "booking": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

작업 공간의 .vscode/mcp.json:

{
  "servers": {
    "booking": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=booking",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

예시 프롬프트

코드가 아니라 프롬프트입니다. 하나를 붙여넣으면 에이전트가 도구를 스스로 선택합니다. 각 프롬프트는 필요한 호출 수와 함께 표시되어 있습니다. 성공적인 호출마다 10크레딧이 소비되기 때문입니다.

9월 15일부터 18일까지 파리의 호텔을 성인 2명 기준으로 Booking.com에서 검색하고, 숙박비 $700 미만인 후기 평점 상위 10개를 알려줘.

호출 1회, 10크레딧. 가격, 리뷰 평점, 위치가 검색 결과에 포함됩니다.

최상위 결과를 선택해 전체 세부 정보를 가져와: 편의 시설, 숙소 규칙, 객실 옵션, 카테고리 평점.

호출 1회, 10크레딧. 이러한 정보는 숙소 페이지에 있으며, 세부 정보 도구가 URL과 날짜로 읽습니다.

파리 시내 중심가 근처에서 무료 취소가 가능한 4성급 호텔을 찾아서 가격과 리뷰 평점을 나열해 줘.

호출 1회, 10크레딧. 별점 등급, 취소 정책, 거리는 하나의 요청에 대한 필터입니다.

같은 날짜에 파리와 로마의 가장 저렴한 숙박을 비교해 줘.

호출 2회, 20크레딧, 도시별 검색 1회.

숙소 도구는 검색과 같은 날짜와 게스트 수를 필요로 합니다. 이용 가능성과 가격이 해당 기간에 의존하기 때문입니다. 후보를 추리기 위한 검색 1회와 숙소 3곳의 세부 호출은 검색 1회, 숙소 호출 3회입니다.

도구

두 개의 읽기 전용 도구입니다. 아래 샘플은 실제 호출에서 축약한 것이며 가격은 수시로 변합니다. 형태만 참고하세요. 각 도구 이름은 전체 필드 목록이 담긴 엔드포인트 참조 문서에 연결됩니다.

샘플은 전체 응답이 아니라 페이로드입니다. tools/call 결과에는 텍스트 블록이 하나 들어 있으며, 그 텍스트는 그 자체로 url, status, text, json을 담은 JSON이고, 스크래핑된 데이터는 json 아래에 있습니다. 원시 JSON-RPC 응답에서 경로는 result.content[0].text를 파싱한 다음 .json입니다. 채팅 클라이언트는 이를 대신 풀어 주지만, 엔드포인트에 직접 말하는 코드는 그렇지 않습니다.

Booking.com 검색 결과 가져오기

hasdata_booking_search_getBookingSearchResults

목적지와 날짜로 숙박 페이지를 반환합니다.

파라미터

타입

필수

설명

keyword

string

예

목적지(예: Paris 또는 특정 숙소 이름)

checkInDate / checkOutDate

string

예

YYYY-MM-DD, 체크인은 미래이고 체크아웃보다 이전

rooms / adults / children

number

예

게스트 구성. 없을 때는 children: 0을 전달

childrenAges

string

쉼표로 구분된 나이. children > 0일 때 필수

sort

string

priceLowestFirst, ratingHighToLow, bestReviewedAndLowestPrice, distanceFromDowntown 등

propertyType__ / rating__ / reviewScore__

array

숙소 유형, 별점 등급, 게스트 평점 구간

facilities__ / roomFacilities__ / reservationPolicy__

array

편의 시설, 객실 내 시설, 취소 정책 필터

price_min_ / price_max_

number

총 숙박 가격 구간

page

number

페이지당 약 25개 결과. 다음 페이지는 2

참조 문서에는 거리, 식사, 접근성, 침대 선호, 여행 그룹을 포함한 전체 필터 세트가 문서화되어 있습니다.

searchInformation, results 배열, 그리고 page, totalResults, totalPages를 포함한 pagination을 반환합니다. 각 결과에는 hotelId, title, url, 제공되는 room과 bedTypes, location 객체, policies 객체, price 객체, 별점 rating, score, count와 텍스트 라벨을 가진 reviews 객체, 그리고 photo가 들어 있습니다.

price의 할인 필드는 업스트림 키를 그대로 반영해 dicsount(dicsountRaw, dicsountParsed)로 표기됩니다. discount가 아니라 그 철자 그대로 읽으세요. 또한 rating은 공식 별점이고 reviews.score는 10점 만점의 게스트 평점으로, 서로 다른 값입니다.

{
  "hotelId": 50724,
  "title": "Hôtel du Jardin des Plantes",
  "url": "https://www.booking.com/hotel/fr/timjardindesplantes.html",
  "room": "Comfort Double Room",
  "location": { "city": "Paris", "address": "5 rue Linné", "mainDistance": "0.9 miles from downtown", "centrallyLocated": true },
  "policies": { "freeCancellation": true, "noPrepayment": true },
  "price": { "pricePerStayParsed": 451.36, "priceBeforeDiscountParsed": 885.03, "dicsountParsed": 433.66, "currency": "USD" },
  "rating": 3,
  "reviews": { "score": 7.5, "count": 1721, "text": "Good" }
}

Booking.com 숙소 세부 정보 가져오기

hasdata_booking_place_getBookingPlaceDetails

URL과 숙박 기간으로 숙소 하나를 전체적으로 읽습니다.

파라미터

타입

필수

설명

url

string

예

Booking.com 숙소 URL. 검색 결과의 url 필드

checkInDate / checkOutDate

string

예

YYYY-MM-DD, 가격과 이용 가능 여부를 확인할 기간

rooms / adults / children

number

예

게스트 구성. 검색 도구와 같은 의미

childrenAges

string

쉼표로 구분된 나이. children > 0일 때 필수

페이지를 하나의 평면 객체가 아닌 섹션으로 반환합니다: overview(id, title, propertyType, 구조화된 address, description, highlights, mostPopularFacilities, photos), bookingDetails(가격이 반영된 기간과 통화), 이용 가능한 스위트룸 각각에 name, beds, facilities와 가격이 책정된 variants를 담은 rooms 배열, facilities 목록, houseRules, 카테고리 평점 배열인 ratings, reviews, questionsAndAnswers.

{
  "overview": {
    "id": "50724",
    "title": "Hôtel du Jardin des Plantes",
    "propertyType": "HOTEL",
    "address": { "country": "France", "zipcode": "75005" },
    "mostPopularFacilities": ["Non-smoking rooms", "Free Wifi", "24-hour front desk"]
  },
  "bookingDetails": { "checkIn": "2026-09-15", "checkOut": "2026-09-18", "adults": 2, "rooms": 1, "currency": "USD" },
  "ratings": [
    { "label": "Average", "value": 7.5, "votes": 1721 },
    { "label": "Cleanliness", "value": 7.8 }
  ]
}

오류 및 실패 경로

클라이언트는 도구 호출에서 HTTP 오류 코드를 거의 볼 수 없습니다. MCP 레이어가 200으로 응답하고 실패를 결과 안에 넣으며, isError를 true로 설정하고 사유를 텍스트로 담습니다. 에이전트는 상태 줄을 기대할 자리에 메시지를 읽습니다.

잘못된 키는 연결 실패가 아니라 도구 출력으로 드러납니다. tools/list는 비어 있지 않은 키를 모두 받아들이고 두 도구를 모두 반환하므로 클라이언트는 핸드셰이크를 완료하고 초록색을 표시합니다. 그러면 첫 번째 도구 호출이 isError: true와 함께 HasData API error: 401 Unauthorized 텍스트로 돌아옵니다. 흐름의 앞부분에서는 아무것도 문제를 알려 주지 않으므로 이 문자열을 찾으세요.

키가 없는 경우가 유일한 실제 HTTP 오류입니다. 인증은 모든 도구보다 먼저 실행되며 연결 자체가 401로 실패합니다. CORS 헤더가 있으므로 브라우저 클라이언트는 불투명한 네트워크 실패가 아니라 상태를 읽습니다.

도구 스키마를 위반하는 인수는 스크래핑이 시작되기 전에 거부됩니다. 서버는 isError: true와 함께 MCP error -32602: Input validation error 텍스트로 응답하고 위반 필드를 지목합니다. childrenAges 없이 children 수를 전달하거나 체크아웃이 체크인과 같거나 그 이전인 경우 여기서 걸립니다.

이용 가능한 결과가 없는 검색은 오류가 아니라 results 배열이 빈 상태의 성공 결과를 반환합니다. 열린 숙소가 없는 목적지와 기간도 requestMetadata.status가 ok로 설정되어 돌아옵니다. 반복하기 전에 배열 길이를 확인하세요.

더 이상 유효하지 않은 숙소 URL은 requestMetadata.status가 error로 설정된 400을 반환합니다.

데이터를 담은 결과에는 지원 문의 시 인용할 가치가 있는 requestMetadata.id도 포함됩니다.

가격, 무료 티어 및 한도

각 Booking.com 도구는 성공적인 호출당 10크레딧이 소요됩니다. 응답 크기는 가격을 바꾸지 않습니다. 숙소 25개가 담긴 검색 페이지도 2개만 담긴 페이지와 비용이 같습니다.

무료 체험은 카드 없이 30일 동안 1,000크레딧으로, Booking.com 호출 100회에 해당합니다. 이후 활성 계정은 잔액이 100 미만으로 떨어질 때마다 매일 100크레딧을 충전받으므로, 소량 트래픽의 에이전트는 무료 티어를 무기한 사용할 수 있습니다.

유료 플랜은 월 $49부터 시작하며 200,000크레딧, 즉 20,000회 호출을 제공합니다. 단가는 볼륨에 따라 낮아집니다. 엔트리 플랜의 1,000회 호출당 $2.45에서 Business $0.99, Growth $0.83, 가장 큰 고용량 플랜의 $0.75까지입니다.

플랜은 동시성(concurrency)도 결정합니다. 무료 체험은 동시에 1개 요청, Startup은 15개, Business는 30개, Growth는 50개, 고용량 플랜은 200개에서 1,500개까지 허용합니다. 무인으로 실행되는 모든 작업에서는 초과(overflow) 상황을 방어적으로 처리하세요.

200이 아닌 상태로 돌아온 요청은 청구되지 않습니다. 성공했지만 결과를 찾지 못한 호출도 여전히 호출로 간주됩니다.

도구 선택

apis 쿼리 파라미터는 에이전트가 보게 될 도구를 결정합니다. 도구가 적을수록 도구 정의에 소모되는 컨텍스트가 줄고, 모델이 잘못된 도구를 집어 들 가능성도 줄어듭니다.

?apis=booking                    the two tools in this repo
?apis=booking,airbnb             add Airbnb stays
?apis=booking,google_travel      add Google Hotels and Flights

이 파라미터는 booking 같은 프로바이더 이름과 booking_search 같은 개별 API 이름을 받습니다. 철자가 틀린 이름은 무시됩니다. 모든 이름이 틀리면 요청은 400으로 실패하며, 본문에는 인식하지 못한 이름과 모든 유효한 값이 함께 나열됩니다. 파라미터를 생략하면 동일한 엔드포인트가 HasData의 57개 도구 전체를 노출합니다.

비교

Booking.com 자체 프로그램인 Demand API와 제휴 파트너 네트워크는 예약을 유치하고 수수료를 받는 승인된 파트너를 위한 것이지, 공개 시장을 읽을 수 있는 셀프서비스 방식이 아닙니다. 숙소를 검색하고 임의의 숙소 정보를 읽으려면 공개 페이지를 스크래핑하는 것이 방법이며, 이 서버는 안정적인 스키마 뒤에서 그 작업을 수행합니다.

Booking.com 파트너 프로그램

이 서버

목적

승인된 제휴사로서 예약 유치

공개 시장 읽기

접근

파트너 승인

키 하나와 URL 하나

시장 전체 검색

파트너 조건 내에서

가능, 풍부한 필터 포함

설정

비즈니스 온보딩

없음

출력

파트너 피드

구조화된 JSON, 가격 및 점수 사전 파싱

이 서버가 하지 않는 일. 예약, 결제, 파트너 수수료, 계정 데이터가 없습니다. 로그아웃한 방문자가 Booking.com에서 볼 수 있는 내용만 읽습니다.

FAQ

공식 Booking.com MCP 서버가 있나요?

Booking.com은 공식 서버를 게시하지 않습니다. 이 서버는 HasData가 유지관리하며 공개 페이지를 읽으므로 Booking.com 계정이 필요 없습니다.

Booking.com MCP 서버란 무엇인가요?

Booking.com 데이터를 AI 클라이언트가 호출할 수 있는 도구로 노출하는 서버입니다. 클라이언트는 Model Context Protocol을 통해 도구 호출을 보내고, 서버는 데이터를 가져와 구조화된 JSON을 반환하며, 모델은 그 결과를 가지고 작업합니다. 이 서버는 두 개의 도구를 노출하며 원격으로 실행됩니다.

Booking.com 계정이나 파트너 승인이 필요한가요?

아니요. 유일한 자격 증명은 HasData 키입니다. 도구가 Booking.com 공개 페이지를 읽기 때문에 파트너 온보딩도 없습니다.

숙소 도구에 날짜가 필요한 이유는 무엇인가요?

가용성, 객실 옵션, 가격이 모두 숙박 기간에 따라 달라지기 때문입니다. 검색할 때 사용한 것과 동일한 checkInDate, checkOutDate 및 게스트 수를 전달하면 상세 정보가 해당 기간을 반영합니다.

rating과 review score의 차이는 무엇인가요?

rating은 숙소의 공식 별점 등급입니다. reviews.score는 10점 만점의 게스트 리뷰 점수입니다. 3성급 호텔도 게스트 점수 9.0을 받을 수 있으므로, 의도한 값을 읽으세요.

다른 HasData API와 함께 사용할 수 있나요?

네. apis 파라미터는 목록을 받으며, ?apis=booking,airbnb를 사용하면 에이전트가 Booking.com과 Airbnb를 모두 사용할 수 있습니다. 파라미터를 생략하면 모든 도구를 사용할 수 있습니다.

HasData는 Booking.com과 제휴 관계인가요?

아니요. HasData는 독립 서비스이며 Booking.com과 제휴하거나 보증하거나 후원받지 않습니다. Booking.com은 해당 소유주의 상표입니다.

규정 준수 및 개인 데이터

HasData는 공개적으로 이용 가능한 데이터에만 접근합니다. 플랫폼의 이용약관이 자동화된 접근을 제한할 수 있으며, 규정 준수에 대한 책임은 사용자에게 있습니다. 수집하는 데이터에 개인 정보가 포함된 경우 GDPR, CCPA 또는 해당 지역의 동등한 규정에 따라 적법한 근거가 있는지 확인하세요.

HasData 링크

제품 페이지 및 요청 빌더

Booking.com Scraper API

서버 문서

MCP server docs

하나의 서버에 담긴 57개 도구 전체

HasData/hasdata-mcp

클라이언트 사용 가이드

MCP clients and integrations

그 외 스크래핑 대상 전체

Booking.com Scraper API and 54 more

플랜 및 크레딧 비용

Plans and credit costs

키 및 사용량

HasData dashboard

npm의 Node 런처

@hasdata/booking-mcp

PyPI의 Python 런처

hasdata-booking-mcp

개발

이 저장소는 원격 서버를 위한 구성(configuration) 및 문서입니다. 빌드 단계도 없고 컨테이너화할 것도 없습니다.

test/의 테스트는 도구 계약(tool contract), 즉 여기에 커밋이 없어도 깨질 수 있는 부분을 검증합니다. 테스트는 ?apis=booking이 정확히 두 개의 도구를 반환하는지, 모든 도구가 여전히 필수 파라미터를 선언하는지, 어떤 이름도 변경되지 않았는지, 그리고 사용 중인 키가 실제로 승인되는지 확인합니다. 마지막 검사는 실제로 도구를 호출하며 10크레딧이 소요되는데, 이는 올바른 이유로 실패할 수 있는 카나리 테스트의 비용입니다.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

동일한 테스트 스위트는 모든 푸시와 주 1회 예약된 일정으로 CI에서 실행됩니다. 아무도 이 저장소를 건드리지 않아도 업스트림 도구 목록이 변경될 수 있기 때문입니다. 실패는 도구 목록이 변경되었거나, 키가 작동을 멈췄거나, 엔드포인트에 연결할 수 없다는 뜻이며, assertion 메시지가 그중 무엇인지 알려줍니다.

기여

도구 표와 응답 샘플에 대한 수정이 가장 유용한 기여입니다. 이 부분들이 시간이 지나면서 어긋나기 쉬운 부분이기 때문입니다. 수행한 호출과 받은 응답을 포함해 주세요. 포크에서 온 풀 리퀘스트는 키 없이 테스트 스위트를 실행하며, 실시간 검사는 빨간불(red) 대신 건너뜁니다.

라이선스

MIT. LICENSE를 참조하세요.

Available Tools

2 tools
hasdata_booking_place_getBookingPlaceDetailsbooking_place: GET /AInspect

Get Booking Hotel Details

Fetches a single Booking.com property by its full URL for the given stay dates (checkInDate / checkOutDate) and guest composition (rooms, adults, children with ages). Returns the property identity (hotelId, title, address, coordinates), policies (free cancellation, no prepayment, child/pet stays), price, rating and review summary, photos, and the list of available room suites for the requested window. Use to enrich property listings with real-time availability and pricing, monitor a specific competitor hotel over time, validate amenities and photos before displaying venue details to end users, or fetch full details after discovering the property URL via the Booking Search endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull Booking.com URL of the property page. Only `booking.com` and `www.booking.com` hosts are accepted.
roomsYesNumber of rooms to book.
adultsYesNumber of adult guests across all rooms.
childrenYesNumber of child guests across all rooms (0–10). Pass `0` if there are no children.
currencyNoCurrency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`.
languageNoLanguage of the Booking.com interface and localized fields in the response.
checkInDateYesCheck-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDateYesCheck-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
childrenAgesNoComma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It specifies that the tool fetches real-time availability and pricing and returns a comprehensive set of fields, implying a read-only operation. It does not explicitly state it is safe or non-mutating, but the language 'fetches' and 'returns' strongly implies read-only behavior. It lacks explicit mention of error conditions or rate limits, but these are not typical in tool descriptions, so a 4 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, with the purpose front-loaded in the first sentence, a concise enumeration of return fields in the second, and a list of use cases in the third. Every sentence adds value, and there is no redundant or filler content. The structure is ideal for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters, 6 required, and no output schema, the description compensates by listing the categories of returned data (identity, policies, price, rating, photos, room suites). It also explains the input context (dates, guests) and references the search endpoint as the discovery path. It does not cover error handling or edge cases, but for a read-only fetch tool, the description is sufficiently complete for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 9 parameters, so the description adds little beyond what the schema already documents. It does reiterate key input groups (stay dates, guest composition) but without additional syntax or format details. Per the baseline for high schema coverage, a score of 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches a single Booking.com property by its full URL with stay dates and guest composition, returning a rich set of fields. It explicitly contrasts with the sibling search tool by noting it is used after discovering a property URL via the Booking Search endpoint, making it easy to distinguish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: enriching listings, monitoring competitor hotels, validating amenities, and fetching full details after a search. It implies the tool is for single-property lookups rather than broad searches, and references the sibling tool as the discovery step, leaving no ambiguity about when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_booking_search_getBookingSearchResultsbooking_search: GET /AInspect

Get Booking Search Results

Searches Booking.com for accommodations by destination keyword and stay dates (checkInDate / checkOutDate) with guest composition (rooms, adults, children with ages) and rich filtering: property type, star rating, review score, hotel and room facilities, distance from center, reservation policy, bed preference, travel group, online payment, accessibility, plus optional price range and bedroom/bathroom counts. Pagination is page-based with 25 results per page; locale is controlled by language and currency. Returns each hotel's hotelId, title and Booking URL, location info (city, address, coordinates, distance to center / nearest beach), policies (free cancellation, no prepayment, child/pet stays), price (per stay, before discount, discount, currency), rating, review summary and main photo. Use to power travel-planning agents, OTA price/inventory monitoring, hotel competitor analysis, lead-generation in the hospitality vertical, or to feed hotelId / URL into the Booking Place endpoint for full property details.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number of the search results. Booking.com returns 25 results per page; pass `2` for results 26–50, `3` for 51–75, etc.
sortNoSort order applied by Booking.com to the results page.
roomsYesNumber of rooms to book.
adultsYesNumber of adult guests across all rooms.
keywordYesFree-text destination query. Usually a city, region or neighborhood (e.g. `Paris`, `Manhattan, New York`); a specific property name is also accepted.
meals__NoFilter by available meal plans. Multiple values are combined with OR.
bedroomsNoMinimum number of bedrooms in the property.
childrenYesNumber of child guests across all rooms (0–10). Pass `0` if there are no children.
currencyNoCurrency of the prices returned in the response. Use `hotelCurrency` to keep each property's native currency. Provide one exact documented value (52 allowed), e.g. `hotelCurrency`, `usd`.
languageNoLanguage of the Booking.com interface and localized fields in the response.
rating__NoFilter by official star rating. Multiple values are combined with OR.
bathroomsNoMinimum number of bathrooms in the property.
price_max_NoMaximum total price for the stay, in the requested `currency`. Must be `>= 20` and greater than `price[min]`. Required if `price[min]` is omitted.
price_min_NoMinimum total price for the stay, in the requested `currency`. Must be `>= 10`. Required if `price[max]` is omitted.
checkInDateYesCheck-in date in `YYYY-MM-DD` format. Must be in the future and earlier than `checkOutDate`.
checkOutDateYesCheck-out date in `YYYY-MM-DD` format. Must be later than `checkInDate`.
childrenAgesNoComma-separated list of child ages, one entry per child (each `0`–`17`). Required when `children > 0` and the number of ages must equal `children`. Example: `1,3,7`
facilities__NoFilter by property-level facilities. Multiple values are combined with OR.
reviewScore__NoFilter by minimum guest review score bucket. Multiple values are combined with OR.
travelGroup__NoFilter by travel-group oriented stay options. Multiple values are combined with OR.
propertyType__NoFilter by property type. Multiple values are combined with OR.
bedPreference__NoFilter by bed configuration. Multiple values are combined with OR.
onlinePayment__NoFilter by online payment options.
roomFacilities__NoFilter by in-room facilities. Multiple values are combined with OR.
reservationPolicy__NoFilter by reservation flexibility. Multiple values are combined with OR.
roomAccessibility__NoFilter by in-room accessibility features. Multiple values are combined with OR.
distanceFromCenter__NoFilter by distance from the destination center. Multiple values are combined with OR.
propertyAccessibility__NoFilter by property-level accessibility features. Multiple values are combined with OR.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a read-only search operation through 'Searches' and 'Returns', and summarizes the output fields. However, with no annotations provided, it does not explicitly state that the operation is side-effect-free, whether it modifies any data, or mention rate limits or authentication behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and use cases, and the long middle section is dense with essential detail about filters and returned fields rather than being padded. It is long but efficient given the number of parameters and output categories.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description clearly summarizes the returned hotel fields, pagination behavior, locale controls, and relationship to the Booking Place endpoint. It does not enumerate the exact response shape or error cases, but it provides enough context for a caller to understand what the tool does and how to chain it with the sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Every parameter has a description that goes beyond the raw schema, including constraints such as page size, date ordering, price minimums/maximums, childrenAges required when children > 0, currency value guidance, and OR semantics for array filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly identifies this as a Booking.com accommodation search endpoint, states the core search inputs (destination, dates, guests), and explicitly positions it as the entry point before the Booking Place details endpoint via the mention of feeding hotelId/URL there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete use cases such as travel planning, price monitoring, and competitor analysis, and explicitly connects to the sibling Booking Place endpoint for full property details. It does not formally state when not to use the tool, but the practical guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • First observedhasdata_booking_place_getBookingPlaceDetails
    • First observedhasdata_booking_search_getBookingSearchResults

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

Search and place details have clear boundaries: search accepts destination criteria and returns property lists, while place details consumes a single property URL and returns full property information. The overlap in returned pricing/rating fields is expected, not confusing.

Naming Consistency5/5

Both tool names follow the same hasdata_booking_<endpoint>_get... pattern, using place and search as distinct resource endpoints. The naming is consistent across the set, even though the operation suffix uses camelCase.

Tool Count3/5

Two tools is a minimal but reasonable set for a search-then-detail workflow. However, the count sits at the thin edge of the expected 3-15 tool range, leaving little room for exploration beyond the two core endpoints.

Completeness5/5

The tool surface covers the intended read-only Booking.com workflow: search for accommodations, then fetch a single property's full details. There are no dead ends for travel-planning or OTA data monitoring use cases.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for querying MyDataValue's Booking.com and Airbnb property data, including pricing, promotions, reviews, and performance metrics, via a read-only connector with automatic OAuth token rotation.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Enables MCP clients to perform live Google searches and retrieve structured SERP data including organic results, AI Overviews, People Also Ask, AI Mode answers, news, shopping, and short-video results via eight read-only tools.
    10
    31 npm
    64 PyPI
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A hosted MCP server that lets Claude, Cursor, Windsurf, and other clients search Airbnb stays by location and dates, and read full listing details as structured JSON, with no Airbnb developer account or partner approval required.
    2
    48 npm
    52 PyPI
    8
    MIT