Skip to main content
Glama

Evlek — Northern Cyprus Property MCP Server

Server Details

Live Northern Cyprus (KKTC/TRNC) property listings and asking-price data. Read-only, 8 tools.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 69 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Evlek/evlek-mcp
GitHub Stars
0
Server Listing
Evlek — Northern Cyprus Property MCP Server

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation3/5

The set contains two near-duplicate pairs: fetch vs get_listing return the same listing data, and search vs search_listings return the same search data, differing only in output format and intended client. The descriptions do explicitly explain when to use each variant, which rescues the set from being truly confusing, but an agent must read carefully to avoid misselection.

Naming Consistency3/5

Most tools follow verb_noun snake_case (compare_listings, convert_currency, get_listing, list_locations), but the bare-verb names fetch and search break that pattern and sit confusingly close to their suffixed twins (get_listing, search_listings). Readable, but the near-identical names for near-identical tools amplify ambiguity rather than resolve it.

Tool Count4/5

Eight tools is well within a sensible scope for a property search server, and each domain area (search, detail, compare, locations, stats, FX) is represented. The count is slightly inflated by the two duplicate-purpose pairs, which effectively make it 6 distinct capabilities split across 8 tools.

Completeness4/5

Core consumer workflows are covered end to end: discover (search_listings), inspect (get_listing/fetch), compare, market context (market_stats), geography (list_locations) and pricing (convert_currency). Minor gaps exist, such as no reference tool for valid amenity names or property types and no similar-listings/related-property operation, but these are workable around.

Available Tools

8 tools
compare_listingsCompare Evlek listingsA
Read-onlyIdempotent
Inspect

Compare 2 to 4 public Evlek listings side by side in the user's language: price, price per m² (only when the built area is believable), rooms, bathrooms, built area and plot area (always separate), location, furnishing, key features and data-quality notes, plus a few descriptive highlights (lowest price, largest indoor area, most recently listed). ids takes listing ids (UUID), listing numbers (EVL-100464) or evlek.app listing links, in any mix; the order you give is kept. Sale and rent listings are never ranked against each other: a mixed request is shown in two groups with a warning. A reference that is unknown or no longer public is listed in missingIds with code NOT_FOUND (this is not an error). Descriptive facts only: no valuation and no recommendation. Pass the user's language as locale (tr, en, ru, de or ar).

NameRequiredDescriptionDefault
idsYes2 to 4 listings, in any mix of ids, numbers and links. The order is kept.
localeNoLanguage of the answer and of the links. Pass the language the user writes in. Default en.

Output Schema

NameRequiredDescription
codeNoAbsent on a comparison. NOT_ENOUGH_LISTINGS when fewer than two of the requested listings are available; SEARCH_BACKEND_UNAVAILABLE, INVALID_PARAMS or INTERNAL_ERROR otherwise.
countNo
groupsNoThe compared listings by transaction (sale and rent are never ranked against each other).
issuesNo
localeYes
missingNo
comparedYesThe listings that were compared, in the order of the request.
insightsYes
warningsYes
retryableNoTrue when the search backend could not answer (code SEARCH_BACKEND_UNAVAILABLE).
dataSourceNo
isEstimateNo
metricTypeNo
missingIdsYesOne NOT_FOUND entry per requested reference that names no public listing.
contentLocaleNoThe language every link resolved to; null when the listings differ (see compared[].contentLocale).
localeFallbackNoTrue when at least one link opens a page in another language than requested.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already establish read-only/idempotent/closed-world safety, and the description goes well beyond them: unknown or unpublished references surface in missingIds with NOT_FOUND and are explicitly 'not an error,' mixed sale/rent requests are split into two groups with a warning, and price-per-m² is suppressed when the built area is implausible. These are exactly the edge-case behaviors an agent must anticipate.

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 dense paragraph that front-loads the purpose and the compared fields before moving to edge cases. It is information-rich rather than padded, though the enumeration of compared attributes is long enough that skimming costs the reader a little.

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?

With an output schema present, return values need not be described, yet the description still explains the meaningful output nuance (missingIds/NOT_FOUND). Combined with locale guidance and the sale/rent grouping rule, an agent has everything needed to call this correctly.

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 coverage is 100%, so the baseline is 3. The description restates the accepted id forms (UUID, EVL-100464, link, any mix) and order preservation, which the schema already documents, and only lightly extends `locale` by framing it as 'the user's language.' Marginal added value over the schema.

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?

Opens with a specific verb+resource+scope: 'Compare 2 to 4 public Evlek listings side by side,' then enumerates exactly which attributes are compared. It is clearly distinguishable from get_listing (single listing) and search_listings (discovery), so an agent can route correctly without opening schemas.

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?

Gives concrete operating context: 2-4 items, mixed reference types allowed, order preserved, sale vs rent never ranked together, and 'no valuation and no recommendation.' It stops short of naming sibling tools as alternatives, so it is strong on when/when-not but lacks explicit alternative routing.

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

convert_currencyCurrency conversion (GBP/EUR/USD/TRY)A
Read-onlyIdempotent
Inspect

Converts an amount between GBP, EUR, USD and TRY with the exchange rates Evlek stores (refreshed daily) and returns all four equivalents. Currency conversion only: no payment plan, deposit or instalment schedule, tax, fee or acquisition-cost estimate, no advice. Rates older than 24 hours are flagged as stale; beyond 72 hours (or when none are stored) no conversion is produced (FX_UNAVAILABLE).

NameRequiredDescriptionDefault
amountYesAmount to convert: a property price, a monthly rent, any amount from 1 up. Not a deposit or an instalment plan.
localeNoLanguage of the answer and the number format. Pass the language the user writes in. Default en.
currencyNoCurrency of the amount. Default GBP. Lower case, symbols (£ € $ ₺) and names (pound, euro, dollar, lira) are read.

Output Schema

NameRequiredDescription
fxNo
codeNoPresent on a soft refusal (FX_UNAVAILABLE) and on invalid arguments (INVALID_PARAMS).
staleNoTrue when the stored rates are older than 24 hours.
issuesNo
reasonNo
amountsNo
priceGBPNoThe amount in GBP (the same number as amounts.GBP).
warningsNo
retryableNo
dataSourceNo
rateAgeHoursNoFX_UNAVAILABLE with reason too_old: how old the stored rates are, in hours.
contentLocaleNo
inputCurrencyNo
usesStoredRateNo
assumedCurrencyNoTrue when no currency was given and GBP was assumed.

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly/idempotent/non-destructive) by disclosing rate provenance, daily refresh cadence, a 24-hour staleness flag, and a hard failure mode (FX_UNAVAILABLE) beyond 72 hours or with no stored rates. This tells the agent exactly what degraded output looks like.

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?

Front-loads the core capability in the first clause and puts exclusions and rate-freshness rules after. Dense but every clause carries operational meaning; slightly long sentences keep it from a 5.

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 prose. The description still covers scope boundaries, data freshness, and the failure condition, leaving nothing an agent needs to call it correctly undocumented.

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 two of three parameters are enums, so the schema already carries the semantics. The description adds the four-currency output set but no extra per-parameter guidance, making 3 the correct baseline.

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 (converts) and resource (amount between GBP, EUR, USD, TRY), plus the return shape (all four equivalents) and the rate source. The explicit scope exclusions (no payment plan, deposit, tax, fee, advice) make it unambiguously distinct from the listing/search siblings.

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?

Gives clear when-not guidance via an explicit exclusion list (no payment plans, deposits, instalments, tax, fees, acquisition costs, advice). It does not name an alternative tool for those adjacent needs, so routing is implied rather than spelled out.

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

fetchFetch full Evlek listing detailA
Read-onlyIdempotent
Inspect

