Skip to main content
Glama

Evlek — Northern Cyprus Property MCP Server

Search Northern Cyprus property listings

search_listings
Read-onlyIdempotent

Use this when the user wants to find or see property listings; results are shown with real photos in the Evlek widget. Search live Evlek property listings for sale and long-term rent in Northern Cyprus (KKTC/TRNC; prices in GBP unless a currency is given; 2+1 means bedrooms 2) with structured filters: transaction, city, district, property type, bedrooms, price, areas, amenities, nearby university. Pass the user's language as locale (tr|en|ru|de|ar): the text, amenity names, number formats and links follow it. Returns at most 10 listings per call, each as one readable line (type, place, price, rooms, area, a deterministic sentence, data notes, canonical link) plus a structured card; continue with the nextCursor of a group. Without transaction, listings for sale and for rent come as two separate groups, each with its own cursor that is only valid together with that group's transaction. Place names in any language are resolved; an unknown place returns suggestions instead of results. An amenity that cannot be filtered on is reported as not applied. For one listing use get_listing. Returns advertised asking-price and listing facts only: not a valuation, verification of property-specific claims, forecast, ranking or recommendation.

Input Schema

NameRequiredDescriptionDefault
bboxNoMap rectangle in Northern Cyprus, WGS84 degrees: {west, south, east, north}. For "this map area" only; otherwise use city and district.
cityNoCity names in any language, e.g. ["Girne"] or ["Kyrenia", "Famagusta"]; ANY match counts. Towns and villages go in `district`.
sortNoOrder, default 'newest'. price-low = cheapest first, price-high = dearest first (both need transaction); others: see schema description.newest
limitNoNumber of listings to return, 1-10 (default 8, maximum 10). Ask for more with `cursor`, never with a larger limit.
cursorNoPass the previous `nextCursor` with the SAME filters, sort and transaction. Opaque: never build or edit it. Requires `transaction`.
localeNoLanguage of the response text, feature names, number formats and links: tr, en, ru, de, ar (default en). Pass the language the user is writing in.en
areaMaxNoMaximum closed (built, indoor) area in m², inclusive.
areaMinNoMinimum CLOSED (built, indoor) area in m², inclusive. For plots and gardens use landAreaMin instead.
bedroomsNoBedrooms as an object: {"exact": 3}, {"min": 2} or {"min": 2, "max": 4}; integers 0-20. Use exact for "a 3-bedroom".
currencyNoCurrency of priceMin and priceMax: GBP (default), EUR, USD or TRY. Converted to GBP on the server at the current Evlek rate.GBP
districtNoDistricts, towns or villages in any language, e.g. ["Alsancak"]; ANY match counts. With city ["Girne"], ["Merkez"] means Girne Merkez.
featuresNoAmenities the listing must have (ALL must match), any language, e.g. ["pool", "sea view", "elevator"]. Others are reported as not filterable.
priceMaxNoMaximum price, inclusive, in `currency` ("under 300000" → 300000): the asking price for sale, the monthly rent for rent. Requires `transaction`.
priceMinNoMinimum price, inclusive, in `currency`: the asking price for sale, the monthly rent for rent. Requires `transaction`.
furnishedNotrue = furnished listings only, false = unfurnished only. Omit for both.
noDepositNoRentals only: true = no security deposit is required.
landAreaMaxNoMaximum plot (land) area in m², inclusive.
landAreaMinNoMinimum plot (land) area in m², inclusive: villas, houses, bungalows and land.
transactionNo'sale' or 'rent' (long-term). REQUIRED with priceMin, priceMax, a price sort or cursor. Omit only to browse both together.
availableNowNoRentals only: true = can be moved into immediately. Without `transaction` the search is limited to rent.
bathroomsMinNoMinimum number of bathrooms, inclusive (1-20).
contractTypeNoContract type. Rentals: 'monthly', 'semester' or 'yearly'. Sales: 'cash' or 'installment'. Must fit `transaction`.
propertyTypeNoProperty types, ANY match: single types or groups (house, land, commercial), e.g. ["apartment", "penthouse"] or ["house"].
billsIncludedNoRentals only: true = the rent includes utility bills. Without `transaction` the search is limited to rent.
nearUniversityNoListings close to one university, e.g. {"code": "NEU", "maxMeters": 1000}. Useful for student housing.

Output Schema

