Skip to main content
Glama

List hotel rooms

get_hotel_rooms
Read-onlyIdempotent

List rooms for a hotel with individual Roomza scores, bed type, view, and floor. Pass room_number to look up a specific room.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hotel_idYesHotel UUID from search_hotels/get_hotel (the URL slug also works)
room_numberNoLook up a specific room by number, e.g. "434"

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteYesCopy encouraging a booking + review to start this hotel's room record
countYes
roomsYes
bookUrlYesRoomza booking link for this hotel; set only on the no-records fallback
roomTypesYesOnly populated when the hotel has no room records yet: bookable room types from live rates

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedInput schema / properties / hotel_id / description
      Previous value: -"Hotel UUID (get this from search_hotels or get_hotel)"New value: +"Hotel UUID from search_hotels/get_hotel (the URL slug also works)"
  2. Changed4 schema fields changed
    • addedOutput schema / properties / bookUrl
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Roomza booking link for this hotel; set only on the no-records fallback"
      +}
    • addedOutput schema / properties / note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Copy encouraging a booking + review to start this hotel's room record"
      +}
    • addedOutput schema / properties / roomTypes
      Added value: +{
      +  "description": "Only populated when the hotel has no room records yet: bookable room types from live rates",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "fromNightly": {
      +        "description": "Typical nightly from-price in USD from the hotel's public rates",
      +        "type": "number"
      +      },
      +      "name": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "fromNightly"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "count",
      -  "rooms"
      -]New value: +[
      +  "count",
      +  "rooms",
      +  "roomTypes",
      +  "bookUrl",
      +  "note"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "count": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "rooms": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "adaAccessible": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "adaFeatures": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "balcony": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "bathtub": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "null = unknown; false = confirmed absent"
      +          },
      +          "bedType": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "floor": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "id": {
      +            "description": "Room UUID — pass to show_rooms or secure_room",
      +            "type": "string"
      +          },
      +          "microwave": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "miniFridge": {
      +            "anyOf": [
      +              {
      +                "type": "boolean"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "reviewCount": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "roomNumber": {
      +            "type": "string"
      +          },
      +          "roomTypeName": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "score": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "Roomza room score 0-100"
      +          },
      +          "sqFt": {
      +            "anyOf": [
      +              {
      +                "type": "number"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "url": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "view": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "roomNumber",
      +          "floor",
      +          "roomTypeName",
      +          "bedType",
      +          "view",
      +          "sqFt",
      +          "bathtub",
      +          "balcony",
      +          "adaAccessible",
      +          "miniFridge",
      +          "microwave",
      +          "adaFeatures",
      +          "score",
      +          "reviewCount",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "count",
      +    "rooms"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by naming the returned fields and the optional specific-room lookup behavior, which goes beyond the structured annotations.

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?

Two concise sentences fully capture the purpose and the optional lookup behavior. The most important information is front-loaded, and every phrase earns its place without redundancy.

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?

For a simple read-only list operation backed by a rich schema, annotations, and an output schema, the description is adequate for correct invocation. It could be slightly more complete by clarifying pagination or explicitly contrasting with 'show_rooms', but those are not significant gaps.

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?

Schema description coverage is 100%, so both parameters are already documented with clear explanations, including the hotel_id source and a concrete room_number example. The description's 'Pass room_number to look up a specific room' mostly restates the schema, adding little new semantic value.

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

Purpose4/5

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

The description clearly states the operation ('List rooms for a hotel') and the target resource, and it enumerates the returned attributes: Roomza scores, bed type, view, and floor. It is unambiguous, but it does not explicitly differentiate itself from the sibling tool 'show_rooms', so it misses the top score.

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

Usage Guidelines3/5

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

The description provides usage context: pass room_number to look up a specific room. However, it does not explain when to choose this tool over 'show_rooms' or other hotel-related tools, leaving alternative selection to inference.

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.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a clear, distinct purpose: searching, retrieving details, pricing, rooms, reviews, nearby places, user-specific actions (preferences, trips), booking, and presentation. The overlap between get_hotel and ask_about_hotel is intentional and clearly differentiated (ask is for supplementary questions), and get_hotel_rooms vs show_rooms are also distinct (list vs present).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern: get_hotel, get_hotel_pricing, get_hotel_rooms, get_my_preferences, get_my_trips, get_nearby, get_recent_reviews, search_hotels, secure_room, show_rooms, add_special_request, ask_about_hotel. The only minor variation is 'ask_about_hotel' but it's still verb-based and follows the same structure.

Tool Count5/5

Twelve tools is well within the optimal range for a domain of this scope. The toolset covers the core lifecycle (search, view, price, book, add request, view trips) plus supporting functions (reviews, nearby, user preferences, presentation). No redundant or superfluous tools exist.

Completeness4/5

The toolset covers the primary hotel intelligence and booking workflow thoroughly: search, detail, pricing, rooms, booking, special requests, and user data. Slight gap: no explicit cancellation or booking modification tool, but given the server's focus on intelligence and presentation, this is a minor omission that agents can work around.

Resources