Skip to main content
Glama

Search stays

ot_search_rooms
Read-onlyIdempotent

Search Otaghak villas, cottages, apartments, and eco-lodges by city, province, or collection; filter by dates, guests, price, and amenities to find available rooms and stay prices.

Instructions

Search Otaghak stays (villas, cottages, apartments, eco-lodges) in a city, province or collection.

With check_in/check_out every room is available on those dates and carries the stay price: price_per_night (average after discount) and stay_total for guests (incl. extra-guest charges; estimate, can be a few Toman off). Without dates prices are undated starting prices. Get slugs from ot_find_place, filter codes from ot_search_filters. Next: ot_room for details, ot_price_quote for the exact total, ot_room_calendar for other dates.

Input Schema

NameRequiredDescriptionDefault
cityNoCity slugs from ot_find_place, e.g. ['ramsar'] (any of them).
nameNoRoom name words, e.g. 'نرگس'.
pageNoZero-based page.
sortNoOrder; with dates, cheapest re-sorts each page by stay_total.recommended
limitNoRooms per page.
primeNoOnly 'prime' rooms.
guestsNoGuests, e.g. 4; smaller rooms are left out.
filtersNoCodes from ot_search_filters exactly as returned, e.g. ['ruleValues=10101|10103|10102'] (pets). All must match.
instantNoOnly instant booking.
bedroomsNoMinimum bedrooms, e.g. 2.
check_inNoArrival day YYYY-MM-DD, e.g. '2026-10-20' (not past, in the open calendar).
city_tagNoCity theme slug with `city`, e.g. 'cottage' (ot_travel_guide).
provinceNoProvince slug, e.g. 'mazandaran'.
check_outNoDeparture day YYYY-MM-DD, e.g. '2026-10-23' (max 20 nights).
max_priceNoMax nightly Toman after discount, e.g. 8000000.
min_priceNoMin nightly Toman after discount, e.g. 3000000.
collectionNoCollection code from ot_destinations, e.g. 'beach', 'villapool'.
min_ratingNoMinimum rating.
rent_typesNoRent type.
room_typesNoRoom type ids from ot_search_filters, e.g. [138] villa.
district_idNoLandmark district id from ot_search_filters, with `city`, e.g. 230.
include_nearbyNoAlso rooms around the city.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed48 schema fields changedv0.2.0
    • removedInput schema / properties / bedrooms / title
      Removed value: -"Bedrooms"
    • changedInput schema / properties / check_in / description
      Previous value: -"Arrival day, Gregorian YYYY-MM-DD, e.g. '2026-10-20'. Not in the past; calendars open only to the end of next Jalali month."New value: +"Arrival day YYYY-MM-DD, e.g. '2026-10-20' (not past, in the open calendar)."
    • removedInput schema / properties / check_in / title
      Removed value: -"Check In"
    • changedInput schema / properties / check_out / description
      Previous value: -"Departure day, Gregorian YYYY-MM-DD, e.g. '2026-10-23' (3 nights). At most 20 nights after check_in."New value: +"Departure day YYYY-MM-DD, e.g. '2026-10-23' (max 20 nights)."
    • removedInput schema / properties / check_out / title
      Removed value: -"Check Out"
    • changedInput schema / properties / city / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "description": "Slug (letters, digits, -).",
      -      "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      -      "type": "string"
      -    },
      -    "maxItems": 5,
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      +      "type": "string"
      +    },
      +    "maxItems": 5,
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / city / description
      Previous value: -"City slugs from ot_find_place, e.g. ['ramsar'] or ['ramsar', 'chalus'] (any of them)."New value: +"City slugs from ot_find_place, e.g. ['ramsar'] (any of them)."
    • removedInput schema / properties / city / title
      Removed value: -"City"
    • changedInput schema / properties / city_tag / anyOf
      Previous value: -[
      -  {
      -    "description": "Slug (letters, digits, -).",
      -    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / city_tag / description
      Previous value: -"City theme page slug with `city`, e.g. 'beach' or 'cottage' (from ot_travel_guide related pages)."New value: +"City theme slug with `city`, e.g. 'cottage' (ot_travel_guide)."
    • removedInput schema / properties / city_tag / title
      Removed value: -"City Tag"
    • changedInput schema / properties / collection / anyOf
      Previous value: -[
      -  {
      -    "description": "Slug (letters, digits, -).",
      -    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / collection / description
      Previous value: -"Collection (landing) code from ot_destinations, e.g. 'beach', 'jungle', 'villapool', 'discounted', 'lastsecond'."New value: +"Collection code from ot_destinations, e.g. 'beach', 'villapool'."
    • removedInput schema / properties / collection / title
      Removed value: -"Collection"
    • changedInput schema / properties / district_id / description
      Previous value: -"District id (near a landmark) from ot_search_filters, used with `city`, e.g. 230."New value: +"Landmark district id from ot_search_filters, with `city`, e.g. 230."
    • removedInput schema / properties / district_id / title
      Removed value: -"District Id"
    • changedInput schema / properties / filters / description
      Previous value: -"Amenity, rule, region and feature codes from ot_search_filters, exactly as returned, e.g. ['attributeValues=130202|130201|130101|130102|130103|AGG1'] (pool) or ['ruleValues=10101|10103|10102'] (pets). All must match."New value: +"Codes from ot_search_filters exactly as returned, e.g. ['ruleValues=10101|10103|10102'] (pets). All must match."
    • removedInput schema / properties / filters / title
      Removed value: -"Filters"
    • changedInput schema / properties / guests / description
      Previous value: -"Number of guests, e.g. 4. Rooms that cannot take that many are left out."New value: +"Guests, e.g. 4; smaller rooms are left out."
    • removedInput schema / properties / guests / title
      Removed value: -"Guests"
    • changedInput schema / properties / include_nearby / description
      Previous value: -"Also include rooms around the city."New value: +"Also rooms around the city."
    • removedInput schema / properties / include_nearby / title
      Removed value: -"Include Nearby"
    • changedInput schema / properties / instant / description
      Previous value: -"Only instant booking (no host approval)."New value: +"Only instant booking."
    • removedInput schema / properties / instant / title
      Removed value: -"Instant"
    • changedInput schema / properties / limit / default
      Previous value: -15New value: +10
    • removedInput schema / properties / limit / title
      Removed value: -"Limit"
    • changedInput schema / properties / max_price / description
      Previous value: -"Highest nightly price in Toman (after discount), e.g. 8000000."New value: +"Max nightly Toman after discount, e.g. 8000000."
    • removedInput schema / properties / max_price / title
      Removed value: -"Max Price"
    • changedInput schema / properties / min_price / description
      Previous value: -"Lowest nightly price in Toman (after discount), e.g. 3000000."New value: +"Min nightly Toman after discount, e.g. 3000000."
    • removedInput schema / properties / min_price / title
      Removed value: -"Min Price"
    • changedInput schema / properties / min_rating / description
      Previous value: -"Minimum rating: 3, 4 or 5."New value: +"Minimum rating."
    • removedInput schema / properties / min_rating / title
      Removed value: -"Min Rating"
    • changedInput schema / properties / name / description
      Previous value: -"Words of the room name, e.g. 'نرگس'."New value: +"Room name words, e.g. 'نرگس'."
    • removedInput schema / properties / name / title
      Removed value: -"Name"
    • changedInput schema / properties / page / description
      Previous value: -"Zero-based page number."New value: +"Zero-based page."
    • removedInput schema / properties / page / title
      Removed value: -"Page"
    • changedInput schema / properties / prime / description
      Previous value: -"Only 'prime' (premium) rooms."New value: +"Only 'prime' rooms."
    • removedInput schema / properties / prime / title
      Removed value: -"Prime"
    • changedInput schema / properties / province / anyOf
      Previous value: -[
      -  {
      -    "description": "Slug (letters, digits, -).",
      -    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "pattern": "^[A-Za-z][A-Za-z0-9-]{1,60}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / province / title
      Removed value: -"Province"
    • changedInput schema / properties / rent_types / description
      Previous value: -"Rent type: whole_place (دربست), semi_private, shared."New value: +"Rent type."
    • removedInput schema / properties / rent_types / title
      Removed value: -"Rent Types"
    • changedInput schema / properties / room_types / description
      Previous value: -"Room type ids from ot_search_filters, e.g. [138] villa, [154] cottage, [137] apartment."New value: +"Room type ids from ot_search_filters, e.g. [138] villa."
    • removedInput schema / properties / room_types / title
      Removed value: -"Room Types"
    • changedInput schema / properties / sort / description
      Previous value: -"Order. cheapest/most_expensive use the nightly price after discount; with dates, cheapest then re-sorts each page by stay_total (extra-guest charges included)."New value: +"Order; with dates, cheapest re-sorts each page by stay_total."
    • removedInput schema / properties / sort / title
      Removed value: -"Sort"
    • removedInput schema / title
      Removed value: -"ot_search_roomsArguments"
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": true,
      -  "title": "ot_search_roomsDictOutput",
      -  "type": "object"
      -}New value: +null
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered. The description adds real behavioral context beyond that: with dates every room is available and priced (price_per_night as average after discount, stay_total including extra-guest charges), and it honestly caveats that the total is an estimate that 'can be a few Toman off'. It does not describe pagination behavior, hence not a 5.

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 short paragraphs, front-loaded with what the tool does, then the pricing semantics, then the cross-tool routing. No filler sentences; every clause carries either scope, behavior, or navigation information.

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 22-parameter, zero-required search tool with no output schema, the description covers the essential ambiguities: date-dependent pricing, guest-based filtering, and which sibling to call for detail or exact totals. It stops short of describing the returned result shape (list vs. envelopes, pagination signals), which a first-time caller would still have to infer.

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 description coverage is 100%, so baseline is 3. The description goes beyond the schema by explaining where parameter values come from (city slugs via ot_find_place, filters/room_types/district_id via ot_search_filters, collection via ot_destinations) and by explaining how dates change the meaning of returned prices for the guests parameter.

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

Purpose5/5

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

The first sentence names a specific verb and resource ('Search Otaghak stays') and enumerates the scope (villas, cottages, apartments, eco-lodges) across city, province or collection. It is immediately distinguishable from sibling tools like ot_room (details) and ot_find_place (slug lookup).

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 prerequisites are given ('Get slugs from ot_find_place, filter codes from ot_search_filters') and explicit follow-ups are routed ('Next: ot_room for details, ot_price_quote for the exact total, ot_room_calendar for other dates'). It also states the condition that changes behavior: providing check_in/check_out vs. omitting them.

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