Fetch the full detail of one Evlek listing: title, price, location, rooms, areas, amenities, data-quality notes and the canonical link. The id is the listing id (UUID) from a search result, a listing number such as EVL-100464, or an evlek.app listing link; the answer language follows the link (English otherwise). A listing that is not available (it does not exist, is not public, or was removed) always gets the same answer. Same data as get_listing, in the standard search/fetch form used by research and citation clients. Use when: an id from search is known. Don't use for: discovery (use search first) or another answer language (use get_listing).

NameRequiredDescriptionDefault
idYesEvlek listing id (UUID) from search, a listing number such as EVL-100464, or an evlek.app listing link

Output Schema

NameRequiredDescription
idNo
urlNo
codeNoNOT_FOUND (found is false) or SEARCH_BACKEND_UNAVAILABLE (retryable).
textNo
foundNo
titleNo
localeNo
listingNoThe listing card (same shape as search_listings).
metadataNoListing facts (price, rooms, area, features, data quality); no contact data.
photoUrlsNo
requestedNoThe id as the caller sent it (cleaned, at most 200 characters).
retryableNo
photoCountNo
contentLocaleNo
coverImageUrlNo
localeFallbackNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real behavioral context beyond them: unavailable listings (missing, non-public, removed) always return the same answer, and the response language follows the link. It doesn't cover auth, rate limits or pagination, which keeps it short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads what is returned and then handles id formats, language, unavailability and routing in compact clauses; every sentence carries information. It is dense and slightly run-on in the first two sentences, which costs a point but not usability.

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?

With a single required parameter, full schema coverage and an output schema, the description needn't explain returns, yet it still covers the edge cases an agent would otherwise get wrong: id variants, answer language, and uniform behavior for unavailable listings. An agent has everything needed to invoke it correctly.

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 coverage is 100% and the schema already documents the id formats (UUID, EVL-100464, evlek.app link) almost verbatim. The description's only marginal addition is that the language of the answer follows the link, which is useful but thin; the baseline of 3 applies when the schema does the heavy lifting.

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 description states a specific verb and resource ('Fetch the full detail of one Evlek listing') and enumerates the returned fields, so the tool's function is unambiguous. It also explicitly differentiates itself from two siblings ('Same data as get_listing', 'use search first'), which lets an agent choose without opening any 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?

It gives an explicit 'Use when: an id from search is known' and an explicit 'Don't use for: discovery (use search first) or another answer language (use get_listing)', naming the exact alternatives. Nothing about tool selection is left to inference.

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

get_listingGet an Evlek listingA
Read-onlyIdempotent
Inspect

Get the full details of ONE public Evlek listing (sale or long-term rent) in the user's language. ref is the listing id (UUID), the listing number (EVL-100464 or just 100464) or an evlek.app listing link in any language. Returns the price, rooms, bathrooms, built area and plot area (always separate), the approximate location, features, the office name, dates, data-quality notes, photos with captions where they exist, AI virtual-staging before/after images when the office approved them (always labelled as AI-generated) and the canonical link. Contact details are never included: send the user to the link. A listing that is unknown or no longer public answers found:false with code NOT_FOUND (this is not an error). Pass the user's language as locale (tr, en, ru, de or ar).

NameRequiredDescriptionDefault
refYesThe listing: its id (UUID), its listing number (EVL-100464 or 100464) or an evlek.app listing link in any language.
localeNoLanguage of the answer and of the links. Pass the language the user writes in. Default en.

Output Schema

NameRequiredDescription
idNo
refNoShort summary: listing number.
urlNoThe canonical link of the listing page in contentLocale.
areaNo
cityNo
codeNoWhen found is false: NOT_FOUND (the listing does not exist or is not public), SEARCH_BACKEND_UNAVAILABLE, INVALID_PARAMS or INTERNAL_ERROR.
datesNo
floorNo
foundYes
mediaNo
priceNo
roomsNo
titleNo
issuesNo
localeNo
officeNo
photosNo
plotM2No
rentalNo
areaSqmNoThe BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home, a closed area too small for its rooms); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis.
areaTextNo
bedroomsNo
currencyNo
districtNo
factTypeNo
featuresNo
listedAtNo
locationNo
priceGbpNo
warningsNo
areaBasisNo'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it); 'net' only when the publisher stated the area is net (Evlek does not measure it); null when the basis is not stated, or there is no built area.
areaLabelNo
bathroomsNo
furnishedNo
requestedNoThe identifier the caller sent, when found is false.
retryableNoTrue when found is false because the search backend could not answer (code SEARCH_BACKEND_UNAVAILABLE).
roomLabelNo
updatedAtNo
agencyNameNoShort summary: office name.
dataSourceNo
isEstimateNo
listingRefNo
officeNameNo
photoCountNo
priceLabelNoShort summary: printed price.
areaSuspectNo
buildingAgeNo
dataQualityNo
descriptionNo
photosShownNo
titleSourceNo
totalFloorsNo
transactionNo
propertyTypeNo
contentLocaleNoThe language the listing page and url really resolved to.
coverImageUrlNo
listingNumberNo
localeFallbackNo
monthlyRentGbpNo
pricePerSqmGbpNoGBP per m², by the listing page's own rule: null whenever the built area is flagged suspect, withheld, or gross (areaBasis 'gross'), and on land below 150 m².
virtualStagingNoPresent only when approved AI virtual-staging images exist. Every image is AI-generated and must be shown with the disclosure.
photosTruncatedNo
descriptionLocaleNo
locationPrecisionNo
propertyTypeLabelNo
titleGeneratedReasonNo

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it specifies the NOT_FOUND contract (found:false, not an error), the exclusion of contact details, that plot and built area are always separate, and that virtual-staging images are office-approved and labelled AI-generated. That is exactly the kind of behavior an agent cannot infer from structured fields.

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?

Front-loaded with the core purpose and scope, and the ID-format guidance comes early. The enumeration of returned fields is dense and somewhat redundant against the output schema, which costs it a point, but no sentence is filler.

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?

Covers everything needed to call it correctly and interpret results: accepted ref formats, locale, not-found semantics, content exclusions, and image labelling — even though an output schema exists and would have carried some of this burden.

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 coverage is 100%, so the baseline is 3. The description restates ref's three accepted forms and tells the agent to pass the user's language as `locale`, but both points are already in the schema descriptions and it adds no new format or edge-case detail.

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?

Specific verb plus resource and cardinality: "Get the full details of ONE public Evlek listing (sale or long-term rent)". The emphasis on ONE plus the public/live scope separates it cleanly from search_listings, search and compare_listings without needing their schemas.

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?

Clear about the use case (single listing lookup) and adds a practical rule — contact details are never returned, so route the user to the canonical link. It never names a sibling tool as the alternative for browsing or comparing, so the when-not is only implied by "ONE".

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

list_locationsList Evlek locationsA
Read-onlyIdempotent
Inspect

List the places Evlek knows in Northern Cyprus (6 cities, districts, villages, sub-areas, landmarks, the Karpaz region) with their public sale and long-term rent listing counts. Call it first when unsure how a place is spelled: every name and id returned is accepted by the other tools. Pass city (any spelling or language) for one place in detail. Names are Turkish or Latin; Russian, German and Arabic spellings are accepted as input but not listed.

NameRequiredDescriptionDefault
cityNoOne place in detail: any spelling or language of a city, district or village ("Kyrenia", "Alsancak"). Omit to list every city.
localeNoLanguage of the answer. Pass the language the user writes in. Default en.
includeEmptyNoAlso list places that have no public listing right now. Default false.
includeAliasesNoAlso list accepted alternative spellings of each place (at most 6, Latin script). Default false.

Output Schema

NameRequiredDescription
codeNoPresent on a soft answer: INVALID_LOCATION, OUT_OF_SCOPE or SEARCH_BACKEND_UNAVAILABLE.
notesNo
placeNo
scopeNo
citiesNo
issuesNo
totalsNo
registryNo
warningsNo
ambiguousNo
retryableNo
outOfScopeNo
unassignedNo
suggestionsNo
validCitiesNo
includeEmptyNo
contentLocaleNo
textTruncatedNo
includeAliasesNo
hiddenEmptyCountNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so safety is covered. The description adds genuinely new behavioral context: names are Turkish or Latin, while Russian, German and Arabic spellings are accepted as input but never listed — a non-obvious quirk that prevents confusion when output omits the user's language.

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?