NameRequiredDescriptionDefault
codeNoPresent on a soft result (INVALID_LOCATION, OUT_OF_SCOPE, FX_UNAVAILABLE, ...).
refsNo
shownNoListings in this response.
splitNo
totalYesPublic listings matching the filters, summed over the groups.
groupsNoOne group per transaction: two (sale, rent) when no transaction was given.
issuesNo
localeNo
fxRatesNo
listingsNo
topMatchNo
warningsNo
dataSourceNo
priceRangeNo
totalMatchedNoThe same number as `total` (the v2 name).
contentLocaleNoThe language the listing pages (links, descriptions) resolved to: `locale` when every shown listing has a page in it, the fallback (Turkish) when none does, null when they differ (each card has its own).
appliedFiltersNoWhat the database was really asked, in the query parameter names (place names as resolved). Only the filters that were applied are present.
localeFallbackNoTrue when a listing link or description is in another language because it has no translation in `locale`.
unappliedFiltersNoConstraints that were NOT applied (an amenity that cannot be filtered on, text the parser could not read). The listings shown may not honour them.
impliedTransactionNoPresent when no transaction was sent and the search was limited to one because of the filters.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / listings / items / properties / areaLabel
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / areaText
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / listings / items / properties / areaBasis
      Added value: +{
      +  "enum": [
      +    "net",
      +    "gross",
      +    null
      +  ]
      +}
  3. Changed7 schema fields changed
    • changedInput schema / properties / limit / default
      Previous value: -10New value: +8
    • changedInput schema / properties / limit / description
      Previous value: -"Number of listings to return, 1-10 (default 10, maximum 10). Ask for more with `cursor`, never with a larger limit."New value: +"Number of listings to return, 1-10 (default 8, maximum 10). Ask for more with `cursor`, never with a larger limit."
    • addedOutput schema / properties / listings / items / properties / matchedFeatures
      Added value: +{
      +  "description": "The requested amenities this listing has, in request order (canonical keys); empty when none were requested.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / priceRange
      Added value: +{
      +  "properties": {
      +    "currency": {
      +      "type": "string"
      +    },
      +    "max": {
      +      "type": "number"
      +    },
      +    "min": {
      +      "type": "number"
      +    },
      +    "period": {
      +      "type": "string"
      +    },
      +    "scope": {
      +      "type": "string"
      +    }
      +  },
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / refs
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / topMatch
      Added value: +{
      +  "properties": {
      +    "district": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "priceLabel": {
      +      "type": "string"
      +    },
      +    "ref": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "listings",
      -  "total"
      -]New value: +[
      +  "total"
      +]
  4. Changed143 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / description
      Added value: +"Structured search over active Evlek property listings in Northern Cyprus (sale and long-term rent; holiday lets are not offered). Every field is optional; a listing must match ALL the fields you set. `transaction` is required when you filter or sort by price or page with `cursor`. At most 10 listings are returned per call; continue with `cursor`. Sort orders: newest = latest first (default), price-low = cheapest first, price-high = most expensive first, price-per-sqm-asc = lowest price per m², area-large / area-small = largest / smallest closed area, nearest-uni = closest to a university. Pass `locale` in the language the user writes in."
    • addedInput schema / properties / areaMax
      Added value: +{
      +  "description": "Maximum closed (built, indoor) area in m², inclusive.",
      +  "maximum": 10000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / areaMin
      Added value: +{
      +  "description": "Minimum CLOSED (built, indoor) area in m², inclusive. For plots and gardens use landAreaMin instead.",
      +  "maximum": 10000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / availableNow
      Added value: +{
      +  "description": "Rentals only: true = can be moved into immediately. Without `transaction` the search is limited to rent.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / bathroomsMin
      Added value: +{
      +  "description": "Minimum number of bathrooms, inclusive (1-20).",
      +  "maximum": 20,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / bbox
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Map rectangle in Northern Cyprus, WGS84 degrees: {west, south, east, north}. For \"this map area\" only; otherwise use city and district.",
      +  "properties": {
      +    "east": {
      +      "description": "Right edge, longitude in decimal degrees. Must be larger than west.",
      +      "maximum": 34.65,
      +      "minimum": 32.7,
      +      "type": "number"
      +    },
      +    "north": {
      +      "description": "Top edge, latitude in decimal degrees. Must be larger than south.",
      +      "maximum": 35.78,
      +      "minimum": 34.95,
      +      "type": "number"
      +    },
      +    "south": {
      +      "description": "Bottom edge, latitude in decimal degrees (34.95 to 35.78). Must be smaller than north.",
      +      "maximum": 35.78,
      +      "minimum": 34.95,
      +      "type": "number"
      +    },
      +    "west": {
      +      "description": "Left edge, longitude in decimal degrees (32.7 to 34.65). Must be smaller than east.",
      +      "maximum": 34.65,
      +      "minimum": 32.7,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "west",
      +    "south",
      +    "east",
      +    "north"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / bedrooms / additionalProperties
      Added value: +false
    • changedInput schema / properties / bedrooms / description
      Previous value: -"Bedroom count (integer 0-10)"New value: +"Bedrooms as an object: {\"exact\": 3}, {\"min\": 2} or {\"min\": 2, \"max\": 4}; integers 0-20. Use exact for \"a 3-bedroom\"."
    • removedInput schema / properties / bedrooms / maximum
      Removed value: -10
    • removedInput schema / properties / bedrooms / minimum
      Removed value: -0
    • addedInput schema / properties / bedrooms / properties
      Added value: +{
      +  "exact": {
      +    "description": "Exact number of bedrooms; 0 means a studio. Cannot be combined with min or max.",
      +    "maximum": 20,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "max": {
      +    "description": "Maximum number of bedrooms, inclusive.",
      +    "maximum": 20,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "min": {
      +    "description": "Minimum number of bedrooms, inclusive.",
      +    "maximum": 20,
      +    "minimum": 0,
      +    "type": "integer"
      +  }
      +}
    • changedInput schema / properties / bedrooms / type
      Previous value: -"number"New value: +"object"
    • addedInput schema / properties / billsIncluded
      Added value: +{
      +  "description": "Rentals only: true = the rent includes utility bills. Without `transaction` the search is limited to rent.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / city / description
      Previous value: -"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."New value: +"City names in any language, e.g. [\"Girne\"] or [\"Kyrenia\", \"Famagusta\"]; ANY match counts. Towns and villages go in `district`."
    • addedInput schema / properties / city / items
      Added value: +{
      +  "maxLength": 60,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / city / maxItems
      Added value: +10
    • changedInput schema / properties / city / type
      Previous value: -"string"New value: +"array"
    • addedInput schema / properties / contractType
      Added value: +{
      +  "description": "Contract type. Rentals: 'monthly', 'semester' or 'yearly'. Sales: 'cash' or 'installment'. Must fit `transaction`.",
      +  "enum": [
      +    "monthly",
      +    "semester",
      +    "yearly",
      +    "cash",
      +    "installment"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / currency
      Added value: +{
      +  "default": "GBP",
      +  "description": "Currency of priceMin and priceMax: GBP (default), EUR, USD or TRY. Converted to GBP on the server at the current Evlek rate.",
      +  "enum": [
      +    "GBP",
      +    "EUR",
      +    "USD",
      +    "TRY"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Pass the previous `nextCursor` with the SAME filters, sort and transaction. Opaque: never build or edit it. Requires `transaction`.",
      +  "maxLength": 1024,
      +  "minLength": 16,
      +  "pattern": "^[A-Za-z0-9_-]+$",
      +  "type": "string"
      +}
    • changedInput schema / properties / district / description
      Previous value: -"District name (e.g. Alsancak), matched accent/case-insensitively against the active-listing district list"New value: +"Districts, towns or villages in any language, e.g. [\"Alsancak\"]; ANY match counts. With city [\"Girne\"], [\"Merkez\"] means Girne Merkez."
    • addedInput schema / properties / district / items
      Added value: +{
      +  "maxLength": 60,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / district / maxItems
      Added value: +20
    • changedInput schema / properties / district / type
      Previous value: -"string"New value: +"array"
    • removedInput schema / properties / elevator
      Removed value: -{
      -  "description": "Only listings with an elevator",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / features
      Added value: +{
      +  "description": "Amenities the listing must have (ALL must match), any language, e.g. [\"pool\", \"sea view\", \"elevator\"]. Others are reported as not filterable.",
      +  "items": {
      +    "description": "An amenity name in any language. Only these can be filtered: Furnished, Fridge, Washing Machine, Dishwasher, Air Conditioning, Television, Bed, Desk, Wi-Fi, Smart Home, Central Heating, Garden, Terrace, Parking, Pool, Elevator, Security/CCTV, Generator, Sea View, Bills Included, Available Now. Any other amenity is reported as not filterable.",
      +    "maxLength": 60,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / furnished / description
      Previous value: -"Only furnished listings"New value: +"true = furnished listings only, false = unfurnished only. Omit for both."
    • removedInput schema / properties / garden
      Removed value: -{
      -  "description": "Only listings with a garden",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / landAreaMax
      Added value: +{
      +  "description": "Maximum plot (land) area in m², inclusive.",
      +  "maximum": 10000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / landAreaMin
      Added value: +{
      +  "description": "Minimum plot (land) area in m², inclusive: villas, houses, bungalows and land.",
      +  "maximum": 10000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / limit / default
      Added value: +10
    • changedInput schema / properties / limit / description
      Previous value: -"Result count (integer 1-10, default 5)"New value: +"Number of listings to return, 1-10 (default 10, maximum 10). Ask for more with `cursor`, never with a larger limit."
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / locale
      Added value: +{
      +  "default": "en",
      +  "description": "Language of the response text, feature names, number formats and links: tr, en, ru, de, ar (default en). Pass the language the user is writing in.",
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / maxPrice
      Removed value: -{
      -  "description": "Max price in GBP",
      -  "type": "number"
      -}
    • removedInput schema / properties / minPrice
      Removed value: -{
      -  "description": "Min price in GBP",
      -  "type": "number"
      -}
    • addedInput schema / properties / nearUniversity
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Listings close to one university, e.g. {\"code\": \"NEU\", \"maxMeters\": 1000}. Useful for student housing.",
      +  "properties": {
      +    "code": {
      +      "description": "University code: NEU = Near East University, DAU = Eastern Mediterranean University, GAU = Girne American University, CIU = Cyprus International University, EUL = European University of Lefke, BAU = BAU Cyprus University, AKU = University of Mediterranean Karpasia.",
      +      "enum": [
      +        "NEU",
      +        "DAU",
      +        "GAU",
      +        "CIU",
      +        "EUL",
      +        "BAU",
      +        "AKU"
      +      ],
      +      "type": "string"
      +    },
      +    "maxMeters": {
      +      "default": 2000,
      +      "description": "Maximum distance to that university in metres, at least 250 (default 2000; the site offers 500, 1000 and 2000). Listing distances are rounded up to 250 m steps.",
      +      "maximum": 50000,
      +      "minimum": 250,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "code"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / noDeposit
      Added value: +{
      +  "description": "Rentals only: true = no security deposit is required.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / offset
      Removed value: -{
      -  "description": "Rows to skip (pagination, default 0)",
      -  "minimum": 0,
      -  "type": "number"
      -}
    • removedInput schema / properties / parking
      Removed value: -{
      -  "description": "Only listings with parking",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / pool
      Removed value: -{
      -  "description": "Only listings with a pool",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / priceMax
      Added value: +{
      +  "description": "Maximum price, inclusive, in `currency` (\"under 300000\" → 300000): the asking price for sale, the monthly rent for rent. Requires `transaction`.",
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / priceMin
      Added value: +{
      +  "description": "Minimum price, inclusive, in `currency`: the asking price for sale, the monthly rent for rent. Requires `transaction`.",
      +  "maximum": 1000000000000,
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / propertyType / description
      Previous value: -"Raw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial"New value: +"Property types, ANY match: single types or groups (house, land, commercial), e.g. [\"apartment\", \"penthouse\"] or [\"house\"]."
    • removedInput schema / properties / propertyType / enum
      Removed value: -[
      -  "apartment",
      -  "residence",
      -  "villa",
      -  "twin",
      -  "detached",
      -  "bungalow",
      -  "penthouse",
      -  "studio",
      -  "duplex",
      -  "shop",
      -  "office",
      -  "warehouse",
      -  "whole_building",
      -  "hotel",
      -  "residential_land",
      -  "commercial_land",
      -  "farmland",
      -  "house",
      -  "land",
      -  "commercial"
      -]
    • addedInput schema / properties / propertyType / items
      Added value: +{
      +  "description": "A property type, or a group: house = villa, detached, bungalow; land = residential_land, commercial_land, farmland; commercial = shop, office, warehouse, whole_building, hotel.",
      +  "enum": [
      +    "apartment",
      +    "residence",
      +    "villa",
      +    "twin",
      +    "detached",
      +    "bungalow",
      +    "penthouse",
      +    "studio",
      +    "duplex",
      +    "shop",
      +    "office",
      +    "warehouse",
      +    "whole_building",
      +    "hotel",
      +    "residential_land",
      +    "commercial_land",
      +    "farmland",
      +    "house",
      +    "land",
      +    "commercial"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / propertyType / maxItems
      Added value: +12
    • changedInput schema / properties / propertyType / type
      Previous value: -"string"New value: +"array"
    • removedInput schema / properties / query
      Removed value: -{
      -  "description": "Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict",
      -  "type": "string"
      -}
    • removedInput schema / properties / seaView
      Removed value: -{
      -  "description": "Only listings flagged sea_view",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / sort
      Added value: +{
      +  "default": "newest",
      +  "description": "Order, default 'newest'. price-low = cheapest first, price-high = dearest first (both need transaction); others: see schema description.",
      +  "enum": [
      +    "newest",
      +    "price-low",
      +    "price-high",
      +    "price-per-sqm-asc",
      +    "area-large",
      +    "area-small",
      +    "nearest-uni"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / sortBy
      Removed value: -{
      -  "description": "Sort order (default: newest)",
      -  "enum": [
      -    "newest",
      -    "price_asc",
      -    "price_desc",
      -    "area_desc",
      -    "price_per_sqm_asc"
      -  ],
      -  "type": "string"
      -}
    • addedInput schema / properties / transaction
      Added value: +{
      +  "description": "'sale' or 'rent' (long-term). REQUIRED with priceMin, priceMax, a price sort or cursor. Omit only to browse both together.",
      +  "enum": [
      +    "sale",
      +    "rent"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / type
      Removed value: -{
      -  "description": "Listing type",
      -  "enum": [
      -    "sale",
      -    "rent"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / appliedFilters / description
      Added value: +"What the database was really asked, in the query parameter names (place names as resolved). Only the filters that were applied are present."
    • addedOutput schema / properties / appliedFilters / properties / areaMax
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / areaMin
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / availableNow
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / appliedFilters / properties / bathroomsMin
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / bbox
      Added value: +{
      +  "properties": {
      +    "east": {
      +      "type": "number"
      +    },
      +    "north": {
      +      "type": "number"
      +    },
      +    "south": {
      +      "type": "number"
      +    },
      +    "west": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / appliedFilters / properties / bedrooms / properties
      Added value: +{
      +  "exact": {
      +    "type": "number"
      +  },
      +  "max": {
      +    "type": "number"
      +  },
      +  "min": {
      +    "type": "number"
      +  }
      +}
    • changedOutput schema / properties / appliedFilters / properties / bedrooms / type
      Previous value: -"number"New value: +"object"
    • addedOutput schema / properties / appliedFilters / properties / billsIncluded
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / appliedFilters / properties / city / items
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / appliedFilters / properties / city / type
      Previous value: -"string"New value: +"array"
    • addedOutput schema / properties / appliedFilters / properties / contractType
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / appliedFilters / properties / currency
      Added value: +{
      +  "enum": [
      +    "GBP",
      +    "EUR",
      +    "USD",
      +    "TRY"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / appliedFilters / properties / district / items
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / appliedFilters / properties / district / type
      Previous value: -"string"New value: +"array"
    • removedOutput schema / properties / appliedFilters / properties / elevator
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / appliedFilters / properties / features
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / appliedFilters / properties / garden
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / appliedFilters / properties / landAreaMax
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / landAreaMin
      Added value: +{
      +  "type": "number"
      +}
    • removedOutput schema / properties / appliedFilters / properties / maxPrice
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / appliedFilters / properties / minPrice
      Removed value: -{
      -  "type": "number"
      -}
    • addedOutput schema / properties / appliedFilters / properties / nearUniversity
      Added value: +{
      +  "properties": {
      +    "code": {
      +      "type": "string"
      +    },
      +    "maxMeters": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / appliedFilters / properties / noDeposit
      Added value: +{
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / appliedFilters / properties / parking
      Removed value: -{
      -  "type": "boolean"
      -}
    • removedOutput schema / properties / appliedFilters / properties / pool
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / appliedFilters / properties / priceMax
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / priceMin
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / appliedFilters / properties / propertyType / items
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / appliedFilters / properties / propertyType / type
      Previous value: -"string"New value: +"array"
    • removedOutput schema / properties / appliedFilters / properties / seaView
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / appliedFilters / properties / sort
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / appliedFilters / properties / transaction
      Added value: +{
      +  "enum": [
      +    "sale",
      +    "rent"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / appliedFilters / properties / type
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / code
      Added value: +{
      +  "description": "Present on a soft result (INVALID_LOCATION, OUT_OF_SCOPE, FX_UNAVAILABLE, ...).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / contentLocale
      Added value: +{
      +  "description": "The language the listing pages (links, descriptions) resolved to: `locale` when every shown listing has a page in it, the fallback (Turkish) when none does, null when they differ (each card has its own).",
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • removedOutput schema / properties / count
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / factType
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / fxRates / properties / isFallback / enum
      Added value: +[
      +  false
      +]
    • changedOutput schema / properties / fxRates / properties / source / enum
      Previous value: -[
      -  "database",
      -  "fallback"
      -]New value: +[
      +  "database"
      +]
    • addedOutput schema / properties / groups
      Added value: +{
      +  "description": "One group per transaction: two (sale, rent) when no transaction was given.",
      +  "items": {
      +    "properties": {
      +      "nextCursor": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "pageable": {
      +        "type": "boolean"
      +      },
      +      "shown": {
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      },
      +      "transaction": {
      +        "enum": [
      +          "sale",
      +          "rent"
      +        ],
      +        "type": "string"
      +      },
      +      "transactionImplied": {
      +        "description": "True when the transaction was implied by the filters (a rental-only fact), not sent: the cursor then carries it.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "transaction",
      +      "total",
      +      "shown",
      +      "nextCursor",
      +      "pageable"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / impliedTransaction
      Added value: +{
      +  "description": "Present when no transaction was sent and the search was limited to one because of the filters.",
      +  "properties": {
      +    "because": {
      +      "type": "string"
      +    },
      +    "value": {
      +      "enum": [
      +        "sale",
      +        "rent"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "value",
      +    "because"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / isEstimate
      Removed value: -{
      -  "type": "boolean"
      -}
    • addedOutput schema / properties / issues
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "allowedValues": {
      +        "items": {
      +          "type": [
      +            "string",
      +            "number"
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      "code": {
      +        "type": "string"
      +      },
      +      "field": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "suggestion": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "field",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / areaSuspect
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / listings / items / properties / bathrooms
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / listings / items / properties / city / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / listings / items / properties / cityLabel
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / contentLocale
      Added value: +{
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / listings / items / properties / currency / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / listings / items / properties / dataQuality
      Added value: +{
      +  "properties": {
      +    "areaSuspect": {
      +      "type": "boolean"
      +    },
      +    "flags": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "priceOutlier": {
      +      "type": "boolean"
      +    },
      +    "titleRoomMismatch": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "flags",
      +    "priceOutlier",
      +    "areaSuspect",
      +    "titleRoomMismatch"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / listings / items / properties / district / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / listings / items / properties / featureCount
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / listings / items / properties / features
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "key": {
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "source": {
      +        "enum": [
      +          "column",
      +          "label"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "key",
      +      "label",
      +      "source"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / furnished
      Added value: +{
      +  "enum": [
      +    "yes",
      +    "no",
      +    "unknown"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / isStudio
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / listings / items / properties / listedAt
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / listingRef
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / localeFallback
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / listings / items / properties / locationPrecision / enum
      Previous value: -[
      -  "exact",
      -  "district",
      -  "city"
      -]New value: +[
      +  "approximate_grid",
      +  "district",
      +  "city",
      +  "unmapped",
      +  null
      +]
    • changedOutput schema / properties / listings / items / properties / locationPrecision / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / listings / items / properties / notes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / listings / items / properties / officeName
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / photoCount
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / listings / items / properties / plotM2
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / listings / items / properties / priceGbp / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "null"
      +]
    • addedOutput schema / properties / listings / items / properties / pricePerSqmGbp
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / propertyTypeLabel
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / rentPeriod
      Added value: +{
      +  "enum": [
      +    "month",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / roomLabel
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / titleSource
      Added value: +{
      +  "enum": [
      +    "listing",
      +    "generated"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / transaction
      Added value: +{
      +  "enum": [
      +    "sale",
      +    "rent"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / listings / items / properties / type
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / listings / items / properties / updatedAt
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / listings / items / required
      Previous value: -[
      -  "id",
      -  "title",
      -  "city",
      -  "district",
      -  "price",
      -  "priceGbp",
      -  "currency",
      -  "type",
      -  "url"
      -]New value: +[
      +  "id",
      +  "listingNumber",
      +  "listingRef",
      +  "transaction",
      +  "title",
      +  "url",
      +  "contentLocale",
      +  "localeFallback",
      +  "price",
      +  "currency",
      +  "priceGbp",
      +  "city",
      +  "district",
      +  "propertyType",
      +  "bedrooms",
      +  "areaSqm",
      +  "features",
      +  "dataQuality"
      +]
    • addedOutput schema / properties / locale
      Added value: +{
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / localeFallback
      Added value: +{
      +  "description": "True when a listing link or description is in another language because it has no translation in `locale`.",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / notes
      Removed value: -{
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / offset
      Removed value: -{
      -  "type": "number"
      -}
    • removedOutput schema / properties / ranking
      Removed value: -{
      -  "properties": {
      -    "of": {
      -      "type": "number"
      -    },
      -    "pooled": {
      -      "type": "number"
      -    },
      -    "scope": {
      -      "enum": [
      -        "complete",
      -        "partial"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "scope",
      -    "pooled",
      -    "of"
      -  ],
      -  "type": [
      -    "object",
      -    "null"
      -  ]
      -}
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Listings in this response.",
      +  "type": "number"
      +}
    • removedOutput schema / properties / sortApplied
      Removed value: -{
      -  "enum": [
      -    "newest",
      -    "price_asc",
      -    "price_desc",
      -    "area_desc",
      -    "price_per_sqm_asc"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / split
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / total
      Added value: +{
      +  "description": "Public listings matching the filters, summed over the groups.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / totalMatched / description
      Added value: +"The same number as `total` (the v2 name)."
    • addedOutput schema / properties / unappliedFilters
      Added value: +{
      +  "description": "Constraints that were NOT applied (an amenity that cannot be filtered on, text the parser could not read). The listings shown may not honour them.",
      +  "items": {
      +    "properties": {
      +      "field": {
      +        "type": "string"
      +      },
      +      "input": {
      +        "type": "string"
      +      },
      +      "reason": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "input",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "field": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "count",
      -  "totalMatched",
      -  "offset",
      -  "sortApplied",
      -  "listings",
      -  "appliedFilters"
      -]New value: +[
      +  "listings",
      +  "total"
      +]
  5. Changed2 schema fields changed
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict",
      +  "type": "string"
      +}
    • addedOutput schema / properties / notes
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  6. Changed7 schema fields changed
    • changedInput schema / properties / city / description
      Previous value: -"City to filter"New value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
    • removedInput schema / properties / city / enum
      Removed value: -[
      -  "girne",
      -  "iskele",
      -  "lefkosa",
      -  "gazimagusa",
      -  "guzelyurt",
      -  "lefke"
      -]
    • changedInput schema / properties / district / description
      Previous value: -"District name (e.g. Alsancak), case-insensitive"New value: +"District name (e.g. Alsancak), matched accent/case-insensitively against the active-listing district list"
    • addedOutput schema / properties / appliedFilters / additionalProperties
      Added value: +false
    • addedOutput schema / properties / appliedFilters / properties
      Added value: +{
      +  "bedrooms": {
      +    "type": "number"
      +  },
      +  "city": {
      +    "type": "string"
      +  },
      +  "district": {
      +    "type": "string"
      +  },
      +  "elevator": {
      +    "type": "boolean"
      +  },
      +  "furnished": {
      +    "type": "boolean"
      +  },
      +  "garden": {
      +    "type": "boolean"
      +  },
      +  "maxPrice": {
      +    "type": "number"
      +  },
      +  "minPrice": {
      +    "type": "number"
      +  },
      +  "parking": {
      +    "type": "boolean"
      +  },
      +  "pool": {
      +    "type": "boolean"
      +  },
      +  "propertyType": {
      +    "type": "string"
      +  },
      +  "seaView": {
      +    "type": "boolean"
      +  },
      +  "type": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / fxRates / properties
      Added value: +{
      +  "base": {
      +    "enum": [
      +      "GBP"
      +    ],
      +    "type": "string"
      +  },
      +  "isFallback": {
      +    "type": "boolean"
      +  },
      +  "rates": {
      +    "properties": {
      +      "EUR": {
      +        "type": "number"
      +      },
      +      "TRY": {
      +        "type": "number"
      +      },
      +      "USD": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "EUR",
      +      "USD",
      +      "TRY"
      +    ],
      +    "type": "object"
      +  },
      +  "source": {
      +    "enum": [
      +      "database",
      +      "fallback"
      +    ],
      +    "type": "string"
      +  },
      +  "updatedAt": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / fxRates / required
      Added value: +[
      +  "base",
      +  "rates",
      +  "source",
      +  "updatedAt",
      +  "isFallback"
      +]
  7. Changed15 schema fields changed
    • addedInput schema / properties / district
      Added value: +{
      +  "description": "District name (e.g. Alsancak), case-insensitive",
      +  "type": "string"
      +}
    • addedInput schema / properties / elevator
      Added value: +{
      +  "description": "Only listings with an elevator",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / furnished
      Added value: +{
      +  "description": "Only furnished listings",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / garden
      Added value: +{
      +  "description": "Only listings with a garden",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Rows to skip (pagination, default 0)",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / parking
      Added value: +{
      +  "description": "Only listings with parking",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / pool
      Added value: +{
      +  "description": "Only listings with a pool",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / propertyType / description
      Previous value: -"Property type filter"New value: +"Raw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial"
    • changedInput schema / properties / propertyType / enum
      Previous value: -[
      -  "apartment",
      -  "residence",
      -  "villa",
      -  "twin",
      -  "detached",
      -  "bungalow",
      -  "penthouse",
      -  "studio",
      -  "duplex",
      -  "shop",
      -  "office",
      -  "warehouse",
      -  "whole_building",
      -  "hotel",
      -  "residential_land",
      -  "commercial_land",
      -  "farmland"
      -]New value: +[
      +  "apartment",
      +  "residence",
      +  "villa",
      +  "twin",
      +  "detached",
      +  "bungalow",
      +  "penthouse",
      +  "studio",
      +  "duplex",
      +  "shop",
      +  "office",
      +  "warehouse",
      +  "whole_building",
      +  "hotel",
      +  "residential_land",
      +  "commercial_land",
      +  "farmland",
      +  "house",
      +  "land",
      +  "commercial"
      +]
    • addedInput schema / properties / seaView
      Added value: +{
      +  "description": "Only listings flagged sea_view",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / fxRates
      Added value: +{
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / properties / monthlyRentGbp
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / offset
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / ranking
      Added value: +{
      +  "properties": {
      +    "of": {
      +      "type": "number"
      +    },
      +    "pooled": {
      +      "type": "number"
      +    },
      +    "scope": {
      +      "enum": [
      +        "complete",
      +        "partial"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "scope",
      +    "pooled",
      +    "of"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "count",
      -  "totalMatched",
      -  "sortApplied",
      -  "listings",
      -  "appliedFilters"
      -]New value: +[
      +  "count",
      +  "totalMatched",
      +  "offset",
      +  "sortApplied",
      +  "listings",
      +  "appliedFilters"
      +]
  8. Changed1 schema field changed
    • addedOutput schema / properties / listings / items / properties / locationPrecision
      Added value: +{
      +  "enum": [
      +    "exact",
      +    "district",
      +    "city"
      +  ],
      +  "type": "string"
      +}
  9. Changed1 schema field changed
    • changedInput schema / properties / propertyType / enum
      Previous value: -[
      -  "apartment",
      -  "residence",
      -  "villa",
      -  "twin",
      -  "detached",
      -  "bungalow",
      -  "penthouse",
      -  "studio",
      -  "duplex",
      -  "shop",
      -  "office",
      -  "warehouse",
      -  "whole_building",
      -  "residential_land",
      -  "commercial_land",
      -  "farmland"
      -]New value: +[
      +  "apartment",
      +  "residence",
      +  "villa",
      +  "twin",
      +  "detached",
      +  "bungalow",
      +  "penthouse",
      +  "studio",
      +  "duplex",
      +  "shop",
      +  "office",
      +  "warehouse",
      +  "whole_building",
      +  "hotel",
      +  "residential_land",
      +  "commercial_land",
      +  "farmland"
      +]
  10. Changed5 schema fields changed
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "sale",
      -  "rent",
      -  "daily"
      -]New value: +[
      +  "sale",
      +  "rent"
      +]
    • addedOutput schema / properties / dataSource
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / factType
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / fxRates
      Removed value: -{
      -  "properties": {
      -    "base": {
      -      "type": "string"
      -    },
      -    "isFallback": {
      -      "type": "boolean"
      -    },
      -    "rates": {
      -      "type": "object"
      -    },
      -    "source": {
      -      "type": "string"
      -    },
      -    "updatedAt": {
      -      "type": [
      -        "string",
      -        "null"
      -      ]
      -    }
      -  },
      -  "type": "object"
      -}
    • addedOutput schema / properties / isEstimate
      Added value: +{
      +  "type": "boolean"
      +}
  11. Changed7 schema fields changed
    • addedInput schema / properties / propertyType
      Added value: +{
      +  "description": "Property type filter",
      +  "enum": [
      +    "apartment",
      +    "residence",
      +    "villa",
      +    "twin",
      +    "detached",
      +    "bungalow",
      +    "penthouse",
      +    "studio",
      +    "duplex",
      +    "shop",
      +    "office",
      +    "warehouse",
      +    "whole_building",
      +    "residential_land",
      +    "commercial_land",
      +    "farmland"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sortBy
      Added value: +{
      +  "description": "Sort order (default: newest)",
      +  "enum": [
      +    "newest",
      +    "price_asc",
      +    "price_desc",
      +    "area_desc",
      +    "price_per_sqm_asc"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / listings / items / properties / propertyType
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings / items / required
      Added value: +[
      +  "id",
      +  "title",
      +  "city",
      +  "district",
      +  "price",
      +  "priceGbp",
      +  "currency",
      +  "type",
      +  "url"
      +]
    • addedOutput schema / properties / sortApplied
      Added value: +{
      +  "enum": [
      +    "newest",
      +    "price_asc",
      +    "price_desc",
      +    "area_desc",
      +    "price_per_sqm_asc"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / totalMatched
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / required
      Added value: +[
      +  "count",
      +  "totalMatched",
      +  "sortApplied",
      +  "listings",
      +  "appliedFilters"
      +]
  12. Changed1 schema field changed
    • addedOutput schema / properties / fxRates
      Added value: +{
      +  "properties": {
      +    "base": {
      +      "type": "string"
      +    },
      +    "isFallback": {
      +      "type": "boolean"
      +    },
      +    "rates": {
      +      "type": "object"
      +    },
      +    "source": {
      +      "type": "string"
      +    },
      +    "updatedAt": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  13. Changed1 schema field changed
    • addedOutput schema / properties / appliedFilters
      Added value: +{
      +  "type": "object"
      +}
  14. Changed1 schema field changed
    • addedOutput schema / properties / listings / items
      Added value: +{
      +  "properties": {
      +    "areaSqm": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "bedrooms": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "city": {
      +      "type": "string"
      +    },
      +    "coverImageUrl": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "currency": {
      +      "type": "string"
      +    },
      +    "district": {
      +      "type": "string"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "listingNumber": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "price": {
      +      "type": "number"
      +    },
      +    "priceGbp": {
      +      "type": "number"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "type": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  15. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "type": "number"
      +    },
      +    "listings": {
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  16. Changed5 schema fields changed
    • addedInput schema / properties / bedrooms / description
      Added value: +"Bedroom count (integer 0-10)"
    • changedInput schema / properties / bedrooms / type
      Previous value: -"integer"New value: +"number"
    • removedInput schema / properties / limit / default
      Removed value: -5
    • addedInput schema / properties / limit / description
      Added value: +"Result count (integer 1-10, default 5)"
    • changedInput schema / properties / limit / type
      Previous value: -"integer"New value: +"number"
  17. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description goes further and adds pagination semantics (max 10 per call, continue via nextCursor), the two-group sale/rent split without a transaction, cursor validity tied to its group, unknown places returning suggestions, non-filterable amenities being reported, and locale-driven formatting.

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?

The 'use when' trigger and core scope are front-loaded, then detail is sequenced logically (locale, pagination, groups, limitations). It is dense and long, with some restatement of structured schema content (locale, cursor, amenities), but for a 25-parameter tool most sentences earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, yet the description still sketches the response shape (one readable line plus a structured card). Combined with pagination, grouping, locale, and limitation coverage, nothing an agent needs to call this correctly is missing.

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% and the nested enums/constraints are exhaustively documented per property, so the schema already carries the parameter burden. The description adds minor domain gloss like '2+1 means bedrooms 2' and 'prices in GBP unless a currency is given', but most parameter detail is a restatement of the schema, making the baseline 3 appropriate.

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+resource+scope: 'Search live Evlek property listings for sale and long-term rent in Northern Cyprus (KKTC/TRNC)'. It explicitly distinguishes itself from a sibling, 'For one listing use `get_listing`', so an agent can separate the two without opening 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 Guidelines5/5

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

Opens with an explicit trigger ('Use this when the user wants to find or see property listings') and names the alternative for the single-listing case. It also draws a clear when-not boundary: results are 'not a valuation, verification of property-specific claims, forecast, ranking or recommendation.'

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.