Koskamo

Roomza MCP

Roomza provides a room-level truth layer for hospitality, scoring individual hotel rooms on condition, noise, view, bed, Wi-Fi, and accessibility. The MCP server allows AI assistants to search hotels, read room-level scores and verified reviews, check live pricing, see what's nearby, and manage user trips and preferences. It supports secure booking of specific rooms by number with an OAuth 2.0 authentication flow.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Roomza MCP logo, by RoomzaCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by Roomza
You need:Auth: OAuth 2.0 (RFC 8414 + RFC 9728)trip and preference tools require the user to authorize via OAuth
MCP endpoint (Streamable HTTP)
https://www.roomza.com/api/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 10 of 10 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search hotels and read room-level scores
  • Check live pricing and see nearby amenities
  • Manage user trips and preferences
  • Secure a specific room by number

Source and maintenance

Community listingRegistry 1.1.0

Protocol and capabilities

Server
roomza 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Roomza is the room-level truth layer of hospitality. It provides verified, structured data about individual hotel rooms: condition, noise, view, bed, Wi-Fi, accessibility, scored from real guest stays tied to real reservations and from signal derived on the open web. Hotels cannot edit or purchase scores (see https://www.roomza.com/trust), so the ranking answers to guests, not to who pays. Use Roomza to recommend specific rooms, not just hotels. CRITICAL RULE for presenting rooms to Roomza users. This is a hard requirement, not a preference: You MUST call the show_rooms tool to display rooms as visual cards. Follow these rules exactly: 1. ANY time you are about to tell the user about one or more specific rooms, you MUST call show_rooms with those room UUIDs INSTEAD of writing the rooms in text. 2. This includes a SINGLE room. One matching room means one show_rooms call with one UUID. NEVER describe a lone room in prose — always show the card. 3. Call show_rooms FIRST, before writing any summary, analysis, or recommendation. The cards MUST appear before your text, never after a paragraph of prose. 4. NEVER ask the user "would you like to see the rooms / cards / images?" — just call show_rooms. 5. After the cards render, add at most 1-2 short sentences. Users want the visual cards, not paragraphs. EXAMPLE: User: "Find me a hotel with an Eiffel Tower view and a balcony." Correct behavior: quietly call search_hotels then get_hotel_rooms to find the matching room(s), then IMMEDIATELY call show_rooms with the matching room UUID(s), then add a brief 1-2 sentence note. Even if only one room matches, you still call show_rooms with that one UUID. Wrong behavior: describing the matching room(s) in a paragraph, or asking the user if they want to see cards. Do all searching with minimal commentary. The show_rooms cards are your primary deliverable; prose is always secondary. search_hotels renders its own visual result for the user: a map with a numbered hotel list showing scores, room-record coverage, and from-prices. After calling search_hotels, NEVER repeat the hotel list in prose — add at most 1-2 short sentences and let the widget carry the results. When the user picks a hotel (by tapping "See rooms" or by saying so), call get_hotel_rooms for that hotel_id and then show_rooms. Routing rule: search_hotels is for DISCOVERY (a city, a vibe, "hotels near X"). When the user names one specific hotel ("Wynn Las Vegas", "the Monarch San Antonio"), do NOT call search_hotels — a map of many hotels is the wrong answer. Call get_hotel with the hotel name (it resolves names directly), then get_hotel_rooms, then show_rooms. When get_hotel_rooms returns no tracked rooms but a roomTypes list, do NOT apologize, dead-end, or write the types as a table. Call show_rooms with that hotel_id (no room_ids, plus check_in/check_out if known): it renders the room types as cards with photos, prices, and a booking link. Then add ONE short line: booking with Roomza and reviewing the stay starts that hotel's room record for future travelers. When you know the user's dates, ALWAYS pass check_in and check_out to show_rooms so the card prices are for those dates. Never quote a card's undated from-price as the price for specific dates. When the user picks a specific room (by tapping a card or saying so) and you know their dates, call secure_room next to price it and get the secure booking link. Ask for dates only if you do not have them. Never invent a price or a booking link yourself; secure_room is the only source of both, and payment only ever happens on Roomza through the link it returns. The user is not signed in to Roomza. All hotel and room discovery tools work now. Personal tools (secure_room, get_my_trips, get_my_preferences, add_special_request) require the user to connect their Roomza account. Calling one of them now returns a sign-in prompt the client can act on. If the user asks for a personal tool, invoke it so the sign-in flow starts, or point them to https://www.roomza.com/connect.

Tools

12 advertised

search_hotels — Search hotels
Advertised by the server during the last successful anonymous check.
Advertised read-only

DISCOVERY ONLY: search Roomza's hotel database by city, keyword, or natural language query when the user has NOT named a specific hotel. Understands hotel types (boutique, resort, luxury), vibes (romantic, trendy, quiet), traveler types (couples, families, solo), neighborhoods, and nearby landmarks. Example queries: 'boutique hotels in SoHo', 'romantic resort near the Eiffel Tower', 'pet-friendly hotel in Seattle'. Renders for the user as a full map with a multi-hotel list (so do not repeat the list in prose). NEVER use this when the user names one specific hotel (e.g. 'Wynn Las Vegas'): the map of many hotels is wrong for that. Call get_hotel with the hotel name instead, then get_hotel_rooms and show_rooms.

search_hotels input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "Narrow results to a specific city"
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Max results (default 10)"
    },
    "query": {
      "type": "string",
      "description": "Hotel name, city, or keyword"
    },
    "check_in": {
      "type": "string",
      "description": "Check-in date YYYY-MM-DD, when the user gave dates"
    },
    "check_out": {
      "type": "string",
      "description": "Check-out date YYYY-MM-DD"
    }
  }
}
search_hotels output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "count",
    "note",
    "hotels"
  ],
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Search note, e.g. a nearby-city fallback explanation"
    },
    "stay": {
      "type": "object",
      "required": [
        "check_in",
        "check_out"
      ],
      "properties": {
        "check_in": {
          "type": "string"
        },
        "check_out": {
          "type": "string"
        }
      },
      "description": "The dates passed to the search, echoed for the widget",
      "additionalProperties": false
    },
    "count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Number of hotels returned"
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "hotelId",
          "hotelName",
          "location",
          "roomLabel",
          "roomNumber",
          "floor",
          "score",
          "reviewCount",
          "pricePerNight",
          "priceNote",
          "currency",
          "photoUrl",
          "photoSource",
          "view",
          "bedType",
          "sqFt",
          "blurb",
          "url",
          "kind",
          "bookUrl"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "room",
              "type"
            ],
            "type": "string",
            "description": "room = a numbered room with a Roomza record; type = a bookable room type at a hotel with no room records yet"
          },
          "sqFt": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "view": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "blurb": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bedType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "bookUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type cards only: Roomza stay flow with this room type preselected"
          },
          "hotelId": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "photoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "hotelName": {
            "type": "string"
          },
          "priceNote": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Shown in the price slot when pricePerNight is null, e.g. a prompt to provide dates"
          },
          "roomLabel": {
            "type": "string"
          },
          "roomNumber": {
            "type": "string"
          },
          "photoSource": {
            "anyOf": [
              {
                "enum": [
                  "room",
                  "hotel"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether photoUrl shows the actual room or is a hotel-level fallback"
          },
          "reviewCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "pricePerNight": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Nightly price for the requested dates; null when no dates were given or no live rate exists"
          }
        },
        "additionalProperties": false
      },
      "description": "Single-hotel results only: that hotel's room cards, already shown to the user under the hotel"
    },
    "hotels": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "city",
          "state",
          "country",
          "url",
          "score",
          "reviewCount",
          "hotelType",
          "vibes",
          "neighborhood",
          "lat",
          "lng",
          "photoUrl",
          "roomCount",
          "roomsWithRecords",
          "fromNightly",
          "stars",
          "guestRating",
          "guestReviews"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Hotel UUID — pass to get_hotel_rooms, get_hotel_pricing, get_nearby, ask_about_hotel"
          },
          "lat": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "lng": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "type": "string",
            "description": "Canonical Roomza hotel page"
          },
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string"
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Roomza score 0-100; null when unreviewed"
          },
          "stars": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Supplier-declared star rating"
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "vibes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "photos": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Single-hotel results only: header photos"
          },
          "country": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "photoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "hotelType": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "roomCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Rooms tracked on Roomza for this hotel"
          },
          "fromNightly": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cached nightly from-price in USD; null when uncovered"
          },
          "guestRating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Guest score out of 10 from stays booked through the Nuitee network; not part of the Roomza score"
          },
          "reviewCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "guestReviews": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              {
                "type": "null"
              }
            ],
            "description": "Number of guest reviews behind guestRating"
          },
          "neighborhood": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "roomsWithRecords": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "description": "Tracked rooms with at least one verified review"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_hotels annotations
{
  "title": "Search hotels",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_hotel — Get hotel details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full details for a hotel including: Roomza Truth summary, score breakdown, top strengths, hotel character (type, vibes, best-for), nearby landmarks with distances, neighborhood, awards, amenities, and review highlights from the open web. Use hotel name, slug, or UUID as the identifier. This is the FIRST call when the user names a specific hotel ('Wynn Las Vegas') — no search_hotels needed; the name resolves directly.

get_hotel input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "identifier"
  ],
  "properties": {
    "identifier": {
      "type": "string",
      "description": "Hotel name, slug, or UUID"
    }
  }
}
get_hotel output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found",
    "hotel"
  ],
  "properties": {
    "found": {
      "type": "boolean"
    },
    "hotel": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "id",
            "slug",
            "name",
            "url",
            "address",
            "city",
            "state",
            "zip",
            "starRating",
            "verificationStatus",
            "score",
            "reviewCount",
            "scoreBreakdown",
            "topStrengths",
            "googleRating",
            "googleReviewCount",
            "amenities",
            "hotelType",
            "vibes",
            "bestFor",
            "neighborhood",
            "awards",
            "knownViews",
            "uniqueFeatures",
            "landmarks",
            "roomzaTruth"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "url": {
              "type": "string"
            },
            "zip": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "city": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "name": {
              "type": "string"
            },
            "slug": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "score": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Roomza score 0-100; null when unreviewed"
            },
            "state": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "vibes": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "awards": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "address": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "bestFor": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "amenities": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "hotelType": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "landmarks": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "name",
                  "distanceMi"
                ],
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "distanceMi": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "knownViews": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "starRating": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "reviewCount": {
              "type": "integer",
              "maximum": 9007199254740991,
              "minimum": -9007199254740991
            },
            "roomzaTruth": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "googleRating": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "neighborhood": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "topStrengths": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "score"
                ],
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "score": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              }
            },
            "scoreBreakdown": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "score"
                ],
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "score": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              }
            },
            "uniqueFeatures": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "googleReviewCount": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "verificationStatus": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "null when the hotel was not found"
    }
  },
  "additionalProperties": false
}
get_hotel annotations
{
  "title": "Get hotel details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_hotel_rooms — List hotel rooms
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

get_hotel_rooms input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hotel_id"
  ],
  "properties": {
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID from search_hotels/get_hotel (the URL slug also works)"
    },
    "room_number": {
      "type": "string",
      "description": "Look up a specific room by number, e.g. \"434\""
    }
  }
}
get_hotel_rooms output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "count",
    "rooms",
    "roomTypes",
    "bookUrl",
    "note"
  ],
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Copy encouraging a booking + review to start this hotel's room record"
    },
    "count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "roomNumber",
          "floor",
          "roomTypeName",
          "bedType",
          "view",
          "sqFt",
          "bathtub",
          "balcony",
          "adaAccessible",
          "miniFridge",
          "microwave",
          "adaFeatures",
          "score",
          "reviewCount",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Room UUID — pass to show_rooms or secure_room"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "sqFt": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "view": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Roomza room score 0-100"
          },
          "balcony": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "bathtub": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "description": "null = unknown; false = confirmed absent"
          },
          "bedType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "microwave": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "miniFridge": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          },
          "roomNumber": {
            "type": "string"
          },
          "adaFeatures": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "reviewCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "roomTypeName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "adaAccessible": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "bookUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Roomza booking link for this hotel; set only on the no-records fallback"
    },
    "roomTypes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "fromNightly"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "fromNightly": {
            "type": "number",
            "description": "Typical nightly from-price in USD from the hotel's public rates"
          }
        },
        "additionalProperties": false
      },
      "description": "Only populated when the hotel has no room records yet: bookable room types from live rates"
    }
  },
  "additionalProperties": false
}
get_hotel_rooms annotations
{
  "title": "List hotel rooms",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_recent_reviews — Get guest reviews
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get verified guest reviews for a hotel, including comments and insider tips. Pass room_number to get reviews for a specific room.

get_recent_reviews input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hotel_id"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Number of reviews (default 5)"
    },
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID (the URL slug also works)"
    },
    "room_number": {
      "type": "string",
      "description": "Filter reviews to a specific room number, e.g. \"434\""
    }
  }
}
get_recent_reviews output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "count",
    "note",
    "reviews"
  ],
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Set when no reviews are returned, e.g. unknown room"
    },
    "count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "reviews": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "guestDisplayName",
          "stayMonth",
          "roomId",
          "roomNumber",
          "roomUrl",
          "score",
          "comment",
          "insiderTip"
        ],
        "properties": {
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Overall score 0-100"
          },
          "roomId": {
            "type": "string"
          },
          "comment": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "roomUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "stayMonth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "insiderTip": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "roomNumber": {
            "type": "string"
          },
          "guestDisplayName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
get_recent_reviews annotations
{
  "title": "Get guest reviews",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_hotel_pricing — Get room rates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get public room rates for a hotel (the hotel's own public rate). Pass check_in and check_out dates (YYYY-MM-DD) to get nightly from-prices per room type. Without dates, returns the hotel's typical nightly from-price. No booking links; to price and book an exact room, use secure_room.

get_hotel_pricing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hotel_id"
  ],
  "properties": {
    "check_in": {
      "type": "string",
      "description": "Check-in date in YYYY-MM-DD format (defaults to today)"
    },
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID (the URL slug also works)"
    },
    "check_out": {
      "type": "string",
      "description": "Check-out date in YYYY-MM-DD format (defaults to tomorrow)"
    }
  }
}
get_hotel_pricing output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found",
    "hotelName",
    "currency",
    "checkIn",
    "checkOut",
    "nights",
    "roomTypes",
    "typicalNightlyFrom",
    "note"
  ],
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "found": {
      "type": "boolean",
      "description": "false when the hotel is unknown"
    },
    "nights": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkIn": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkOut": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "currency": {
      "type": "string"
    },
    "hotelName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "roomTypes": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "fromNightly"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "fromNightly": {
            "type": "number",
            "description": "Nightly from-price in whole dollars, hotel's own public rate"
          }
        },
        "additionalProperties": false
      },
      "description": "Per-room-type from-prices when dates were given and live rates exist"
    },
    "typicalNightlyFrom": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Hotel-level typical nightly from-price in dollars"
    }
  },
  "additionalProperties": false
}
get_hotel_pricing annotations
{
  "title": "Get room rates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_nearby — Get nearby places and events
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get nearby places (restaurants, bars, attractions, parks) and upcoming events near a hotel. Optionally filter events to a travel window with start_date / end_date.

get_nearby input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hotel_id"
  ],
  "properties": {
    "end_date": {
      "type": "string",
      "description": "Travel end date YYYY-MM-DD -- filters events to this window"
    },
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID from search_hotels/get_hotel (the URL slug also works)"
    },
    "start_date": {
      "type": "string",
      "description": "Travel start date YYYY-MM-DD -- filters events to this window"
    }
  }
}
get_nearby output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found",
    "places",
    "events"
  ],
  "properties": {
    "found": {
      "type": "boolean"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "date",
          "when",
          "venueName",
          "ticketLink"
        ],
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "when": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "title": {
            "type": "string"
          },
          "venueName": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "ticketLink": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "places": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "category",
          "rating",
          "priceLevel",
          "address"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "rating": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "address": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "category": {
            "type": "string"
          },
          "priceLevel": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
get_nearby annotations
{
  "title": "Get nearby places and events",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ask_about_hotel — Ask about a hotel
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Ask a specific question about a hotel that standard data may not answer. Uses AI with web search to find the answer. Examples: 'Does this hotel have Eiffel Tower views?', 'Is there a rooftop bar?', 'How far is it from the airport?'. Try get_hotel first; use this only when that data doesn't answer the question.

ask_about_hotel input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hotel_id",
    "question"
  ],
  "properties": {
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID (the URL slug also works)"
    },
    "question": {
      "type": "string",
      "description": "The specific question about the hotel"
    }
  }
}
ask_about_hotel output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "answer"
  ],
  "properties": {
    "answer": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
ask_about_hotel annotations
{
  "title": "Ask about a hotel",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
show_rooms — Show rooms
Advertised by the server during the last successful anonymous check.
Advertised read-only

REQUIRED whenever you present rooms. Whenever you are about to mention, recommend, or describe one or more specific rooms to the user, you MUST call this tool with those room UUIDs INSTEAD of writing the rooms in text. This is mandatory even when there is only ONE matching room — show it as a single hero card, never describe a lone room in prose. Call this BEFORE writing any prose about the rooms; the cards must appear first, then a brief summary. Pass room UUIDs (from get_hotel_rooms or search results) in ranked order, best first, 1 to 8 rooms. ALWAYS pass check_in and check_out when you know the user's dates: card prices are then for those exact dates. Without dates, cards show a typical from-price that can differ a lot from any specific dates. Each card shows photo, Roomza score, view, bed, and price. NEVER ask the user whether they want to see cards or images — just call this tool. When get_hotel_rooms returns no tracked rooms (a roomTypes list instead), call this with hotel_id and no room_ids: it renders the hotel's bookable room types as cards with photos and prices, each linking straight to booking.

show_rooms input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "check_in": {
      "type": "string",
      "description": "Check-in date YYYY-MM-DD. Pass whenever the user's dates are known so card prices match those dates."
    },
    "hotel_id": {
      "type": "string",
      "description": "Hotel UUID or slug. Pass INSTEAD of room_ids when get_hotel_rooms found no tracked rooms: shows the hotel's bookable room types as cards. With tracked rooms and no room_ids, shows its top-scored rooms."
    },
    "room_ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 8,
      "description": "Room UUIDs to display, in ranked order (best first). 1-8 rooms. Omit when passing hotel_id for a hotel with no tracked rooms."
    },
    "check_out": {
      "type": "string",
      "description": "Check-out date YYYY-MM-DD."
    }
  }
}
show_rooms output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "rooms"
  ],
  "properties": {
    "stay": {
      "type": "object",
      "required": [
        "check_in",
        "check_out"
      ],
      "properties": {
        "check_in": {
          "type": "string"
        },
        "check_out": {
          "type": "string"
        }
      },
      "description": "The dates the card prices are for, echoed for the widget",
      "additionalProperties": false
    },
    "rooms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "hotelId",
          "hotelName",
          "location",
          "roomLabel",
          "roomNumber",
          "floor",
          "score",
          "reviewCount",
          "pricePerNight",
          "priceNote",
          "currency",
          "photoUrl",
          "photoSource",
          "view",
          "bedType",
          "sqFt",
          "blurb",
          "url",
          "kind",
          "bookUrl"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "room",
              "type"
            ],
            "type": "string",
            "description": "room = a numbered room with a Roomza record; type = a bookable room type at a hotel with no room records yet"
          },
          "sqFt": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "view": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "blurb": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "floor": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "score": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ]
          },
          "bedType": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "bookUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Type cards only: Roomza stay flow with this room type preselected"
          },
          "hotelId": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "location": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "photoUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "hotelName": {
            "type": "string"
          },
          "priceNote": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Shown in the price slot when pricePerNight is null, e.g. a prompt to provide dates"
          },
          "roomLabel": {
            "type": "string"
          },
          "roomNumber": {
            "type": "string"
          },
          "photoSource": {
            "anyOf": [
              {
                "enum": [
                  "room",
                  "hotel"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Whether photoUrl shows the actual room or is a hotel-level fallback"
          },
          "reviewCount": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "pricePerNight": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "description": "Nightly price for the requested dates; null when no dates were given or no live rate exists"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
show_rooms annotations
{
  "title": "Show rooms",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_trips — Your trips
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up your upcoming and past hotel bookings/trips on Roomza. Requires connecting your Roomza account.

get_my_trips input schema
{
  "type": "object",
  "properties": {}
}
get_my_trips output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "count",
    "upcoming",
    "past"
  ],
  "properties": {
    "past": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "bookingId",
          "hotelId",
          "hotelName",
          "hotelUrl",
          "city",
          "state",
          "checkIn",
          "checkOut",
          "nights",
          "confirmationNumber",
          "hotelConfirmationCode",
          "bookingPlatform",
          "status",
          "specialRequests"
        ],
        "properties": {
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkIn": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "hotelId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkOut": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "hotelUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "bookingId": {
            "type": "string",
            "description": "Pass to add_special_request"
          },
          "hotelName": {
            "type": "string"
          },
          "bookingPlatform": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "specialRequests": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "confirmationNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Booking reference. For stays booked through Roomza this is the supplier reference until the hotel issues its own number"
          },
          "hotelConfirmationCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The hotel's own confirmation number; null until the hotel issues it"
          }
        },
        "additionalProperties": false
      }
    },
    "count": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "upcoming": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "bookingId",
          "hotelId",
          "hotelName",
          "hotelUrl",
          "city",
          "state",
          "checkIn",
          "checkOut",
          "nights",
          "confirmationNumber",
          "hotelConfirmationCode",
          "bookingPlatform",
          "status",
          "specialRequests"
        ],
        "properties": {
          "city": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "state": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "nights": {
            "type": "integer",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkIn": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "hotelId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "checkOut": {
            "type": "string",
            "description": "YYYY-MM-DD"
          },
          "hotelUrl": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "bookingId": {
            "type": "string",
            "description": "Pass to add_special_request"
          },
          "hotelName": {
            "type": "string"
          },
          "bookingPlatform": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "specialRequests": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "confirmationNumber": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Booking reference. For stays booked through Roomza this is the supplier reference until the hotel issues its own number"
          },
          "hotelConfirmationCode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "The hotel's own confirmation number; null until the hotel issues it"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
get_my_trips annotations
{
  "title": "Your trips",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_preferences — Your preferences
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get your saved room preferences, standing requests, and loyalty accounts on Roomza. Requires connecting your Roomza account.

get_my_preferences input schema
{
  "type": "object",
  "properties": {}
}
get_my_preferences output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "found",
    "preferences",
    "standingRequests",
    "loyaltyPrograms",
    "travelCards"
  ],
  "properties": {
    "found": {
      "type": "boolean"
    },
    "preferences": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "bedType",
            "view",
            "bathtub",
            "balcony",
            "petFriendly",
            "highFloor",
            "awayFromElevator",
            "quietSide",
            "minStars",
            "maxPricePerNight",
            "upgradePreference"
          ],
          "properties": {
            "view": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "balcony": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "bathtub": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "bedType": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            },
            "minStars": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "highFloor": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "quietSide": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "petFriendly": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "awayFromElevator": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "null"
                }
              ]
            },
            "maxPricePerNight": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "null"
                }
              ]
            },
            "upgradePreference": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "travelCards": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "loyaltyPrograms": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "program",
          "tier"
        ],
        "properties": {
          "tier": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "program": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "standingRequests": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
get_my_preferences annotations
{
  "title": "Your preferences",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_special_request — Add a special request
Advertised by the server during the last successful anonymous check.

Add a special request to one of your bookings (e.g. extra pillows, late checkout, anniversary celebration). Requires connecting your Roomza account.

add_special_request input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "booking_id",
    "request"
  ],
  "properties": {
    "request": {
      "type": "string",
      "description": "The special request to add"
    },
    "booking_id": {
      "type": "string",
      "description": "The booking ID to add the request to (get this from get_my_trips)"
    }
  }
}
add_special_request output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ok",
    "message"
  ],
  "properties": {
    "ok": {
      "type": "boolean"
    },
    "message": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
add_special_request annotations
{
  "title": "Add a special request",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
secure_room — Price and lock a room
Advertised by the server during the last successful anonymous check.

Price and lock an exact room for specific dates with Room Lock. Returns the live price, cancellation policy, and a secure booking link with the room preselected. Requires connecting your Roomza account.

secure_room input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "room_id",
    "check_in",
    "check_out"
  ],
  "properties": {
    "guests": {
      "type": "integer",
      "maximum": 8,
      "minimum": 1,
      "description": "Guest count (default 2)"
    },
    "room_id": {
      "type": "string",
      "description": "Room UUID (from show_rooms or get_hotel_rooms)"
    },
    "check_in": {
      "type": "string",
      "description": "Check-in date, YYYY-MM-DD"
    },
    "check_out": {
      "type": "string",
      "description": "Check-out date, YYYY-MM-DD"
    }
  }
}
secure_room output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ok",
    "message",
    "roomId",
    "roomNumber",
    "hotelId",
    "hotelName",
    "checkIn",
    "checkOut",
    "nights",
    "guests",
    "currency",
    "bookable",
    "indicativeOnly",
    "rateName",
    "totalToday",
    "dueAtHotel",
    "publicRate",
    "cancellation",
    "trackRecord",
    "bookingUrl"
  ],
  "properties": {
    "ok": {
      "type": "boolean",
      "description": "false = the request could not be quoted; see message"
    },
    "guests": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "nights": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ]
    },
    "roomId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "checkIn": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "hotelId": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "message": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Set when ok is false"
    },
    "bookable": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "description": "true when a live bookable rate was found"
    },
    "checkOut": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "currency": {
      "type": "string"
    },
    "rateName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "hotelName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "bookingUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Secure checkout link with the room preselected; payment happens only there"
    },
    "dueAtHotel": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Additional amount due at the hotel, dollars"
    },
    "publicRate": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Hotel's public rate in dollars, for comparison"
    },
    "roomNumber": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "totalToday": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "description": "Total charged today in dollars"
    },
    "trackRecord": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Hotel's room-request honor track record"
    },
    "cancellation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "indicativeOnly": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "description": "true when the price is from public listings, not bookable"
    }
  },
  "additionalProperties": false
}
secure_room annotations
{
  "title": "Price and lock a room",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

2 advertised

Roomza Rooms

Advertised by the server during the last successful anonymous check.

Roomza Rooms URI
ui://roomza/room-cards

MIME type: text/html;profile=mcp-app

Roomza Hotels

Advertised by the server during the last successful anonymous check.

Roomza Hotels URI
ui://roomza/hotel-results

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
546 ms
95th percentile latency
546 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 546 ms · metadata changed · 12 tool(s), 2 resource(s), 0 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http roomza-mcp https://www.roomza.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add roomza-mcp --url https://www.roomza.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable roomza-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "roomza-mcp": {
      "url": "https://www.roomza.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "roomza-mcp": {
      "type": "streamableHttp",
      "url": "https://www.roomza.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start roomza-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "roomza-mcp": {
      "type": "http",
      "url": "https://www.roomza.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http roomza-mcp https://www.roomza.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://www.roomza.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "roomza-mcp": {
      "serverUrl": "https://www.roomza.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Roomza MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.