Three sentences, front-loaded with what the tool returns, then the imperative guidance, then the language caveat. No filler, and the highest-value routing instruction is placed early.

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 structure need not be re-explained; the description covers the remaining gaps an agent needs — zero-arg listing behavior, single-place drill-down via city, spelling tolerance, and output language limits. Nothing material is missing for correct invocation.

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 coverage is 100% and each parameter already documents itself (city detail mode, locale default en, includeEmpty/includeAliases defaults and the 6-alias Latin-script cap). The description largely restates the city parameter's spelling tolerance rather than adding syntax, format, or interaction rules beyond the schema, so baseline 3 applies.

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 (list) and resource (places Evlek knows in Northern Cyprus) with explicit scope — 6 cities, districts, villages, sub-areas, landmarks, the Karpaz region — plus what each entry carries (sale and long-term rent listing counts). It is immediately distinguishable from the listing-oriented siblings (search, get_listing, market_stats).

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?

"Call it first when unsure how a place is spelled" gives a concrete trigger, and the note that "every name and id returned is accepted by the other tools" explains its role as a prerequisite/reference tool for the rest of the set. It stops short of stating when not to use it (e.g. when you already have a canonical id, go straight to get_listing).

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

market_statsNorthern Cyprus market statisticsA
Read-onlyIdempotent
Inspect

Market statistics for Northern Cyprus from asking prices of active public listings (not sales, valuations or forecasts). No city = the island by city; one city = its districts; several = side by side; city + district = a district profile. Sale and rent are reported separately. Each figure has activeCount (public listings in scope) and sampleCount (the cleaned sample behind the statistic); below 10 sampled listings it is withheld. Pass locale.

NameRequiredDescriptionDefault
cityNoCity names in any language, e.g. ["Girne"]. One gives its districts, two or more are compared (max 6). Omit for the whole island.
localeNoLanguage of the answer text, number formats and links (default en). Pass the language the user is writing in.
districtNoA district, village or region (Alsancak, Long Beach, Karpaz) for a profile. The city is inferred when the name is unambiguous.
transactionNo'sale' or 'rent' (long-term). Omit for both: they are reported separately and never mixed.
propertyTypeNoLimit to property types or groups, e.g. ["apartment"] or ["house"]. Price statistics cover residential types only.

Output Schema

NameRequiredDescription
asOfNo
codeNoOn a soft answer: INVALID_LOCATION, OUT_OF_SCOPE or SEARCH_BACKEND_UNAVAILABLE.
modeNo
typeNoThe deal of `cities` (sale when both were asked for).
citiesNo
issuesNo
localeNo
totalsNoPer deal: activeCount and sampleCount summed over the scope.
dataAsOfNo
districtNoDistrict profile: sale and rent statistics, personas, asking-rent ratio and listing details.
warningsNo
dataSourceNo
isEstimateNo
metricTypeNo
methodologyNo
suggestionsNo
transactionNo
contentLocaleNo
localeFallbackNo
additionalDealsNoThe other deal when both were asked for: the same rows as `cities`.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower; the description still adds real behavioral context: the data comes from active public asking prices, each figure carries activeCount and sampleCount, and statistics are withheld below 10 sampled listings. That withholding rule and the sample/active distinction are exactly the kind of operational detail an agent cannot infer from annotations.

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?

Dense and front-loaded: provenance first, then the parameter-to-output-shape mapping, then the sample-count caveat, ending with the locale instruction. Every sentence carries distinct operational information with no filler.

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?

Given an output schema exists, return formatting need not be explained, yet the description still clarifies the two counters on each figure and the below-10 withholding threshold. With five optional parameters and two enum constraints, all scoping and language concerns an agent needs are covered.

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 baseline is 3. The description restates the combinatorial city behavior ('one city = its districts; several = side by side') and the sale/rent separation, but these are largely already documented in the parameter descriptions, and it adds no syntax or format detail beyond them.

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 (market statistics) and dataset provenance (asking prices of active public listings), and explicitly excludes adjacent interpretations: 'not sales, valuations or forecasts'. This clearly separates it from sibling tools such as search_listings or compare_listings, which deal in individual listings rather than aggregates.

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?

Gives unusually explicit routing rules for the scoping parameters: no city means island-by-city, one city means districts, several means side-by-side, city plus district means a district profile. It also states that sale and rent are reported separately and never mixed, plus 'Pass locale.' It stops short of naming sibling alternatives (e.g. when to prefer compare_listings over this tool), so it lands at a strong 4 rather than 5.

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

search_listingsSearch Northern Cyprus property listingsA
Read-onlyIdempotent
Inspect

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.

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

