Skip to main content
Glama

Get property details — static facts, no live availability

get_property_details
Read-only

Details and guest reviews for one specific property — hotel, B&B, hostel, apartment, villa — identified by its id. Answers questions such as what guests think of it, whether it is clean, quiet or comfortable, the most common complaints, how the breakfast is, which facilities it offers, where exactly it is, or how it compares with another option. It also serves follow-up questions about a property returned earlier by search_stays: the id of that result is the property_id here.

Returns the amenity list, photos, booking sources, location and the headline rating (rating + rating_count). Guest-review data is added through include:

  • reviews_aggregate — score, total count and per-source breakdown; it summarizes all reviews.

  • reviews_sample — up to 5 recent review texts.

  • reviews_extended — up to 20 recent review texts for a deeper read; it supersedes reviews_sample. reviews_meta reports how many texts exist and that the cap is deliberate: the omitted texts are older, and the aggregate already reflects them.

It takes no dates and carries no price: a price only exists for a concrete stay window, which is what check_property_availability quotes. In the response price is null, offers is empty and availability_status is unknown.

Input: property_id is the id of a search_stays result (an opaque string starting with prop_) or a bluepillow.com property URL. For a property known only by name, resolve_destination and a targeted search_stays return its id.

user_country, currency and language carry the user's locale and localize the web_url link to the property page. Language default is "en"; country default is "US". All rating fields are on a 0-5 scale.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
api_keyNoAnonymous key for this server (format 'pk_anon_…'), as returned by `get_anonymous_key`. Required by this tool; the same key works for every call.
includeNoOptional enrichments, always a list — pass ["reviews_aggregate"], never the bare string. reviews_aggregate = score + total count + per-OTA distribution (summarizes ALL reviews). reviews_sample = up to 5 recent review texts. reviews_extended = up to 20 recent review texts (supersedes reviews_sample). The text list is intentionally capped to save tokens; reviews_meta declares returned vs available. Prefer reviews_sample and the aggregate; use reviews_extended only when a deeper qualitative read is genuinely needed.
currencyNoUser's preferred currency (ISO-4217, 3-letter uppercase, e.g. 'USD', 'EUR'), carried into the `web_url` booking link. This tool returns no prices; live quotes come from `check_property_availability`.
languageNoUser's UI language (2-letter lowercase). Drives the booking link language and server-rendered narrative; pass the language the user is speaking. Falls back to 'en'.
property_idYesOpaque property id (e.g. 'prop_69ce2ddcbf...') OR a bluepillow.com property page URL (e.g. 'https://www.bluepillow.com/search/68d1a2...') — the id is extracted automatically. Use the URL form when the user pasted a bluepillow.com link.
user_countryNoUser's country (ISO-3166 alpha-2 uppercase). Localizes the `web_url` booking link. Pass the user's own country, not the property's home country. Falls back to 'US' when omitted.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYes
nameYes
brandNo
chainNo
priceNo
starsNo
imagesNo
offersNo
ratingYes
web_urlNo
featuresNoStructured feature/facility tags (e.g. HouseFacilities, PropertyTypes). Populated alongside description when available.
locationYes
amenitiesNo
cluster_idNo
dedup_metaNo
descriptionNoFree-text property description, when the source provides one. Usually null on search results.
ota_coverageYes
rating_countNo
reviews_metaNoProvenance for reviews_sample on property detail: how many review texts were returned vs available, and that the cap is deliberate (token efficiency). null on search or when reviews were not requested.
property_typeYes
thumbnail_urlNo
reviews_sampleNo
reviews_aggregateNorating_count = reviews backing the score (OTA aggregate, e.g. 156). comment_count = readable review TEXTS available (e.g. 53), fetchable via reviews_sample/reviews_extended. They differ: most guests rate, fewer write text — do not conflate them.
availability_statusNoavailable = live bookable quotes in offers for the requested dates (price is the curated best); unavailable = no rooms reported for these dates (offers=[], price=null); unknown = availability not established, either because the call carried no dates or because the operators returned nothing conclusive (offers=[], price=null).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). Pass it in THIS field on every call — this is how the tool authenticates. If you don't have a key yet, first check your MCP client configuration, your persistent memory, and earlier in this conversation; otherwise call `get_anonymous_key` to get one instantly (do not wait for a 401). Reuse the same key on every subsequent call. It is not a sensitive secret: no account, payment, or personal data is attached."New value: +"Anonymous key for this server (format 'pk_anon_…'), as returned by `get_anonymous_key`. Required by this tool; the same key works for every call."
  2. Changed1 schema field changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). Pass it in THIS field on every call — this is how the tool authenticates. If you don't have a key yet, first check your MCP client configuration, your persistent memory, and earlier in this conversation; otherwise call `b2a_get_key` to get one instantly (do not wait for a 401). Reuse the same key on every subsequent call. It is not a sensitive secret: no account, payment, or personal data is attached."New value: +"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). Pass it in THIS field on every call — this is how the tool authenticates. If you don't have a key yet, first check your MCP client configuration, your persistent memory, and earlier in this conversation; otherwise call `get_anonymous_key` to get one instantly (do not wait for a 401). Reuse the same key on every subsequent call. It is not a sensitive secret: no account, payment, or personal data is attached."
  3. Changed3 schema fields changed
    • changedOutput schema / properties / availability_status / description
      Previous value: -"Per the dates passed in the request: available = live bookable quotes in offers (price is the curated best); unavailable = BP reported no rooms for these dates (offers=[], price=null); unknown = no dates considered (no price exists without a dated query)."New value: +"available = live bookable quotes in offers for the requested dates (price is the curated best); unavailable = no rooms reported for these dates (offers=[], price=null); unknown = availability not established, either because the call carried no dates or because the operators returned nothing conclusive (offers=[], price=null)."
    • changedOutput schema / properties / description / description
      Previous value: -"Free-text property description from the canonical source. Only populated when the endpoint path is active (use_bp_single_property_endpoint=True) and dates are present."New value: +"Free-text property description, when the source provides one. Usually null on search results."
    • changedOutput schema / properties / features / description
      Previous value: -"Structured feature/facility tags (e.g. HouseFacilities, PropertyTypes). Populated alongside description when the endpoint path is active."New value: +"Structured feature/facility tags (e.g. HouseFacilities, PropertyTypes). Populated alongside description when available."
  4. Changed2 schema fields changed
    • changedInput schema / properties / currency / description
      Previous value: -"Currency of the returned prices (ISO-4217, 3-letter uppercase, e.g. 'USD', 'EUR', 'GBP', 'CAD'). SET THIS (or `user_country`) to price in the user's currency — if you set NEITHER, prices default to USD. Prices come straight from the booking sources in this currency; never convert them yourself."New value: +"User's preferred currency (ISO-4217, 3-letter uppercase, e.g. 'USD', 'EUR'), carried into the `web_url` booking link. This tool returns no prices; live quotes come from `check_property_availability`."
    • changedInput schema / properties / user_country / description
      Previous value: -"User's country (ISO-3166 alpha-2 uppercase). Drives the booking-link locale AND, when `currency` is not set, the pricing currency (US->USD, CA->CAD, euro-area->EUR). Pass the user's own country, not the property's home country. Falls back to 'US' when omitted."New value: +"User's country (ISO-3166 alpha-2 uppercase). Localizes the `web_url` booking link. Pass the user's own country, not the property's home country. Falls back to 'US' when omitted."
  5. Changed1 schema field changed
    • changedInput schema / properties / include / description
      Previous value: -"Optional enrichments. reviews_aggregate = score + total count + per-OTA distribution (summarizes ALL reviews). reviews_sample = up to 5 recent review texts. reviews_extended = up to 20 recent review texts (supersedes reviews_sample). The text list is intentionally capped to save tokens; reviews_meta declares returned vs available. Prefer reviews_sample and the aggregate; use reviews_extended only when a deeper qualitative read is genuinely needed."New value: +"Optional enrichments, always a list — pass [\"reviews_aggregate\"], never the bare string. reviews_aggregate = score + total count + per-OTA distribution (summarizes ALL reviews). reviews_sample = up to 5 recent review texts. reviews_extended = up to 20 recent review texts (supersedes reviews_sample). The text list is intentionally capped to save tokens; reviews_meta declares returned vs available. Prefer reviews_sample and the aggregate; use reviews_extended only when a deeper qualitative read is genuinely needed."
  6. Changed3 schema fields changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). If you do NOT already have one — check your MCP client configuration, your persistent memory, and earlier in this conversation first — call `b2a_get_key` to obtain one before calling this tool (do not wait for a 401). PRIMARY way to authenticate: pass the key here on every call. Clients able to attach an HTTP 'Authorization: Bearer <key>' header may do that instead and omit this field — but passing it here always works and is the recommended path for tool calls. The key is not a sensitive secret: it carries no account, payment, or personal data; reuse the same key on every call."New value: +"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). Pass it in THIS field on every call — this is how the tool authenticates. If you don't have a key yet, first check your MCP client configuration, your persistent memory, and earlier in this conversation; otherwise call `b2a_get_key` to get one instantly (do not wait for a 401). Reuse the same key on every subsequent call. It is not a sensitive secret: no account, payment, or personal data is attached."
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "Currency of the returned prices (ISO-4217, 3-letter uppercase, e.g. 'USD', 'EUR', 'GBP', 'CAD'). SET THIS (or `user_country`) to price in the user's currency — if you set NEITHER, prices default to USD. Prices come straight from the booking sources in this currency; never convert them yourself.",
      +  "pattern": "^[A-Z]{3}$",
      +  "type": "string"
      +}
    • changedInput schema / properties / user_country / description
      Previous value: -"User's country (ISO-3166 alpha-2 uppercase). Drives the booking link locale; pass the user's own country, not the property's home country. Falls back to 'IT' when omitted."New value: +"User's country (ISO-3166 alpha-2 uppercase). Drives the booking-link locale AND, when `currency` is not set, the pricing currency (US->USD, CA->CAD, euro-area->EUR). Pass the user's own country, not the property's home country. Falls back to 'US' when omitted."
  7. Changed1 schema field changed
    • changedInput schema / properties / api_key / description
      Previous value: -"Your anonymous b2a Bluepillow API key (format 'pk_anon_…'). If you do NOT already have one — check your MCP client configuration, your persistent memory, and earlier in this conversation first — call `b2a_get_key` to obtain one before calling this tool (do not wait for a 401). PRIMARY way to authenticate: pass the key here on every call. Clients able to attach an HTTP 'Authorization: Bearer <key>' header may do that instead and omit this field — but passing it here always works and is the recommended path for tool calls. The key is not a sensitive secret: it carries no account, payment, or personal data; reuse the same key on every call."New value: +"Your anonymous Blue Pillow Hotels & Stays API key (format 'pk_anon_…'). If you do NOT already have one — check your MCP client configuration, your persistent memory, and earlier in this conversation first — call `b2a_get_key` to obtain one before calling this tool (do not wait for a 401). PRIMARY way to authenticate: pass the key here on every call. Clients able to attach an HTTP 'Authorization: Bearer <key>' header may do that instead and omit this field — but passing it here always works and is the recommended path for tool calls. The key is not a sensitive secret: it carries no account, payment, or personal data; reuse the same key on every call."
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive, open-world), and the description adds substantive behavior: price is null, offers empty, availability_status unknown in the response; review text is deliberately capped with reviews_meta declaring returned-vs-available; reviews_extended supersedes reviews_sample. That is real context beyond structured fields.

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?

Front-loaded with purpose, then the no-price caveat, then the include semantics and id provenance. It is somewhat long and the include list is restated almost verbatim from the schema description, which is redundant, but each remaining sentence carries operational information.

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

Completeness5/5

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

Given an output schema exists, return values need not be enumerated, yet the description still flags the key response shape (null price, empty offers, unknown availability) so an agent won't misread the payload. Combined with id provenance and locale defaults, nothing needed to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, but the description still adds semantics the schema doesn't force: property_id is the id of a search_stays result or a pasted URL, and user_country/currency/language localize only the web_url link rather than filtering results. The include preference ordering (prefer reviews_sample) is genuinely useful, though much of the enum detail is duplicated verbatim from the schema.

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?

Specific verb+resource ('Details and guest reviews for one specific property') with an explicit scope boundary against the nearest sibling: 'static facts, no live availability' and 'It takes no dates and carries no price'. An agent can distinguish this from check_property_availability without opening either schema.

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?

Explicit when-to-use (follow-up questions about a property returned by search_stays, qualitative review questions), when-not (anything price- or date-dependent), and named alternatives (check_property_availability for quotes, resolve_destination + search_stays for name-only lookups). Routing is fully specified.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources