Skip to main content
Glama

Search hotels

mb_search_hotels
Read-onlyIdempotent

Find available hotels in a city for your dates, returning room prices for the whole stay and filters for stars, amenities, breakfast, and refundable rates.

Instructions

Hotels and stays with a free room in a city for the dates, with the cheapest room price for the whole stay.

price_toman is the cheapest room for all nights (one room, after discount); per_night_toman divides it by the nights; cheapest_room_sleeps is how many that room sleeps (often 1); photo is the cover image. Guest count does not change prices: pick a room that fits with mb_hotel_rooms(guests=...). Sold-out hotels are not listed (mb_city_hotels lists every hotel). Next: mb_hotel (reviews, location), mb_hotel_rooms (every room and exact price), mb_hotel_calendar (cheapest nights).

Input Schema

NameRequiredDescriptionDefault
cityYesCity slug from mb_find_place(mode='hotel'), e.g. 'mashhad' or 'kish'.
sortNoOrder; rating is the site's default.rating
limitNoMax hotels.
check_inYesCheck-in date YYYY-MM-DD, e.g. '2026-10-20'.
amenitiesNoOnly hotels with an amenity whose Persian title contains each word, e.g. ['استخر'] (pool, jacuzzi or sauna), ['پارکینگ'].
check_outYesCheck-out date YYYY-MM-DD, e.g. '2026-10-23' (1 to 30 nights).
min_starsNoOnly hotels with at least this many stars, e.g. 4.
hotel_typeNoKind of stay.any
breakfast_onlyNoOnly stays whose cheapest room includes breakfast.
refundable_onlyNoOnly refundable stays.
max_price_per_night_tomanNoHighest price per night for one room in Toman, e.g. 3000000.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed12 schema fields changedv0.3.0
    • removedInput schema / properties / amenities / title
      Removed value: -"Amenities"
    • removedInput schema / properties / breakfast_only / title
      Removed value: -"Breakfast Only"
    • removedInput schema / properties / check_in / title
      Removed value: -"Check In"
    • removedInput schema / properties / check_out / title
      Removed value: -"Check Out"
    • removedInput schema / properties / city / title
      Removed value: -"City"
    • removedInput schema / properties / hotel_type / title
      Removed value: -"Hotel Type"
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • removedInput schema / properties / max_price_per_night_toman / title
      Removed value: -"Max Price Per Night Toman"
    • removedInput schema / properties / min_stars / title
      Removed value: -"Min Stars"
    • removedInput schema / properties / refundable_only / title
      Removed value: -"Refundable Only"
    • removedInput schema / properties / sort / title
      Removed value: -"Sort"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "mb_search_hotelsDictOutput",
      -  "type": "object"
      -}New value: +null
  2. Changed2 schema fields changedv0.2.1
    • addedInput schema / properties / amenities
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "maxLength": 30,
      +        "minLength": 2,
      +        "type": "string"
      +      },
      +      "maxItems": 5,
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Only hotels with an amenity whose Persian title contains each word, e.g. ['استخر'] (pool, jacuzzi or sauna), ['پارکینگ'].",
      +  "title": "Amenities"
      +}
    • addedInput schema / properties / breakfast_only
      Added value: +{
      +  "default": false,
      +  "description": "Only stays whose cheapest room includes breakfast.",
      +  "title": "Breakfast Only",
      +  "type": "boolean"
      +}
  3. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world and non-destructive behavior, so the bar is lower. The description adds genuinely useful traits beyond them: that guest count does not alter prices, that sold-out properties are dropped from results, and what each returned price field means. Nothing is contradicted, though pagination/limit interplay and result ordering semantics are left to the schema.

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?

Purpose is front-loaded in the first sentence, followed by output-field definitions and then a compact routing block. Every section carries information, though the middle field-by-field paragraph reads as a run-on list and could be tightened.

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?

With 11 parameters and no output schema, the description carries an unusual burden, and it does supply the meaning of the key returned price/occupancy fields plus the consumer chain. It still omits the overall result shape (e.g. hotel identity fields), limit/pagination behavior, and sort interaction, which an agent must infer.

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 the schema already documents all 11 parameters, which sets the baseline at 3. The description's extra detail (price_toman, per_night_toman, cheapest_room_sleeps, photo) describes returned fields rather than parameter meaning, and adds only the guest-count invariant that no parameter here controls.

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?

States a specific resource (hotels/stays) with a clear scope: availability for the given dates plus the cheapest whole-stay price. It explicitly contrasts itself with the sibling mb_city_hotels by noting sold-out hotels are excluded here, so an agent can distinguish the two without opening a 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?

Gives routing conditions rather than just context: guest count doesn't affect price so room fitting belongs to mb_hotel_rooms(guests=...), and sold-out filtering is contrasted with mb_city_hotels. It also names the natural follow-up chain (mb_hotel, mb_hotel_rooms, mb_hotel_calendar) with the reason for each.

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