NameRequiredDescription
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.

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_listing3 fields changed
      • changedOutput schema / properties / agencyName / description
        Previous value: -"ChatGPT summary: office name."New value: +"Short summary: office name."
      • changedOutput schema / properties / priceLabel / description
        Previous value: -"ChatGPT summary: printed price."New value: +"Short summary: printed price."
      • changedOutput schema / properties / ref / description
        Previous value: -"ChatGPT summary: listing number."New value: +"Short summary: listing number."
  2. 5 tool updates
    • Changedcompare_listings4 fields changed
      • changedOutput schema / properties / compared / items / properties / areaBasis / description
        Previous value: -"'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown."New value: +"'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it); 'net' only when the publisher stated the area is net (Evlek does not measure it); null when the basis is not stated, or there is no built area."
      • addedOutput schema / properties / compared / items / properties / areaLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / compared / items / properties / areaSqm / description
        Previous value: -"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."New value: +"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home, a closed area too small for its rooms); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."
      • addedOutput schema / properties / compared / items / properties / areaText
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedfetch5 fields changed
      • addedOutput schema / properties / listing / properties / areaLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / listing / properties / areaText
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / metadata / properties / area / properties / basis / description
        Previous value: -"'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown."New value: +"'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it); 'net' only when the publisher stated the area is net (Evlek does not measure it); null when the basis is not stated, or there is no built area."
      • addedOutput schema / properties / metadata / properties / area / properties / label
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / metadata / properties / area / properties / text
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedget_listing8 fields changed
      • changedOutput schema / properties / area / properties / basis / description
        Previous value: -"'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown."New value: +"'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it); 'net' only when the publisher stated the area is net (Evlek does not measure it); null when the basis is not stated, or there is no built area."
      • changedOutput schema / properties / area / properties / closedM2 / description
        Previous value: -"The BUILT area in m², as the listing page shows it: null on land (see area.plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when area.suspect is true. A gross figure says so in area.basis."New value: +"The BUILT area in m², as the listing page shows it: null on land (see area.plotM2) and when the page withholds the figure (a plot-looking number on a small home, a closed area too small for its rooms); otherwise shown even when area.suspect is true. A gross figure says so in area.basis."
      • addedOutput schema / properties / area / properties / label
        Added value: +{
        +  "description": "Its name: 'Gross area', 'Net area', 'Area' (basis not stated), 'Plot area' (land). Never call a gross area indoor, net or living area.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / area / properties / text
        Added value: +{
        +  "description": "The area as printed: \"85 m² (gross)\", \"85 m² (net)\", \"85 m²\" when the basis is not stated; on land the plot.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / areaBasis / description
        Previous value: -"'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown."New value: +"'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it); 'net' only when the publisher stated the area is net (Evlek does not measure it); null when the basis is not stated, or there is no built area."
      • addedOutput schema / properties / areaLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / areaSqm / description
        Previous value: -"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."New value: +"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home, a closed area too small for its rooms); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."
      • addedOutput schema / properties / areaText
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedsearch4 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"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / areaLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / areaText
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedsearch_listings2 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"
        +  ]
        +}
  3. 5 tool updates
    • Changedcompare_listings3 fields changed
      • addedOutput schema / properties / compared / items / properties / areaBasis
        Added value: +{
        +  "description": "'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown.",
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / compared / items / properties / areaSqm / description
        Previous value: -"The BUILT area in m²; null on land (see plotM2). Shown even when areaSuspect is true."New value: +"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."
      • changedOutput schema / properties / compared / items / properties / pricePerSqmGbp / description
        Previous value: -"GBP per m²; null whenever the built area is flagged suspect."New value: +"GBP per m², by the listing page's own rule: null whenever the built area is flagged suspect, withheld, or gross (areaBasis 'gross'), and on land below 150 m²."
    • Changedfetch3 fields changed
      • addedOutput schema / properties / listing / properties / areaBasis
        Added value: +{
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ]
        +}
      • addedOutput schema / properties / metadata / properties / area / properties / basis
        Added value: +{
        +  "description": "'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown.",
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / metadata / properties / price / properties / perSqmGbp / description
        Added value: +"GBP per m², by the listing page's own rule: null whenever the built area is flagged suspect, withheld, or gross (areaBasis 'gross'), and on land below 150 m²."
    • Changedget_listing6 fields changed
      • addedOutput schema / properties / area / properties / basis
        Added value: +{
        +  "description": "'gross' when closedM2 is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown.",
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / area / properties / closedM2 / description
        Added value: +"The BUILT area in m², as the listing page shows it: null on land (see area.plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when area.suspect is true. A gross figure says so in area.basis."
      • addedOutput schema / properties / areaBasis
        Added value: +{
        +  "description": "'gross' when areaSqm is a gross figure (not the indoor area; no price per m² is derived from it), 'net' otherwise, null when unknown.",
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / areaSqm / description
        Previous value: -"The BUILT area in m²; null on land (see plotM2). The number is shown even when areaSuspect is true."New value: +"The BUILT area in m², as the listing page shows it: null on land (see plotM2) and when the page withholds the figure (a plot-looking number on a small home); otherwise shown even when areaSuspect is true. A gross figure says so in areaBasis."
      • changedOutput schema / properties / price / properties / perSqmGbp / description
        Previous value: -"Null whenever the built area is flagged suspect."New value: +"GBP per m², by the listing page's own rule: null whenever the built area is flagged suspect, withheld, or gross (areaBasis 'gross'), and on land below 150 m²."
      • changedOutput schema / properties / pricePerSqmGbp / description
        Previous value: -"Null whenever the built area is flagged suspect."New value: +"GBP per m², by the listing page's own rule: null whenever the built area is flagged suspect, withheld, or gross (areaBasis 'gross'), and on land below 150 m²."
    • Changedsearch2 fields changed
      • addedOutput schema / properties / listings / items / properties / areaBasis
        Added value: +{
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / areaBasis
        Added value: +{
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ]
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / listings / items / properties / areaBasis
        Added value: +{
        +  "enum": [
        +    "net",
        +    "gross",
        +    null
        +  ]
        +}
  4. 1 tool update
    • Changedsearch1 field changed
      • 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"
        +  ]
        +}
  5. 4 tool updates
    • Changedfetch1 field changed
      • addedOutput schema / properties / listing / 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"
        +}
    • Changedget_listing3 fields changed
      • addedOutput schema / properties / agencyName
        Added value: +{
        +  "description": "ChatGPT summary: office name.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / priceLabel
        Added value: +{
        +  "description": "ChatGPT summary: printed price.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / ref
        Added value: +{
        +  "description": "ChatGPT summary: listing number.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedsearch2 fields changed
      • 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 / nearbyAlternatives / 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"
        +}
    • Changedsearch_listings7 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"
        +]
  6. 15 tool updates
    • Removedcompare_cities
    • Addedcompare_listings
    • Removedcompare_properties
    • Changedconvert_currency22 fields changed
      • addedInput schema / properties / amount
        Added value: +{
        +  "description": "Amount to convert: a property price, a monthly rent, any amount from 1 up. Not a deposit or an instalment plan.",
        +  "maximum": 10000000000,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • changedInput schema / properties / currency / description
        Previous value: -"Currency of the price (default GBP)."New value: +"Currency of the amount. Default GBP. Lower case, symbols (£ € $ ₺) and names (pound, euro, dollar, lira) are read."
      • addedInput schema / properties / locale
        Added value: +{
        +  "description": "Language of the answer and the number format. Pass the language the user writes in. Default en.",
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / price
        Removed value: -{
        -  "description": "Entered property asking-price amount; not a deposit or installment.",
        -  "maximum": 100000000,
        -  "minimum": 1000,
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "price"
        -]New value: +[
        +  "amount"
        +]
      • addedOutput schema / properties / assumedCurrency
        Added value: +{
        +  "description": "True when no currency was given and GBP was assumed.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Present on a soft refusal (FX_UNAVAILABLE) and on invalid arguments (INVALID_PARAMS).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / contentLocale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / fx / properties / ageHours
        Added value: +{
        +  "description": "Whole hours since the rates were stored.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / fx / properties / asOf / description
        Added value: +"When the rates were stored (ISO 8601, UTC)."
      • addedOutput schema / properties / fx / properties / rates / description
        Added value: +"Units of each currency per 1 GBP, as stored."
      • addedOutput schema / properties / fx / properties / stale
        Added value: +{
        +  "description": "True when the rates are older than 24 hours (at most 72 hours: older ones are refused).",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / fx / required
        Previous value: -[
        -  "base",
        -  "source",
        -  "asOf",
        -  "rates"
        -]New value: +[
        +  "base",
        +  "source",
        +  "asOf",
        +  "rates",
        +  "stale",
        +  "ageHours"
        +]
      • addedOutput schema / properties / inputCurrency / enum
        Added value: +[
        +  "GBP",
        +  "EUR",
        +  "USD",
        +  "TRY"
        +]
      • addedOutput schema / properties / issues
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "allowedValues": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "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 / priceGBP / description
        Added value: +"The amount in GBP (the same number as amounts.GBP)."
      • addedOutput schema / properties / rateAgeHours
        Added value: +{
        +  "description": "FX_UNAVAILABLE with reason too_old: how old the stored rates are, in hours.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / reason
        Added value: +{
        +  "enum": [
        +    "unavailable",
        +    "too_old"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / stale
        Added value: +{
        +  "description": "True when the stored rates are older than 24 hours.",
        +  "type": "boolean"
        +}
      • 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: -[
        -  "inputCurrency",
        -  "priceGBP",
        -  "amounts"
        -]New value: +[]
    • Changedfetch33 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Evlek listing id (UUID) from search"New value: +"Evlek listing id (UUID) from search, a listing number such as EVL-100464, or an evlek.app listing link"
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "NOT_FOUND (found is false) or SEARCH_BACKEND_UNAVAILABLE (retryable).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / contentLocale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / found
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / listing
        Added value: +{
        +  "description": "The listing card (same shape as search_listings).",
        +  "properties": {
        +    "areaSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "areaSuspect": {
        +      "type": "boolean"
        +    },
        +    "bathrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bedrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "city": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "cityLabel": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "contentLocale": {
        +      "enum": [
        +        "tr",
        +        "en",
        +        "ru",
        +        "de",
        +        "ar"
        +      ],
        +      "type": "string"
        +    },
        +    "coverImageUrl": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "dataQuality": {
        +      "properties": {
        +        "areaSuspect": {
        +          "type": "boolean"
        +        },
        +        "flags": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "priceOutlier": {
        +          "type": "boolean"
        +        },
        +        "titleRoomMismatch": {
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "flags",
        +        "priceOutlier",
        +        "areaSuspect",
        +        "titleRoomMismatch"
        +      ],
        +      "type": "object"
        +    },
        +    "district": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "featureCount": {
        +      "type": "number"
        +    },
        +    "features": {
        +      "items": {
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "source": {
        +            "enum": [
        +              "column",
        +              "label"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "key",
        +          "label",
        +          "source"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "furnished": {
        +      "enum": [
        +        "yes",
        +        "no",
        +        "unknown"
        +      ],
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "isStudio": {
        +      "type": "boolean"
        +    },
        +    "listedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "listingNumber": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "listingRef": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "localeFallback": {
        +      "type": "boolean"
        +    },
        +    "locationPrecision": {
        +      "enum": [
        +        "approximate_grid",
        +        "district",
        +        "city",
        +        "unmapped",
        +        null
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "monthlyRentGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "notes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "officeName": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "photoCount": {
        +      "type": "number"
        +    },
        +    "plotM2": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "price": {
        +      "type": "number"
        +    },
        +    "priceGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "pricePerSqmGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "propertyType": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "propertyTypeLabel": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "rentPeriod": {
        +      "enum": [
        +        "month",
        +        null
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "roomLabel": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "titleSource": {
        +      "enum": [
        +        "listing",
        +        "generated"
        +      ],
        +      "type": "string"
        +    },
        +    "transaction": {
        +      "enum": [
        +        "sale",
        +        "rent"
        +      ],
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "listingNumber",
        +    "listingRef",
        +    "transaction",
        +    "title",
        +    "url",
        +    "contentLocale",
        +    "localeFallback",
        +    "price",
        +    "currency",
        +    "priceGbp",
        +    "city",
        +    "district",
        +    "propertyType",
        +    "bedrooms",
        +    "areaSqm",
        +    "features",
        +    "dataQuality"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / locale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / localeFallback
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / metadata / description
        Added value: +"Listing facts (price, rooms, area, features, data quality); no contact data."
      • addedOutput schema / properties / metadata / properties / area
        Added value: +{
        +  "properties": {
        +    "closedM2": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "plotM2": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "reasons": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "suspect": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / metadata / properties / areaSqm
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / metadata / properties / bedrooms
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / metadata / properties / code
        Added value: +{
        +  "description": "NOT_FOUND or SEARCH_BACKEND_UNAVAILABLE, when there is no listing to describe.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / metadata / properties / contentLocale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / metadata / properties / currency
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / metadata / properties / dataQuality
        Added value: +{
        +  "properties": {
        +    "areaSuspect": {
        +      "type": "boolean"
        +    },
        +    "flags": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "priceOutlier": {
        +      "type": "boolean"
        +    },
        +    "titleRoomMismatch": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / metadata / properties / features
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "key": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "source": {
        +        "enum": [
        +          "column",
        +          "label"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / metadata / properties / listingRef
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / metadata / properties / localeFallback
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / metadata / properties / monthlyRentGbp
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / metadata / properties / price
        Added value: +{
        +  "properties": {
        +    "amount": {
        +      "type": "number"
        +    },
        +    "currency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "gbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "perSqmGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "rentPeriod": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / metadata / properties / priceGBP
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / metadata / properties / pricePerSqmGBP
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / metadata / properties / propertyType
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / metadata / properties / rooms
        Added value: +{
        +  "properties": {
        +    "bedrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "isStudio": {
        +      "type": "boolean"
        +    },
        +    "label": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "livingRooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / metadata / properties / transaction
        Added value: +{
        +  "enum": [
        +    "sale",
        +    "rent"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / metadata / properties / type
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / metadata / required
        Removed value: -[
        -  "city",
        -  "district",
        -  "type",
        -  "bedrooms",
        -  "areaSqm",
        -  "priceGBP",
        -  "pricePerSqmGBP",
        -  "monthlyRentGbp",
        -  "currency",
        -  "listedAt",
        -  "locationPrecision"
        -]
      • addedOutput schema / properties / photoCount
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / photoUrls
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / photos
        Removed value: -{
        -  "items": {
        -    "properties": {
        -      "caption": {
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tags": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "url": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / requested
        Added value: +{
        +  "description": "The id as the caller sent it (cleaned, at most 200 characters).",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "id",
        -  "title",
        -  "text",
        -  "url"
        -]
    • Removedget_district_profile
    • Addedget_listing
    • Removedget_listing_by_number
    • Removedget_listing_detail
    • Removedget_price_index
    • Changedlist_locations43 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Optional — limit districts to a single city. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."New value: +"One place in detail: any spelling or language of a city, district or village (\"Kyrenia\", \"Alsancak\"). Omit to list every city."
      • addedInput schema / properties / includeAliases
        Added value: +{
        +  "description": "Also list accepted alternative spellings of each place (at most 6, Latin script). Default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeEmpty
        Added value: +{
        +  "description": "Also list places that have no public listing right now. Default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / locale
        Added value: +{
        +  "description": "Language of the answer. Pass the language the user writes in. Default en.",
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / ambiguous
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / cities / items / properties / activeCount
        Added value: +{
        +  "description": "Public listings under the place, sub-places included.",
        +  "properties": {
        +    "rent": {
        +      "type": "number"
        +    },
        +    "sale": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "sale",
        +    "rent",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / cities / items / properties / aliases
        Added value: +{
        +  "description": "Accepted input spellings (Latin script, at most 6).",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / cities / items / properties / children
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "activeCount": {
        +        "description": "Public listings under the place, sub-places included.",
        +        "properties": {
        +          "rent": {
        +            "type": "number"
        +          },
        +          "sale": {
        +            "type": "number"
        +          },
        +          "total": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "sale",
        +          "rent",
        +          "total"
        +        ],
        +        "type": "object"
        +      },
        +      "aliases": {
        +        "description": "Accepted input spellings (Latin script, at most 6).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "children": {
        +        "items": {
        +          "properties": {
        +            "activeCount": {
        +              "description": "Public listings under the place, sub-places included.",
        +              "properties": {
        +                "rent": {
        +                  "type": "number"
        +                },
        +                "sale": {
        +                  "type": "number"
        +                },
        +                "total": {
        +                  "type": "number"
        +                }
        +              },
        +              "required": [
        +                "sale",
        +                "rent",
        +                "total"
        +              ],
        +              "type": "object"
        +            },
        +            "aliases": {
        +              "description": "Accepted input spellings (Latin script, at most 6).",
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "id": {
        +              "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +              "type": "string"
        +            },
        +            "kind": {
        +              "enum": [
        +                "city",
        +                "district",
        +                "neighborhood",
        +                "subplace",
        +                "landmark",
        +                "region"
        +              ],
        +              "type": "string"
        +            },
        +            "members": {
        +              "description": "Region only: ids of its member districts.",
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "name": {
        +              "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +              "type": "string"
        +            },
        +            "officialName": {
        +              "description": "Official Turkish name, as listings store it.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "kind",
        +            "name",
        +            "officialName",
        +            "activeCount"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "id": {
        +        "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "city",
        +          "district",
        +          "neighborhood",
        +          "subplace",
        +          "landmark",
        +          "region"
        +        ],
        +        "type": "string"
        +      },
        +      "members": {
        +        "description": "Region only: ids of its member districts.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +        "type": "string"
        +      },
        +      "officialName": {
        +        "description": "Official Turkish name, as listings store it.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "kind",
        +      "name",
        +      "officialName",
        +      "activeCount"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / cities / items / properties / display
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / cities / items / properties / districtCount
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / cities / items / properties / districts
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / cities / items / properties / id
        Added value: +{
        +  "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / cities / items / properties / kind
        Added value: +{
        +  "enum": [
        +    "city",
        +    "district",
        +    "neighborhood",
        +    "subplace",
        +    "landmark",
        +    "region"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / cities / items / properties / members
        Added value: +{
        +  "description": "Region only: ids of its member districts.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / cities / items / properties / name
        Added value: +{
        +  "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / cities / items / properties / noDistrictRecorded
        Added value: +{
        +  "properties": {
        +    "rent": {
        +      "type": "number"
        +    },
        +    "sale": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "sale",
        +    "rent",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / cities / items / properties / officialName
        Added value: +{
        +  "description": "Official Turkish name, as listings store it.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / cities / items / properties / otherSpellings
        Added value: +{
        +  "properties": {
        +    "rent": {
        +      "type": "number"
        +    },
        +    "sale": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "sale",
        +    "rent",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / cities / items / properties / regions
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "activeCount": {
        +        "description": "Public listings under the place, sub-places included.",
        +        "properties": {
        +          "rent": {
        +            "type": "number"
        +          },
        +          "sale": {
        +            "type": "number"
        +          },
        +          "total": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "sale",
        +          "rent",
        +          "total"
        +        ],
        +        "type": "object"
        +      },
        +      "aliases": {
        +        "description": "Accepted input spellings (Latin script, at most 6).",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "id": {
        +        "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "city",
        +          "district",
        +          "neighborhood",
        +          "subplace",
        +          "landmark",
        +          "region"
        +        ],
        +        "type": "string"
        +      },
        +      "members": {
        +        "description": "Region only: ids of its member districts.",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "name": {
        +        "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +        "type": "string"
        +      },
        +      "officialName": {
        +        "description": "Official Turkish name, as listings store it.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "kind",
        +      "name",
        +      "officialName",
        +      "activeCount"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / cities / items / properties / slug
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / cities / items / required
        Added value: +[
        +  "id",
        +  "kind",
        +  "name",
        +  "officialName",
        +  "activeCount",
        +  "children",
        +  "noDistrictRecorded",
        +  "otherSpellings"
        +]
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Present on a soft answer: INVALID_LOCATION, OUT_OF_SCOPE or SEARCH_BACKEND_UNAVAILABLE.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / contentLocale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / dataSource
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / hiddenEmptyCount
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / includeAliases
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / includeEmpty
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / isEstimate
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / issues
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "allowedValues": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "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 / notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / outOfScope
        Added value: +{
        +  "properties": {
        +    "reason": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "reason"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / place
        Added value: +{
        +  "properties": {
        +    "activeCount": {
        +      "description": "Public listings under the place, sub-places included.",
        +      "properties": {
        +        "rent": {
        +          "type": "number"
        +        },
        +        "sale": {
        +          "type": "number"
        +        },
        +        "total": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "sale",
        +        "rent",
        +        "total"
        +      ],
        +      "type": "object"
        +    },
        +    "aliases": {
        +      "description": "Accepted input spellings (Latin script, at most 6).",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "children": {
        +      "items": {
        +        "properties": {
        +          "activeCount": {
        +            "description": "Public listings under the place, sub-places included.",
        +            "properties": {
        +              "rent": {
        +                "type": "number"
        +              },
        +              "sale": {
        +                "type": "number"
        +              },
        +              "total": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "sale",
        +              "rent",
        +              "total"
        +            ],
        +            "type": "object"
        +          },
        +          "aliases": {
        +            "description": "Accepted input spellings (Latin script, at most 6).",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "children": {
        +            "items": {
        +              "properties": {
        +                "activeCount": {
        +                  "description": "Public listings under the place, sub-places included.",
        +                  "properties": {
        +                    "rent": {
        +                      "type": "number"
        +                    },
        +                    "sale": {
        +                      "type": "number"
        +                    },
        +                    "total": {
        +                      "type": "number"
        +                    }
        +                  },
        +                  "required": [
        +                    "sale",
        +                    "rent",
        +                    "total"
        +                  ],
        +                  "type": "object"
        +                },
        +                "aliases": {
        +                  "description": "Accepted input spellings (Latin script, at most 6).",
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "id": {
        +                  "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +                  "type": "string"
        +                },
        +                "kind": {
        +                  "enum": [
        +                    "city",
        +                    "district",
        +                    "neighborhood",
        +                    "subplace",
        +                    "landmark",
        +                    "region"
        +                  ],
        +                  "type": "string"
        +                },
        +                "members": {
        +                  "description": "Region only: ids of its member districts.",
        +                  "items": {
        +                    "type": "string"
        +                  },
        +                  "type": "array"
        +                },
        +                "name": {
        +                  "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +                  "type": "string"
        +                },
        +                "officialName": {
        +                  "description": "Official Turkish name, as listings store it.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "kind",
        +                "name",
        +                "officialName",
        +                "activeCount"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +            "type": "string"
        +          },
        +          "kind": {
        +            "enum": [
        +              "city",
        +              "district",
        +              "neighborhood",
        +              "subplace",
        +              "landmark",
        +              "region"
        +            ],
        +            "type": "string"
        +          },
        +          "members": {
        +            "description": "Region only: ids of its member districts.",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +            "type": "string"
        +          },
        +          "officialName": {
        +            "description": "Official Turkish name, as listings store it.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "kind",
        +          "name",
        +          "officialName",
        +          "activeCount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "id": {
        +      "description": "Stable id of the place (a slug); every tool takes it back as a place.",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "enum": [
        +        "city",
        +        "district",
        +        "neighborhood",
        +        "subplace",
        +        "landmark",
        +        "region"
        +      ],
        +      "type": "string"
        +    },
        +    "members": {
        +      "description": "Region only: ids of its member districts.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "name": {
        +      "description": "Display name (Turkish / Latin; cities keep their English exonym outside Turkish).",
        +      "type": "string"
        +    },
        +    "officialName": {
        +      "description": "Official Turkish name, as listings store it.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "kind",
        +    "name",
        +    "officialName",
        +    "activeCount"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / registry
        Added value: +{
        +  "properties": {
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "version"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / scope
        Added value: +{
        +  "properties": {
        +    "matchedId": {
        +      "type": "string"
        +    },
        +    "matchedName": {
        +      "type": "string"
        +    },
        +    "path": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "readAs": {
        +      "enum": [
        +        "exact",
        +        "alias",
        +        "fuzzy"
        +      ],
        +      "type": "string"
        +    },
        +    "requested": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "enum": [
        +        "all",
        +        "city",
        +        "place"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "type"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / suggestions
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / textTruncated
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / totals
        Added value: +{
        +  "properties": {
        +    "rent": {
        +      "type": "number"
        +    },
        +    "sale": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "sale",
        +    "rent",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / properties / truncated
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / unassigned
        Added value: +{
        +  "properties": {
        +    "rent": {
        +      "type": "number"
        +    },
        +    "sale": {
        +      "type": "number"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "sale",
        +    "rent",
        +    "total"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / validCities
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "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: -[
        -  "cities"
        -]New value: +[]
    • Addedmarket_stats
    • Removedpayment_plan
    • Changedsearch136 fields changed
      • 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 / assumed
        Added value: +{
        +  "description": "What had to be assumed to make a constraint a filter (a currency, a band, a period).",
        +  "items": {
        +    "properties": {
        +      "assumed": {
        +        "additionalProperties": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "kind": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "kind",
        +      "assumed"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / clarifications
        Added value: +{
        +  "description": "Questions to ask the user instead of guessing.",
        +  "items": {
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "options": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "question": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "question"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • 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"
        +  ]
        +}
      • addedOutput schema / properties / criteria / description
        Added value: +"Everything the sentence was understood as, with the words each came from."
      • addedOutput schema / properties / criteria / items / properties / assumed
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • removedOutput schema / properties / criteria / items / properties / key
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / criteria / items / properties / kind
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / criteria / items / properties / note
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / criteria / items / properties / state
        Removed value: -{
        -  "enum": [
        -    "applied",
        -    "unresolved",
        -    "not_supported"
        -  ],
        -  "type": "string"
        -}
      • addedOutput schema / properties / criteria / items / properties / text
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / criteria / items / properties / value / type
        Removed value: -"string"
      • changedOutput schema / properties / criteria / items / required
        Previous value: -[
        -  "key",
        -  "value",
        -  "state"
        -]New value: +[
        +  "kind",
        +  "text"
        +]
      • addedOutput schema / properties / dataSource
        Added 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"
        +}
      • 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"
        +}
      • addedOutput schema / properties / lookup
        Added value: +{
        +  "description": "Present for an explicit listing number (\"EVL-100464\").",
        +  "properties": {
        +    "found": {
        +      "type": "boolean"
        +    },
        +    "listingNumber": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / message
        Added value: +{
        +  "description": "The reason, in the answer language, when there is nothing to list (content[0].text stays the connector JSON).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / nearbyAlternatives / description
        Added value: +"Only when nothing matched: ONE relaxation (district dropped, else budget + 15 %), at most 5 listings."
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / areaSuspect
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / bathrooms
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / city / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / cityLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / contentLocale
        Added value: +{
        +  "enum": [
        +    "tr",
        +    "en",
        +    "ru",
        +    "de",
        +    "ar"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / currency / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / nearbyAlternatives / 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 / nearbyAlternatives / properties / listings / items / properties / district / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / featureCount
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / nearbyAlternatives / 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 / nearbyAlternatives / properties / listings / items / properties / furnished
        Added value: +{
        +  "enum": [
        +    "yes",
        +    "no",
        +    "unknown"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / isStudio
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / listedAt
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / listingRef
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / localeFallback
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / locationPrecision / enum
        Previous value: -[
        -  "exact",
        -  "district",
        -  "city"
        -]New value: +[
        +  "approximate_grid",
        +  "district",
        +  "city",
        +  "unmapped",
        +  null
        +]
      • changedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / locationPrecision / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / officeName
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / photoCount
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / plotM2
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / priceGbp / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / pricePerSqmGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / propertyTypeLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / rentPeriod
        Added value: +{
        +  "enum": [
        +    "month",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / roomLabel
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / titleSource
        Added value: +{
        +  "enum": [
        +    "listing",
        +    "generated"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / transaction
        Added value: +{
        +  "enum": [
        +    "sale",
        +    "rent"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties / updatedAt
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / nearbyAlternatives / 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 / nearbyAlternatives / properties / priceMax
        Added value: +{
        +  "type": "number"
        +}
      • removedOutput schema / properties / outOfScope
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / placesReadAs
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "as": {
        +        "type": "string"
        +      },
        +      "input": {
        +        "type": "string"
        +      },
        +      "match": {
        +        "enum": [
        +          "alias",
        +          "fuzzy"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / query
        Added value: +{
        +  "description": "The query as read (cleaned, bounded).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / results / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "url"
        +]
      • addedOutput schema / properties / shown
        Added value: +{
        +  "description": "Listings in this response.",
        +  "type": "number"
        +}
      • 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
        Added value: +{
        +  "description": "The same number as `total` (the v2 name).",
        +  "type": "number"
        +}
      • addedOutput schema / properties / transactionAssumption
        Added value: +{
        +  "properties": {
        +    "reason": {
        +      "type": "string"
        +    },
        +    "value": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
      • 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 / unresolved / description
        Added value: +"Words that did NOT become a filter, with the reason."
      • addedOutput schema / properties / unresolved / items / properties
        Added value: +{
        +  "reason": {
        +    "type": "string"
        +  },
        +  "text": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / unresolved / items / required
        Added value: +[
        +  "text",
        +  "reason"
        +]
      • changedOutput schema / properties / unresolved / items / type
        Previous value: -"string"New value: +"object"
      • addedOutput schema / properties / warnings
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "code": {
        +        "type": "string"
        +      },
        +      "field": {
        +        "type": "string"
        +      },
        +      "message": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "code",
        +      "message"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedsearch_listings143 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"
        +]
  7. 2 tool updates
    • Changedget_price_index1 field changed
      • addedOutput schema / properties / dataSource / enum
        Added value: +[
        +  "live_active_listings",
        +  "daily_snapshot"
        +]
    • Changedsearch_listings2 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"
        +}
  8. 1 tool update
    • Changedget_price_index12 fields changed
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nDuplicates
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nIqrExcluded
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nRaw
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nUnique
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nDuplicates
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nIqrExcluded
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nRaw
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nUnique
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / excludedDuplicates
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / excludedNotEligible
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / excludedOutliers
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / indexEligibleListings
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  9. 12 tool updates
    • Changedcompare_cities4 fields changed
      • addedInput schema / properties / cities / items / description
        Added value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / cities / items / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / cities / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
    • Changedcompare_properties3 fields changed
      • addedInput schema / properties / listingIds
        Added value: +{
        +  "description": "Evlek listing UUIDs or listing numbers (2-4)",
        +  "items": {
        +    "description": "Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / listing_ids
        Removed value: -{
        -  "description": "Evlek listing UUIDs (2-4)",
        -  "items": {
        -    "description": "Evlek listing UUID",
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "listing_ids"
        -]New value: +[
        +  "listingIds"
        +]
    • Changedconvert_currency4 fields changed
      • addedOutput schema / properties / amounts / properties
        Added value: +{
        +  "EUR": {
        +    "type": "number"
        +  },
        +  "GBP": {
        +    "type": "number"
        +  },
        +  "TRY": {
        +    "type": "number"
        +  },
        +  "USD": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / amounts / required
        Added value: +[
        +  "GBP",
        +  "EUR",
        +  "USD",
        +  "TRY"
        +]
      • addedOutput schema / properties / fx / properties
        Added value: +{
        +  "asOf": {
        +    "type": "string"
        +  },
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "GBP": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "GBP",
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "stored_current_rates"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fx / required
        Added value: +[
        +  "base",
        +  "source",
        +  "asOf",
        +  "rates"
        +]
    • Changedfetch2 fields changed
      • addedOutput schema / properties / metadata / properties
        Added value: +{
        +  "areaSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "bedrooms": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "city": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "currency": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "district": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "listedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "locationPrecision": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "monthlyRentGbp": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "priceGBP": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "pricePerSqmGBP": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "type": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / metadata / required
        Added value: +[
        +  "city",
        +  "district",
        +  "type",
        +  "bedrooms",
        +  "areaSqm",
        +  "priceGBP",
        +  "pricePerSqmGBP",
        +  "monthlyRentGbp",
        +  "currency",
        +  "listedAt",
        +  "locationPrecision"
        +]
    • Changedget_district_profile14 fields changed
      • addedInput schema / properties / city / description
        Added value: +"City containing the district. 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 (2-60 chars)"New value: +"District name (2-60 chars), matched accent/case-insensitively against the active-listing district list"
      • addedOutput schema / properties / askingRentToAskingPricePct
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / indicativeGrossRentToPricePct
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / isObservedIncome
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / isObservedYield
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / ratioMetricType
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / rent / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / rent / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / sale / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / sale / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / yieldMetricType
        Removed value: -{
        -  "type": "string"
        -}
    • Changedget_listing_by_number5 fields changed
      • addedInput schema / properties / listingNumber
        Added value: +{
        +  "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.",
        +  "type": [
        +    "string",
        +    "number"
        +  ]
        +}
      • removedInput schema / properties / listing_number
        Removed value: -{
        -  "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • changedInput schema / required
        Previous value: -[
        -  "listing_number"
        -]New value: +[
        +  "listingNumber"
        +]
      • 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"
        +]
    • Changedget_listing_detail5 fields changed
      • addedInput schema / properties / propertyId
        Added value: +{
        +  "description": "Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")",
        +  "type": "string"
        +}
      • removedInput schema / properties / property_id
        Removed value: -{
        -  "description": "Evlek listing UUID",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "property_id"
        -]New value: +[
        +  "propertyId"
        +]
      • 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"
        +]
    • Changedget_price_index6 fields changed
      • addedInput schema / properties / city / description
        Added value: +"Filter to a single city (omit for all cities). Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / cities / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
    • Changedlist_locations3 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Optional — limit districts to a single city slug."New value: +"Optional — limit districts to a single city. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedpayment_plan4 fields changed
      • addedOutput schema / properties / amounts / properties
        Added value: +{
        +  "EUR": {
        +    "type": "number"
        +  },
        +  "GBP": {
        +    "type": "number"
        +  },
        +  "TRY": {
        +    "type": "number"
        +  },
        +  "USD": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / amounts / required
        Added value: +[
        +  "GBP",
        +  "EUR",
        +  "USD",
        +  "TRY"
        +]
      • addedOutput schema / properties / fx / properties
        Added value: +{
        +  "asOf": {
        +    "type": "string"
        +  },
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "GBP": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "GBP",
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "stored_current_rates"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fx / required
        Added value: +[
        +  "base",
        +  "source",
        +  "asOf",
        +  "rates"
        +]
    • Changedsearch7 fields changed
      • 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"
        +]
      • addedOutput schema / properties / listings / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "city",
        +  "district",
        +  "price",
        +  "priceGbp",
        +  "currency",
        +  "type",
        +  "url"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties
        Added value: +{
        +  "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"
        +    ]
        +  },
        +  "locationPrecision": {
        +    "enum": [
        +      "exact",
        +      "district",
        +      "city"
        +    ],
        +    "type": "string"
        +  },
        +  "monthlyRentGbp": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "price": {
        +    "type": "number"
        +  },
        +  "priceGbp": {
        +    "type": "number"
        +  },
        +  "propertyType": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "title": {
        +    "type": "string"
        +  },
        +  "type": {
        +    "type": "string"
        +  },
        +  "url": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "city",
        +  "district",
        +  "price",
        +  "priceGbp",
        +  "currency",
        +  "type",
        +  "url"
        +]
    • Changedsearch_listings7 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"
        +]
  10. 12 tool updates
    • Changedcompare_cities4 fields changed
      • addedOutput schema / properties / cities / items
        Added value: +{
        +  "properties": {
        +    "activeCount": {
        +      "type": "number"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "hasData": {
        +      "type": "boolean"
        +    },
        +    "lowSample": {
        +      "type": "boolean"
        +    },
        +    "medianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "medianPricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p25Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p75Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "provenance": {
        +      "type": "object"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "topDistrict": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "topDistrictMedianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "withheldReason": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "city",
        +    "activeCount",
        +    "hasData"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / generatedAt
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "type",
        -  "cities"
        -]New value: +[
        +  "type",
        +  "dataAsOf",
        +  "cities"
        +]
    • Changedcompare_properties1 field changed
      • addedOutput schema / properties / listings / items
        Added value: +{
        +  "properties": {
        +    "area": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bathrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bedrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "district": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "monthlyRentGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "number": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "type": "number"
        +    },
        +    "priceGbp": {
        +      "type": "number"
        +    },
        +    "pricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "title",
        +    "price",
        +    "priceGbp",
        +    "type",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Addedconvert_currency
    • Changedget_district_profile6 fields changed
      • addedOutput schema / properties / cleanSampleTotal
        Added value: +{
        +  "description": "sale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings",
        +  "type": "number"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / rent / properties
        Added value: +{
        +  "count": {
        +    "type": "number"
        +  },
        +  "maturity": {
        +    "enum": [
        +      "olgun",
        +      "öncü",
        +      "biriktiriyor"
        +    ],
        +    "type": "string"
        +  },
        +  "median": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "medianPerSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p25": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p75": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "provenance": {
        +    "type": "object"
        +  },
        +  "status": {
        +    "enum": [
        +      "proven",
        +      "preliminary",
        +      "collecting"
        +    ],
        +    "type": "string"
        +  },
        +  "withheldReason": {
        +    "enum": [
        +      "insufficient_sample",
        +      "no_value",
        +      null
        +    ],
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / sale / properties
        Added value: +{
        +  "count": {
        +    "type": "number"
        +  },
        +  "maturity": {
        +    "enum": [
        +      "olgun",
        +      "öncü",
        +      "biriktiriyor"
        +    ],
        +    "type": "string"
        +  },
        +  "median": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "medianPerSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p25": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p75": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "provenance": {
        +    "type": "object"
        +  },
        +  "status": {
        +    "enum": [
        +      "proven",
        +      "preliminary",
        +      "collecting"
        +    ],
        +    "type": "string"
        +  },
        +  "withheldReason": {
        +    "enum": [
        +      "insufficient_sample",
        +      "no_value",
        +      null
        +    ],
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • removedOutput schema / properties / totalActive
        Removed value: -{
        -  "type": "number"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "city",
        -  "district",
        -  "totalActive"
        -]New value: +[
        +  "city",
        +  "district",
        +  "cleanSampleTotal"
        +]
    • Changedget_listing_by_number2 fields changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedget_listing_detail2 fields changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedget_price_index4 fields changed
      • addedOutput schema / properties / cities / items
        Added value: +{
        +  "properties": {
        +    "city": {
        +      "type": "string"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "districts": {
        +      "items": {
        +        "properties": {
        +          "count": {
        +            "type": "number"
        +          },
        +          "district": {
        +            "type": "string"
        +          },
        +          "lowSample": {
        +            "type": "boolean"
        +          },
        +          "medianPrice": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "medianPricePerSqm": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "provenance": {
        +            "type": "object"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "withheldReason": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "district",
        +          "count",
        +          "lowSample",
        +          "medianPrice"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "lowSample": {
        +      "type": "boolean"
        +    },
        +    "medianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "medianPricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p25Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p75Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "provenance": {
        +      "type": "object"
        +    },
        +    "status": {
        +      "enum": [
        +        "proven",
        +        "preliminary",
        +        "collecting"
        +      ],
        +      "type": "string"
        +    },
        +    "withheldReason": {
        +      "enum": [
        +        "insufficient_sample",
        +        "no_value",
        +        null
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "city",
        +    "count",
        +    "status",
        +    "lowSample",
        +    "withheldReason",
        +    "medianPrice",
        +    "districts"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / generatedAt
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "type",
        -  "cities"
        -]New value: +[
        +  "type",
        +  "dataAsOf",
        +  "cities"
        +]
    • Removedget_yield_estimate
    • Changedsearch5 fields changed
      • addedOutput schema / properties / criteria
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "key": {
        +        "type": "string"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "state": {
        +        "enum": [
        +          "applied",
        +          "unresolved",
        +          "not_supported"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "key",
        +      "value",
        +      "state"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / listings / items / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / listings / items / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / listings / items / properties / propertyType
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives
        Added value: +{
        +  "properties": {
        +    "listings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "relaxed": {
        +      "enum": [
        +        "district",
        +        "maxPrice"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "relaxed",
        +    "listings"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedsearch_listings15 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"
        +]
    • Removedstudent_housing
    • Removedsuggest_neighborhood
  11. 3 tool updates
    • Changedget_listing_by_number1 field changed
      • addedOutput schema / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
    • Changedget_listing_detail1 field changed
      • addedOutput schema / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / listings / items / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
  12. 1 tool update
    • Changedsearch_listings1 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"
        +]

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to query Polish new-build housing data: developers' asking prices with price history, real transaction prices from the RCN register, and GUS/NBP market statistics, plus searchable locations, offers, investments and developers. Exposes thirteen read-only tools over the public deweloperuch.pl data, usable from any MCP client or the bundled CLI.
    13
    148 PyPI
    28
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Gives AI agents read-only access to Bulgarian real-estate data from imotai.bg, letting them list districts, search and fetch active listings, pull district-level market statistics, and estimate values from current asking prices. All results are field-allowlisted and rate limited, with no credentials, broker contact details, or written descriptions exposed.
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server providing 56 tools to query Qobrix real-estate CRM data, covering listings, leads, viewings, offers, contracts, analytics, and more, with RESO Data Dictionary alignment and caching support.
    64
    3
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.