Skip to main content
Glama

Dorit

Search apartments

search_listings
Read-onlyIdempotent

Search Dorit's live apartment listings (rent or sale) in Israeli cities, localities and regional groups, narrowed to neighborhoods or named areas, with structured filters: price, rooms, size, floor, move-in month, property type, roommates and features; tags for attributes Dorit reads from the ads, such as parquet or a rear-facing flat; and keywords matched literally in the listing text for anything else. Returns compact listings with dorit.bot links, newest first by default, and what the place names resolved to. Use get_listing for one listing's full details and photos.

Input Schema

NameRequiredDescriptionDefault
pageNo
sortNonewest
tagsNoShort words, in any language, for an attribute of the flat no other field covers: a material, an orientation, noise, light, a view, a building detail ("parquet", "פרקט", "quiet", "דירה עורפית"). Each word resolves to one of the tags Dorit reads from listings' ad text, and from their photos once Dorit has reviewed them; a listing must carry every resolved tag. A tag is positive evidence only: a listing that has the attribute without its ad saying or showing it is not returned. The output names the tag each word resolved to, and lists a word that resolved to none in unmatched_tags without narrowing the search by it. Places, rooms, prices and the features above have their own fields.
citiesNoCities, localities or regional groups by name in Hebrew, English or Russian, or by slug ("תל אביב", "Tel Aviv", "tel-aviv", "עמק חפר"). A group covers every settlement in it. Omit when neighborhoods or search_area already say where.
contextYesExplain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as "a user", "the customer", or "an account". Example: "Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution."
max_sqmNo
min_sqmNo
featuresNotrue requires the feature; false excludes it; omitted does not filter. elevator=true means an elevator or a low floor (see max_floor_without_elevator).
keywordsNoLiteral terms for a wish neither tags nor another field covers, or for a word tags returned in unmatched_tags ("תקרה גבוהה", "high ceilings", "נוף לים"). A listing matches when its description contains any of them (case-insensitive substring). Most listings are written in Hebrew, so include the Hebrew term and its spelling variants. Matching is literal: a listing that has the feature but does not mention it is not returned. Places, rooms, prices and the features above have their own fields and do not belong here.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
max_floorNo
max_priceNo
max_roomsNo
min_floorNo
min_priceNo
min_roomsNoIsraeli room count (whole or half rooms; a living room counts).
page_sizeNoDefaults to the plan's page size (10 on trial, 25 on premium).
roommatesNoexclusive = only rooms in shared flats; excluded (default) = whole apartments only.
handover_byNoSale only: latest handover month, YYYY-MM.
neighborhoodsNoNeighborhoods, named areas of a city ("הצפון הישן", "מערב ראשון לציון"), landmarks or housing projects, by name, slug or the ids coverage and find_neighborhoods_near return. A neighborhood inside a listed city narrows that city to it; one in another city is added to the search.
property_typesNoAsset types: apartment, unit, garden, house, twofamily, penthouse, duplex. Omit for all.
entrance_monthsNoRent only: acceptable move-in months, YYYY-MM. A listing naming no month is treated as available now or within the month.
transaction_typeNorent (monthly ILS) or sale (total ILS). Sale is open in fewer cities.rent
exclude_neighborhoodsNo
max_floor_without_elevatorNoHighest acceptable floor when the building has no elevator; above it an elevator is required. Same as features.elevator=true with this walk-up limit.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / keywords / description
      Previous value: -"Terms for a wish no other field covers, such as a material, a view or a building detail (\"פרקט\", \"parquet\", \"נוף לים\"). A listing matches when its description contains any of them (case-insensitive substring). Most listings are written in Hebrew, so include the Hebrew term and its spelling variants. Matching is literal: a listing that has the feature but does not mention it is not returned. Places, rooms, prices and the features above have their own fields and do not belong here."New value: +"Literal terms for a wish neither tags nor another field covers, or for a word tags returned in unmatched_tags (\"תקרה גבוהה\", \"high ceilings\", \"נוף לים\"). A listing matches when its description contains any of them (case-insensitive substring). Most listings are written in Hebrew, so include the Hebrew term and its spelling variants. Matching is literal: a listing that has the feature but does not mention it is not returned. Places, rooms, prices and the features above have their own fields and do not belong here."
    • addedInput schema / properties / tags
      Added value: +{
      +  "description": "Short words, in any language, for an attribute of the flat no other field covers: a material, an orientation, noise, light, a view, a building detail (\"parquet\", \"פרקט\", \"quiet\", \"דירה עורפית\"). Each word resolves to one of the tags Dorit reads from listings' ad text, and from their photos once Dorit has reviewed them; a listing must carry every resolved tag. A tag is positive evidence only: a listing that has the attribute without its ad saying or showing it is not returned. The output names the tag each word resolved to, and lists a word that resolved to none in unmatched_tags without narrowing the search by it. Places, rooms, prices and the features above have their own fields.",
      +  "items": {
      +    "maxLength": 40,
      +    "minLength": 2,
      +    "pattern": "^[^,]+$",
      +    "type": "string"
      +  },
      +  "maxItems": 5,
      +  "type": "array"
      +}
  2. Changed4 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"",
      +  "type": "string"
      +}
    • addedInput schema / properties / llm_model
      Added value: +{
      +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "context",
      +  "llm_model"
      +]
  3. Changed1 schema field changed
    • addedInput schema / properties / keywords
      Added value: +{
      +  "description": "Terms for a wish no other field covers, such as a material, a view or a building detail (\"פרקט\", \"parquet\", \"נוף לים\"). A listing matches when its description contains any of them (case-insensitive substring). Most listings are written in Hebrew, so include the Hebrew term and its spelling variants. Matching is literal: a listing that has the feature but does not mention it is not returned. Places, rooms, prices and the features above have their own fields and do not belong here.",
      +  "items": {
      +    "maxLength": 40,
      +    "minLength": 2,
      +    "pattern": "^[^,]+$",
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower; the description still adds real context: results are compact, carry dorit.bot links, default to newest-first, and report what place names resolved to. It also discloses the positive-evidence-only semantics of tags and keywords (a listing lacking the term is not returned), which is behavior an agent cannot infer from 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?

A single front-loaded paragraph that leads with the verb, scope, and filter taxonomy before the sibling hand-off. It is dense but every clause carries information; mild redundancy appears where the tags explanation restates what the schema already says.

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 25-parameter, nested-object search tool with no output schema, the description covers the query model and sketches the return shape (compact listings, links, newest-first, resolved places). It omits pagination behavior and plan-based page-size limits, which the agent must learn from the schema instead.

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?

With 25 parameters and only 60% schema description coverage, the description earns credit for grouping the filter families and explaining the tag/keyword distinction with concrete examples ('parquet', 'rear-facing flat', Hebrew variants). It leaves several parameters (page, sort, price/floor ranges, property_types) entirely to the schema, so it does not fully close the coverage gap.

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 verb and resource ('Search Dorit's live apartment listings') and pins the scope: rent or sale, Israeli cities/localities/regional groups, narrowed to neighborhoods. It also enumerates the three filter families (structured filters, tags, keywords), so an agent can distinguish it from get_listing without reading either schema.

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

Usage Guidelines4/5

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

Explicitly routes to get_listing for a single listing's full details and photos, and implicitly separates tags (attributes Dorit reads) from keywords (literal text) so the agent knows which lever to pull. It does not mention the other siblings (coverage, find_neighborhoods_near) as discovery alternatives, so the routing picture is clear but not complete.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources