[{"slug":"ZV-2026-2021","server_name":"evlek.app","severity":"breaking","title":"evlek.app: Resource ui://evlek/listing-cards-v3-1.html was removed, consumers reading it will break.","summary":"[risky] Field agencyName was added to get_listing output. [risky] Field priceLabel was added to get_listing output. [risky] Field ref was added to get_listing output. [risky] Field priceRange was added to search_listings output. [risky] Field refs was added to search_listings output. [risky] Field topMatch was added to search_listings output. [breaking] Resource ui://evlek/listing-cards-v3-1.html was removed, consumers reading it will break. [breaking] Resource ui://evlek/listing-detail-v3-1.html was removed, consumers reading it will break. [breaking] Resource ui://evlek/price-index-v3-1.html was removed, consumers reading it will break. [safe] Resource ui://evlek/listing-cards-v3-2.html was added. [safe] Resource ui://evlek/listing-detail-v3-2.html was added. [safe] Resource ui://evlek/price-index-v3-2.html was added.","changes":[{"kind":"output_property_added","path":"outputSchema.properties.agencyName","tool":"get_listing","after":{"type":["string","null"],"description":"ChatGPT summary: office name."},"detail":"Field `agencyName` was added to `get_listing` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.priceLabel","tool":"get_listing","after":{"type":"string","description":"ChatGPT summary: printed price."},"detail":"Field `priceLabel` was added to `get_listing` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.ref","tool":"get_listing","after":{"type":["string","null"],"description":"ChatGPT summary: listing number."},"detail":"Field `ref` was added to `get_listing` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.priceRange","tool":"search_listings","after":{"type":["object","null"],"properties":{"max":{"type":"number"},"min":{"type":"number"},"scope":{"type":"string"},"period":{"type":"string"},"currency":{"type":"string"}}},"detail":"Field `priceRange` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.refs","tool":"search_listings","after":{"type":"array","items":{"type":"string"}},"detail":"Field `refs` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.topMatch","tool":"search_listings","after":{"type":"object","properties":{"ref":{"type":["string","null"]},"district":{"type":["string","null"]},"priceLabel":{"type":"string"}}},"detail":"Field `topMatch` was added to `search_listings` output.","severity":"risky"},{"kind":"resource_removed","tool":"ui://evlek/listing-cards-v3-1.html","before":"ui://evlek/listing-cards-v3-1.html","detail":"Resource `ui://evlek/listing-cards-v3-1.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_removed","tool":"ui://evlek/listing-detail-v3-1.html","before":"ui://evlek/listing-detail-v3-1.html","detail":"Resource `ui://evlek/listing-detail-v3-1.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_removed","tool":"ui://evlek/price-index-v3-1.html","before":"ui://evlek/price-index-v3-1.html","detail":"Resource `ui://evlek/price-index-v3-1.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://evlek/listing-cards-v3-2.html","after":"ui://evlek/listing-cards-v3-2.html","detail":"Resource `ui://evlek/listing-cards-v3-2.html` was added.","severity":"safe"},{"kind":"resource_added","tool":"ui://evlek/listing-detail-v3-2.html","after":"ui://evlek/listing-detail-v3-2.html","detail":"Resource `ui://evlek/listing-detail-v3-2.html` was added.","severity":"safe"},{"kind":"resource_added","tool":"ui://evlek/price-index-v3-2.html","after":"ui://evlek/price-index-v3-2.html","detail":"Resource `ui://evlek/price-index-v3-2.html` was added.","severity":"safe"}],"published_at":"2026-10-09T23:18:17.137Z"},{"slug":"ZV-2026-2000","server_name":"evlek.app","severity":"breaking","title":"evlek.app: Tool compare_cities was removed.","summary":"[breaking] Tool compare_cities was removed. [breaking] Tool compare_properties was removed. [breaking] Tool get_district_profile was removed. [breaking] Tool get_listing_by_number was removed. [breaking] Tool get_listing_detail was removed. [breaking] Tool get_price_index was removed. [breaking] Tool payment_plan was removed. [safe] Tool compare_listings was added. [safe] Tool get_listing was added. [safe] Tool market_stats was added. [risky] Description of convert_currency changed (67% word delta). [breaking] Field price was removed from convert_currency input; consumers still sending it may be rejected or silently ignored. [breaking] New required field amount on convert_currency; requests without it will fail. [risky] Optional field locale was added to convert_currency; may shift model behaviour. [risky] Field assumedCurrency was added to convert_currency output. [risky] Field code was added to convert_currency output. [risky] Field contentLocale was added to convert_currency output. [risky] Field issues was added to convert_currency output. [risky] Field rateAgeHours was added to convert_currency output. [risky] Field reason was added to convert_currency output. [risky] Field retryable was added to convert_currency output. [risky] Field stale was added to convert_currency output. [risky] Field warnings was added to convert_currency output. [breaking] inputCurrency on convert_currency narrowed to a closed enum (GBP, EUR, USD, TRY); previously valid values may now be rejected. [risky] Description of fetch changed (52% word delta). [breaking] Field photos was removed from fetch output; consumers reading it will break. [risky] Field code was added to fetch output. [risky] Field contentLocale was added to fetch output. [risky] Field found was added to fetch output. [risky] Field listing was added to fetch output. [risky] Field locale was added to fetch output. [risky] Field localeFallback was added to fetch output. [risky] Field photoCount was added to fetch output. [","changes":[{"kind":"tool_removed","tool":"compare_cities","detail":"Tool `compare_cities` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"compare_properties","detail":"Tool `compare_properties` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_district_profile","detail":"Tool `get_district_profile` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_listing_by_number","detail":"Tool `get_listing_by_number` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_listing_detail","detail":"Tool `get_listing_detail` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"get_price_index","detail":"Tool `get_price_index` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"payment_plan","detail":"Tool `payment_plan` was removed.","severity":"breaking"},{"kind":"tool_added","tool":"compare_listings","detail":"Tool `compare_listings` was added.","severity":"safe"},{"kind":"tool_added","tool":"get_listing","detail":"Tool `get_listing` was added.","severity":"safe"},{"kind":"tool_added","tool":"market_stats","detail":"Tool `market_stats` was added.","severity":"safe"},{"kind":"description_changed","tool":"convert_currency","after":"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).","before":"Converts an entered property asking-price amount across GBP/EUR/USD/TRY when complete, valid, fresh, date-stamped stored FX rates are available; otherwise it fails closed without amounts. Currency conversion only: no payment plan, deposit schedule, installment schedule, acquisition-cost estimate, or advice.","detail":"Description of `convert_currency` changed (67% word delta).","severity":"risky","descriptionDelta":0.6666666666666667},{"kind":"input_property_removed","path":"inputSchema.properties.price","tool":"convert_currency","before":{"type":"number","maximum":100000000,"minimum":1000,"description":"Entered property asking-price amount; not a deposit or installment."},"detail":"Field `price` was removed from `convert_currency` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_required_added","path":"inputSchema.properties.amount","tool":"convert_currency","after":{"type":"number","maximum":10000000000,"minimum":1,"description":"Amount to convert: a property price, a monthly rent, any amount from 1 up. Not a deposit or an instalment plan."},"detail":"New required field `amount` on `convert_currency`; requests without it will fail.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.locale","tool":"convert_currency","after":{"enum":["tr","en","ru","de","ar"],"type":"string","description":"Language of the answer and the number format. Pass the language the user writes in. Default en."},"detail":"Optional field `locale` was added to `convert_currency`; may shift model behaviour.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.assumedCurrency","tool":"convert_currency","after":{"type":"boolean","description":"True when no currency was given and GBP was assumed."},"detail":"Field `assumedCurrency` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.code","tool":"convert_currency","after":{"type":"string","description":"Present on a soft refusal (FX_UNAVAILABLE) and on invalid arguments (INVALID_PARAMS)."},"detail":"Field `code` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.contentLocale","tool":"convert_currency","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `contentLocale` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.issues","tool":"convert_currency","after":{"type":"array","items":{"type":"object","required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"},"suggestion":{"type":"string"},"allowedValues":{"type":"array","items":{"type":"string"}}}}},"detail":"Field `issues` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.rateAgeHours","tool":"convert_currency","after":{"type":"number","description":"FX_UNAVAILABLE with reason too_old: how old the stored rates are, in hours."},"detail":"Field `rateAgeHours` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.reason","tool":"convert_currency","after":{"enum":["unavailable","too_old"],"type":"string"},"detail":"Field `reason` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.retryable","tool":"convert_currency","after":{"type":"boolean"},"detail":"Field `retryable` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.stale","tool":"convert_currency","after":{"type":"boolean","description":"True when the stored rates are older than 24 hours."},"detail":"Field `stale` was added to `convert_currency` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.warnings","tool":"convert_currency","after":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}},"detail":"Field `warnings` was added to `convert_currency` output.","severity":"risky"},{"kind":"enum_narrowed","path":"outputSchema.properties.inputCurrency","tool":"convert_currency","after":"enum[GBP,EUR,USD,TRY]","before":"open","detail":"`inputCurrency` on `convert_currency` narrowed to a closed enum (GBP, EUR, USD, TRY); previously valid values may now be rejected.","severity":"breaking"},{"kind":"description_changed","tool":"fetch","after":"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: this fixed id-only form exists for the ChatGPT/OpenAI connector contract. Use when: an id from search is known. Don't use for: discovery (use search first) or another answer language (use get_listing).","before":"Fetch the full detail of one Evlek listing by id (from search): title, description, GBP-normalized price, location, size, amenities. Same data as get_listing_detail — this fixed id-only form exists for the ChatGPT/OpenAI connector contract. Use when: an id from search is known. Don't use for: discovery — use search first.","detail":"Description of `fetch` changed (52% word delta).","severity":"risky","descriptionDelta":0.5194805194805194},{"kind":"output_property_removed","path":"outputSchema.properties.photos","tool":"fetch","before":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"caption":{"type":["string","null"]}}}},"detail":"Field `photos` was removed from `fetch` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.code","tool":"fetch","after":{"type":"string","description":"NOT_FOUND (found is false) or SEARCH_BACKEND_UNAVAILABLE (retryable)."},"detail":"Field `code` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.contentLocale","tool":"fetch","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `contentLocale` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.found","tool":"fetch","after":{"type":"boolean"},"detail":"Field `found` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.listing","tool":"fetch","after":{"type":"object","required":["id","listingNumber","listingRef","transaction","title","url","contentLocale","localeFallback","price","currency","priceGbp","city","district","propertyType","bedrooms","areaSqm","features","dataQuality"],"properties":{"id":{"type":"string"},"url":{"type":"string"},"city":{"type":["string","null"]},"notes":{"type":"array","items":{"type":"string"}},"price":{"type":"number"},"title":{"type":"string"},"plotM2":{"type":["number","null"]},"areaSqm":{"type":["number","null"]},"bedrooms":{"type":["number","null"]},"currency":{"type":["string","null"]},"district":{"type":["string","null"]},"features":{"type":"array","items":{"type":"object","required":["key","label","source"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"source":{"enum":["column","label"],"type":"string"}}}},"isStudio":{"type":"boolean"},"listedAt":{"type":["string","null"]},"priceGbp":{"type":["number","null"]},"bathrooms":{"type":["number","null"]},"cityLabel":{"type":["string","null"]},"furnished":{"enum":["yes","no","unknown"],"type":"string"},"roomLabel":{"type":["string","null"]},"updatedAt":{"type":["string","null"]},"listingRef":{"type":["string","null"]},"officeName":{"type":["string","null"]},"photoCount":{"type":"number"},"rentPeriod":{"enum":["month",null],"type":["string","null"]},"areaSuspect":{"type":"boolean"},"dataQuality":{"type":"object","required":["flags","priceOutlier","areaSuspect","titleRoomMismatch"],"properties":{"flags":{"type":"array","items":{"type":"string"}},"areaSuspect":{"type":"boolean"},"priceOutlier":{"type":"boolean"},"titleRoomMismatch":{"type":"boolean"}}},"titleSource":{"enum":["listing","generated"],"type":"string"},"transaction":{"enum":["sale","rent"],"type":"string"},"featureCount":{"type":"number"},"propertyType":{"type":["string","null"]},"contentLocale":{"enum":["tr","en","ru","de","ar"],"type":"string"},"coverImageUrl":{"type":["string","null"]},"listingNumber":{"type":["number","null"]},"localeFallback":{"type":"boolean"},"monthlyRentGbp":{"type":["number","null"]},"pricePerSqmGbp":{"type":["number","null"]},"matchedFeatures":{"type":"array","items":{"type":"string"},"description":"The requested amenities this listing has, in request order (canonical keys); empty when none were requested."},"locationPrecision":{"enum":["approximate_grid","district","city","unmapped",null],"type":["string","null"]},"propertyTypeLabel":{"type":["string","null"]}},"description":"The listing card (same shape as search_listings)."},"detail":"Field `listing` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.locale","tool":"fetch","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `locale` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.localeFallback","tool":"fetch","after":{"type":"boolean"},"detail":"Field `localeFallback` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.photoCount","tool":"fetch","after":{"type":"number"},"detail":"Field `photoCount` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.photoUrls","tool":"fetch","after":{"type":"array","items":{"type":"string"}},"detail":"Field `photoUrls` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.requested","tool":"fetch","after":{"type":["string","null"],"description":"The id as the caller sent it (cleaned, at most 200 characters)."},"detail":"Field `requested` was added to `fetch` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.retryable","tool":"fetch","after":{"type":"boolean"},"detail":"Field `retryable` was added to `fetch` output.","severity":"risky"},{"kind":"description_changed","tool":"list_locations","after":"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.","before":"Return canonical KKTC city slugs plus districts represented by active Evlek sale or long-term-rent listings. Live inventory-location facts only; holiday-home inventory remains unavailable.","detail":"Description of `list_locations` changed (89% word delta).","severity":"risky","descriptionDelta":0.8928571428571429},{"kind":"input_property_added","path":"inputSchema.properties.includeAliases","tool":"list_locations","after":{"type":"boolean","description":"Also list accepted alternative spellings of each place (at most 6, Latin script). Default false."},"detail":"Optional field `includeAliases` was added to `list_locations`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.includeEmpty","tool":"list_locations","after":{"type":"boolean","description":"Also list places that have no public listing right now. Default false."},"detail":"Optional field `includeEmpty` was added to `list_locations`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.locale","tool":"list_locations","after":{"enum":["tr","en","ru","de","ar"],"type":"string","description":"Language of the answer. Pass the language the user writes in. Default en."},"detail":"Optional field `locale` was added to `list_locations`; may shift model behaviour.","severity":"risky"},{"kind":"output_property_removed","path":"outputSchema.properties.dataSource","tool":"list_locations","before":{"type":"string"},"detail":"Field `dataSource` was removed from `list_locations` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_renamed","path":"outputSchema.properties.truncated","tool":"list_locations","after":"ambiguous","before":"truncated","detail":"Field `truncated` was renamed to `ambiguous` on `list_locations`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.code","tool":"list_locations","after":{"type":"string","description":"Present on a soft answer: INVALID_LOCATION, OUT_OF_SCOPE or SEARCH_BACKEND_UNAVAILABLE."},"detail":"Field `code` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.contentLocale","tool":"list_locations","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `contentLocale` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.hiddenEmptyCount","tool":"list_locations","after":{"type":"number"},"detail":"Field `hiddenEmptyCount` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_renamed","path":"outputSchema.properties.isEstimate","tool":"list_locations","after":"includeAliases","before":"isEstimate","detail":"Field `isEstimate` was renamed to `includeAliases` on `list_locations`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.includeEmpty","tool":"list_locations","after":{"type":"boolean"},"detail":"Field `includeEmpty` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.issues","tool":"list_locations","after":{"type":"array","items":{"type":"object","required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"},"suggestion":{"type":"string"},"allowedValues":{"type":"array","items":{"type":"string"}}}}},"detail":"Field `issues` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.notes","tool":"list_locations","after":{"type":"array","items":{"type":"string"}},"detail":"Field `notes` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.outOfScope","tool":"list_locations","after":{"type":"object","required":["reason"],"properties":{"reason":{"type":"string"}}},"detail":"Field `outOfScope` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.place","tool":"list_locations","after":{"type":"object","required":["id","kind","name","officialName","activeCount"],"properties":{"id":{"type":"string","description":"Stable id of the place (a slug); every tool takes it back as a place."},"kind":{"enum":["city","district","neighborhood","subplace","landmark","region"],"type":"string"},"name":{"type":"string","description":"Display name (Turkish / Latin; cities keep their English exonym outside Turkish)."},"aliases":{"type":"array","items":{"type":"string"},"description":"Accepted input spellings (Latin script, at most 6)."},"members":{"type":"array","items":{"type":"string"},"description":"Region only: ids of its member districts."},"children":{"type":"array","items":{"type":"object","required":["id","kind","name","officialName","activeCount"],"properties":{"id":{"type":"string","description":"Stable id of the place (a slug); every tool takes it back as a place."},"kind":{"enum":["city","district","neighborhood","subplace","landmark","region"],"type":"string"},"name":{"type":"string","description":"Display name (Turkish / Latin; cities keep their English exonym outside Turkish)."},"aliases":{"type":"array","items":{"type":"string"},"description":"Accepted input spellings (Latin script, at most 6)."},"members":{"type":"array","items":{"type":"string"},"description":"Region only: ids of its member districts."},"children":{"type":"array","items":{"type":"object","required":["id","kind","name","officialName","activeCount"],"properties":{"id":{"type":"string","description":"Stable id of the place (a slug); every tool takes it back as a place."},"kind":{"enum":["city","district","neighborhood","subplace","landmark","region"],"type":"string"},"name":{"type":"string","description":"Display name (Turkish / Latin; cities keep their English exonym outside Turkish)."},"aliases":{"type":"array","items":{"type":"string"},"description":"Accepted input spellings (Latin script, at most 6)."},"members":{"type":"array","items":{"type":"string"},"description":"Region only: ids of its member districts."},"activeCount":{"type":"object","required":["sale","rent","total"],"properties":{"rent":{"type":"number"},"sale":{"type":"number"},"total":{"type":"number"}},"description":"Public listings under the place, sub-places included."},"officialName":{"type":"string","description":"Official Turkish name, as listings store it."}}}},"activeCount":{"type":"object","required":["sale","rent","total"],"properties":{"rent":{"type":"number"},"sale":{"type":"number"},"total":{"type":"number"}},"description":"Public listings under the place, sub-places included."},"officialName":{"type":"string","description":"Official Turkish name, as listings store it."}}}},"activeCount":{"type":"object","required":["sale","rent","total"],"properties":{"rent":{"type":"number"},"sale":{"type":"number"},"total":{"type":"number"}},"description":"Public listings under the place, sub-places included."},"officialName":{"type":"string","description":"Official Turkish name, as listings store it."}}},"detail":"Field `place` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.registry","tool":"list_locations","after":{"type":"object","required":["version"],"properties":{"version":{"type":"string"}}},"detail":"Field `registry` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.retryable","tool":"list_locations","after":{"type":"boolean"},"detail":"Field `retryable` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.scope","tool":"list_locations","after":{"type":"object","required":["type"],"properties":{"path":{"type":"array","items":{"type":"string"}},"type":{"enum":["all","city","place"],"type":"string"},"readAs":{"enum":["exact","alias","fuzzy"],"type":"string"},"matchedId":{"type":"string"},"requested":{"type":"string"},"matchedName":{"type":"string"}}},"detail":"Field `scope` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.suggestions","tool":"list_locations","after":{"type":"array","items":{"type":"string"}},"detail":"Field `suggestions` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.textTruncated","tool":"list_locations","after":{"type":"boolean"},"detail":"Field `textTruncated` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.totals","tool":"list_locations","after":{"type":"object","required":["sale","rent","total"],"properties":{"rent":{"type":"number"},"sale":{"type":"number"},"total":{"type":"number"}}},"detail":"Field `totals` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.unassigned","tool":"list_locations","after":{"type":"object","required":["sale","rent","total"],"properties":{"rent":{"type":"number"},"sale":{"type":"number"},"total":{"type":"number"}}},"detail":"Field `unassigned` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.validCities","tool":"list_locations","after":{"type":"array","items":{"type":"string"}},"detail":"Field `validCities` was added to `list_locations` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.warnings","tool":"list_locations","after":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}},"detail":"Field `warnings` was added to `list_locations` output.","severity":"risky"},{"kind":"description_changed","tool":"search","after":"Search live Northern Cyprus (KKTC/TRNC) property listings on Evlek with a free-text query in Turkish, English, Russian, German or Arabic. Returns matching listings as id/title/url for the fetch tool, newest first (sale and rent as two groups when the query names neither). The answer language follows the language of the query. Same data as search_listings: this fixed form exists for the ChatGPT/OpenAI connector contract. Use when: the caller only has a free-text query (\"2+1 apartment in Kyrenia under 150000 pounds\", \"EVL-100464\"). Don't use for: structured filters, paging or another answer language: use search_listings.","before":"Search live Northern Cyprus (KKTC/TRNC) property listings on Evlek with a free-text query. Returns matching listings as id/title/url for the fetch tool. Same data as search_listings — this fixed form exists for the ChatGPT/OpenAI connector contract. Use when: the caller only has a free-text query. Don't use for: structured filters — use search_listings.","detail":"Description of `search` changed (41% word delta).","severity":"risky","descriptionDelta":0.4078947368421053},{"kind":"output_property_added","path":"outputSchema.properties.assumed","tool":"search","after":{"type":"array","items":{"type":"object","required":["kind","assumed"],"properties":{"kind":{"type":"string"},"assumed":{"type":"object","additionalProperties":{"type":"string"}}}},"description":"What had to be assumed to make a constraint a filter (a currency, a band, a period)."},"detail":"Field `assumed` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.clarifications","tool":"search","after":{"type":"array","items":{"type":"object","required":["code","question"],"properties":{"code":{"type":"string"},"options":{"type":"array","items":{"type":"string"}},"question":{"type":"string"}}},"description":"Questions to ask the user instead of guessing."},"detail":"Field `clarifications` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.code","tool":"search","after":{"type":"string","description":"Present on a soft result (INVALID_LOCATION, OUT_OF_SCOPE, FX_UNAVAILABLE, ...)."},"detail":"Field `code` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.contentLocale","tool":"search","after":{"enum":["tr","en","ru","de","ar",null],"type":["string","null"],"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)."},"detail":"Field `contentLocale` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.dataSource","tool":"search","after":{"type":"string"},"detail":"Field `dataSource` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.groups","tool":"search","after":{"type":"array","items":{"type":"object","required":["transaction","total","shown","nextCursor","pageable"],"properties":{"shown":{"type":"number"},"total":{"type":"number"},"pageable":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"transaction":{"enum":["sale","rent"],"type":"string"},"transactionImplied":{"type":"boolean","description":"True when the transaction was implied by the filters (a rental-only fact), not sent: the cursor then carries it."}}},"description":"One group per transaction: two (sale, rent) when no transaction was given."},"detail":"Field `groups` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.impliedTransaction","tool":"search","after":{"type":"object","required":["value","because"],"properties":{"value":{"enum":["sale","rent"],"type":"string"},"because":{"type":"string"}},"description":"Present when no transaction was sent and the search was limited to one because of the filters."},"detail":"Field `impliedTransaction` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.issues","tool":"search","after":{"type":"array","items":{"type":"object","required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"},"suggestion":{"type":"string"},"allowedValues":{"type":"array","items":{"type":["string","number"]}}}}},"detail":"Field `issues` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.locale","tool":"search","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `locale` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.localeFallback","tool":"search","after":{"type":"boolean","description":"True when a listing link or description is in another language because it has no translation in `locale`."},"detail":"Field `localeFallback` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.lookup","tool":"search","after":{"type":"object","properties":{"found":{"type":"boolean"},"listingNumber":{"type":"string"}},"description":"Present for an explicit listing number (\"EVL-100464\")."},"detail":"Field `lookup` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.message","tool":"search","after":{"type":"string","description":"The reason, in the answer language, when there is nothing to list (content[0].text stays the connector JSON)."},"detail":"Field `message` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.placesReadAs","tool":"search","after":{"type":"array","items":{"type":"object","properties":{"as":{"type":"string"},"input":{"type":"string"},"match":{"enum":["alias","fuzzy"],"type":"string"}}}},"detail":"Field `placesReadAs` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.query","tool":"search","after":{"type":"string","description":"The query as read (cleaned, bounded)."},"detail":"Field `query` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.shown","tool":"search","after":{"type":"number","description":"Listings in this response."},"detail":"Field `shown` was added to `search` output.","severity":"risky"},{"kind":"output_property_renamed","path":"outputSchema.properties.outOfScope","tool":"search","after":"split","before":"outOfScope","detail":"Field `outOfScope` was renamed to `split` on `search`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.total","tool":"search","after":{"type":"number","description":"Public listings matching the filters, summed over the groups."},"detail":"Field `total` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.totalMatched","tool":"search","after":{"type":"number","description":"The same number as `total` (the v2 name)."},"detail":"Field `totalMatched` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.transactionAssumption","tool":"search","after":{"type":"object","properties":{"value":{"type":["string","null"]},"reason":{"type":"string"}}},"detail":"Field `transactionAssumption` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.unappliedFilters","tool":"search","after":{"type":"array","items":{"type":"object","required":["field","input","reason"],"properties":{"field":{"type":"string"},"input":{"type":"string"},"reason":{"type":"string"}}},"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."},"detail":"Field `unappliedFilters` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.warnings","tool":"search","after":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}},"detail":"Field `warnings` was added to `search` output.","severity":"risky"},{"kind":"description_changed","tool":"search_listings","after":"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 a free-text request use `search`; for one listing use `fetch` or `get_listing`. Returns advertised asking-price and listing facts only: not a valuation, verification of property-specific claims, forecast, ranking or recommendation.","before":"Search live active sale and long-term-rent listings on Evlek. Results are newest-first by default; `limit` caps returned rows and `totalMatched` reports the full match count. Returns advertised asking-price and listing facts only; not valuation, verification of property-specific claims, forecast, ranking, or recommendation.","detail":"Description of `search_listings` changed (78% word delta).","severity":"risky","descriptionDelta":0.7816901408450705},{"kind":"input_property_removed","path":"inputSchema.properties.pool","tool":"search_listings","before":{"type":"boolean","description":"Only listings with a pool"},"detail":"Field `pool` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.type","tool":"search_listings","before":{"enum":["sale","rent"],"type":"string","description":"Listing type"},"detail":"Field `type` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.query","tool":"search_listings","before":{"type":"string","description":"Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict"},"detail":"Field `query` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.garden","tool":"search_listings","before":{"type":"boolean","description":"Only listings with a garden"},"detail":"Field `garden` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.offset","tool":"search_listings","before":{"type":"number","minimum":0,"description":"Rows to skip (pagination, default 0)"},"detail":"Field `offset` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.sortBy","tool":"search_listings","before":{"enum":["newest","price_asc","price_desc","area_desc","price_per_sqm_asc"],"type":"string","description":"Sort order (default: newest)"},"detail":"Field `sortBy` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.parking","tool":"search_listings","before":{"type":"boolean","description":"Only listings with parking"},"detail":"Field `parking` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.seaView","tool":"search_listings","before":{"type":"boolean","description":"Only listings flagged sea_view"},"detail":"Field `seaView` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.elevator","tool":"search_listings","before":{"type":"boolean","description":"Only listings with an elevator"},"detail":"Field `elevator` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.maxPrice","tool":"search_listings","before":{"type":"number","description":"Max price in GBP"},"detail":"Field `maxPrice` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_removed","path":"inputSchema.properties.minPrice","tool":"search_listings","before":{"type":"number","description":"Min price in GBP"},"detail":"Field `minPrice` was removed from `search_listings` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.areaMax","tool":"search_listings","after":{"type":"number","maximum":10000000,"minimum":0,"description":"Maximum closed (built, indoor) area in m², inclusive."},"detail":"Optional field `areaMax` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.areaMin","tool":"search_listings","after":{"type":"number","maximum":10000000,"minimum":0,"description":"Minimum CLOSED (built, indoor) area in m², inclusive. For plots and gardens use landAreaMin instead."},"detail":"Optional field `areaMin` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.availableNow","tool":"search_listings","after":{"type":"boolean","description":"Rentals only: true = can be moved into immediately. Without `transaction` the search is limited to rent."},"detail":"Optional field `availableNow` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.bathroomsMin","tool":"search_listings","after":{"type":"integer","maximum":20,"minimum":1,"description":"Minimum number of bathrooms, inclusive (1-20)."},"detail":"Optional field `bathroomsMin` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.bbox","tool":"search_listings","after":{"type":"object","required":["west","south","east","north"],"properties":{"east":{"type":"number","maximum":34.65,"minimum":32.7,"description":"Right edge, longitude in decimal degrees. Must be larger than west."},"west":{"type":"number","maximum":34.65,"minimum":32.7,"description":"Left edge, longitude in decimal degrees (32.7 to 34.65). Must be smaller than east."},"north":{"type":"number","maximum":35.78,"minimum":34.95,"description":"Top edge, latitude in decimal degrees. Must be larger than south."},"south":{"type":"number","maximum":35.78,"minimum":34.95,"description":"Bottom edge, latitude in decimal degrees (34.95 to 35.78). Must be smaller than north."}},"description":"Map rectangle in Northern Cyprus, WGS84 degrees: {west, south, east, north}. For \"this map area\" only; otherwise use city and district.","additionalProperties":false},"detail":"Optional field `bbox` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.billsIncluded","tool":"search_listings","after":{"type":"boolean","description":"Rentals only: true = the rent includes utility bills. Without `transaction` the search is limited to rent."},"detail":"Optional field `billsIncluded` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.contractType","tool":"search_listings","after":{"enum":["monthly","semester","yearly","cash","installment"],"type":"string","description":"Contract type. Rentals: 'monthly', 'semester' or 'yearly'. Sales: 'cash' or 'installment'. Must fit `transaction`."},"detail":"Optional field `contractType` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.currency","tool":"search_listings","after":{"enum":["GBP","EUR","USD","TRY"],"type":"string","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."},"detail":"Optional field `currency` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.cursor","tool":"search_listings","after":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","maxLength":1024,"minLength":16,"description":"Pass the previous `nextCursor` with the SAME filters, sort and transaction. Opaque: never build or edit it. Requires `transaction`."},"detail":"Optional field `cursor` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.features","tool":"search_listings","after":{"type":"array","items":{"type":"string","maxLength":60,"minLength":1,"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."},"maxItems":20,"description":"Amenities the listing must have (ALL must match), any language, e.g. [\"pool\", \"sea view\", \"elevator\"]. Others are reported as not filterable."},"detail":"Optional field `features` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.landAreaMax","tool":"search_listings","after":{"type":"number","maximum":10000000,"minimum":0,"description":"Maximum plot (land) area in m², inclusive."},"detail":"Optional field `landAreaMax` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.landAreaMin","tool":"search_listings","after":{"type":"number","maximum":10000000,"minimum":0,"description":"Minimum plot (land) area in m², inclusive: villas, houses, bungalows and land."},"detail":"Optional field `landAreaMin` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.locale","tool":"search_listings","after":{"enum":["tr","en","ru","de","ar"],"type":"string","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."},"detail":"Optional field `locale` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.nearUniversity","tool":"search_listings","after":{"type":"object","required":["code"],"properties":{"code":{"enum":["NEU","DAU","GAU","CIU","EUL","BAU","AKU"],"type":"string","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."},"maxMeters":{"type":"integer","default":2000,"maximum":50000,"minimum":250,"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."}},"description":"Listings close to one university, e.g. {\"code\": \"NEU\", \"maxMeters\": 1000}. Useful for student housing.","additionalProperties":false},"detail":"Optional field `nearUniversity` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.noDeposit","tool":"search_listings","after":{"type":"boolean","description":"Rentals only: true = no security deposit is required."},"detail":"Optional field `noDeposit` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.priceMax","tool":"search_listings","after":{"type":"number","maximum":1000000000000,"minimum":0,"description":"Maximum price, inclusive, in `currency` (\"under 300000\" → 300000): the asking price for sale, the monthly rent for rent. Requires `transaction`."},"detail":"Optional field `priceMax` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.priceMin","tool":"search_listings","after":{"type":"number","maximum":1000000000000,"minimum":0,"description":"Minimum price, inclusive, in `currency`: the asking price for sale, the monthly rent for rent. Requires `transaction`."},"detail":"Optional field `priceMin` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.sort","tool":"search_listings","after":{"enum":["newest","price-low","price-high","price-per-sqm-asc","area-large","area-small","nearest-uni"],"type":"string","default":"newest","description":"Order, default 'newest'. price-low = cheapest first, price-high = dearest first (both need transaction); others: see schema description."},"detail":"Optional field `sort` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.transaction","tool":"search_listings","after":{"enum":["sale","rent"],"type":"string","description":"'sale' or 'rent' (long-term). REQUIRED with priceMin, priceMax, a price sort or cursor. Omit only to browse both together."},"detail":"Optional field `transaction` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.city","tool":"search_listings","after":"array","before":"string","detail":"Type of `city` on `search_listings` changed string → array.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.limit","tool":"search_listings","after":"integer","before":"number","detail":"Type of `limit` on `search_listings` changed number → integer.","severity":"breaking"},{"kind":"default_changed","path":"inputSchema.properties.limit","tool":"search_listings","after":8,"detail":"Default of `limit` on `search_listings` changed unset → 8.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.bedrooms","tool":"search_listings","after":"object","before":"number","detail":"Type of `bedrooms` on `search_listings` changed number → object.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.district","tool":"search_listings","after":"array","before":"string","detail":"Type of `district` on `search_listings` changed string → array.","severity":"breaking"},{"kind":"input_type_changed","path":"inputSchema.properties.propertyType","tool":"search_listings","after":"array","before":"string","detail":"Type of `propertyType` on `search_listings` changed string → array.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"apartment","detail":"Enum value `apartment` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"residence","detail":"Enum value `residence` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"villa","detail":"Enum value `villa` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"twin","detail":"Enum value `twin` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"detached","detail":"Enum value `detached` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"bungalow","detail":"Enum value `bungalow` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"penthouse","detail":"Enum value `penthouse` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"studio","detail":"Enum value `studio` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"duplex","detail":"Enum value `duplex` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"shop","detail":"Enum value `shop` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"office","detail":"Enum value `office` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"warehouse","detail":"Enum value `warehouse` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"whole_building","detail":"Enum value `whole_building` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"hotel","detail":"Enum value `hotel` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"residential_land","detail":"Enum value `residential_land` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"commercial_land","detail":"Enum value `commercial_land` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"farmland","detail":"Enum value `farmland` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"house","detail":"Enum value `house` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"land","detail":"Enum value `land` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.propertyType","tool":"search_listings","before":"commercial","detail":"Enum value `commercial` removed from `propertyType` on `search_listings`.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.count","tool":"search_listings","before":{"type":"number"},"detail":"Field `count` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.notes","tool":"search_listings","before":{"type":"array","items":{"type":"string"}},"detail":"Field `notes` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.offset","tool":"search_listings","before":{"type":"number"},"detail":"Field `offset` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.ranking","tool":"search_listings","before":{"type":["object","null"],"required":["scope","pooled","of"],"properties":{"of":{"type":"number"},"scope":{"enum":["complete","partial"],"type":"string"},"pooled":{"type":"number"}}},"detail":"Field `ranking` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.factType","tool":"search_listings","before":{"type":"string"},"detail":"Field `factType` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_removed","path":"outputSchema.properties.sortApplied","tool":"search_listings","before":{"enum":["newest","price_asc","price_desc","area_desc","price_per_sqm_asc"],"type":"string"},"detail":"Field `sortApplied` was removed from `search_listings` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.code","tool":"search_listings","after":{"type":"string","description":"Present on a soft result (INVALID_LOCATION, OUT_OF_SCOPE, FX_UNAVAILABLE, ...)."},"detail":"Field `code` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.contentLocale","tool":"search_listings","after":{"enum":["tr","en","ru","de","ar",null],"type":["string","null"],"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)."},"detail":"Field `contentLocale` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.groups","tool":"search_listings","after":{"type":"array","items":{"type":"object","required":["transaction","total","shown","nextCursor","pageable"],"properties":{"shown":{"type":"number"},"total":{"type":"number"},"pageable":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"transaction":{"enum":["sale","rent"],"type":"string"},"transactionImplied":{"type":"boolean","description":"True when the transaction was implied by the filters (a rental-only fact), not sent: the cursor then carries it."}}},"description":"One group per transaction: two (sale, rent) when no transaction was given."},"detail":"Field `groups` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.impliedTransaction","tool":"search_listings","after":{"type":"object","required":["value","because"],"properties":{"value":{"enum":["sale","rent"],"type":"string"},"because":{"type":"string"}},"description":"Present when no transaction was sent and the search was limited to one because of the filters."},"detail":"Field `impliedTransaction` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.issues","tool":"search_listings","after":{"type":"array","items":{"type":"object","required":["code","field","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"},"suggestion":{"type":"string"},"allowedValues":{"type":"array","items":{"type":["string","number"]}}}}},"detail":"Field `issues` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.locale","tool":"search_listings","after":{"enum":["tr","en","ru","de","ar"],"type":"string"},"detail":"Field `locale` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.localeFallback","tool":"search_listings","after":{"type":"boolean","description":"True when a listing link or description is in another language because it has no translation in `locale`."},"detail":"Field `localeFallback` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.shown","tool":"search_listings","after":{"type":"number","description":"Listings in this response."},"detail":"Field `shown` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_renamed","path":"outputSchema.properties.isEstimate","tool":"search_listings","after":"split","before":"isEstimate","detail":"Field `isEstimate` was renamed to `split` on `search_listings`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.total","tool":"search_listings","after":{"type":"number","description":"Public listings matching the filters, summed over the groups."},"detail":"Field `total` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.unappliedFilters","tool":"search_listings","after":{"type":"array","items":{"type":"object","required":["field","input","reason"],"properties":{"field":{"type":"string"},"input":{"type":"string"},"reason":{"type":"string"}}},"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."},"detail":"Field `unappliedFilters` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.warnings","tool":"search_listings","after":{"type":"array","items":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"field":{"type":"string"},"message":{"type":"string"}}}},"detail":"Field `warnings` was added to `search_listings` output.","severity":"risky"},{"kind":"resource_removed","tool":"ui://evlek/listing-cards-v2.html","before":"ui://evlek/listing-cards-v2.html","detail":"Resource `ui://evlek/listing-cards-v2.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_removed","tool":"ui://evlek/listing-detail-v2.html","before":"ui://evlek/listing-detail-v2.html","detail":"Resource `ui://evlek/listing-detail-v2.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_removed","tool":"ui://evlek/price-index-v2.html","before":"ui://evlek/price-index-v2.html","detail":"Resource `ui://evlek/price-index-v2.html` was removed, consumers reading it will break.","severity":"breaking"},{"kind":"resource_added","tool":"ui://evlek/listing-cards-v3-1.html","after":"ui://evlek/listing-cards-v3-1.html","detail":"Resource `ui://evlek/listing-cards-v3-1.html` was added.","severity":"safe"},{"kind":"resource_added","tool":"ui://evlek/listing-detail-v3-1.html","after":"ui://evlek/listing-detail-v3-1.html","detail":"Resource `ui://evlek/listing-detail-v3-1.html` was added.","severity":"safe"},{"kind":"resource_added","tool":"ui://evlek/price-index-v3-1.html","after":"ui://evlek/price-index-v3-1.html","detail":"Resource `ui://evlek/price-index-v3-1.html` was added.","severity":"safe"}],"published_at":"2026-10-09T12:06:17.962Z"},{"slug":"ZV-2026-0928","server_name":"evlek.app","severity":"breaking","title":"evlek.app: dataSource on get_price_index narrowed to a closed enum (live_active_listings, daily_snapshot); previously valid values may now be rejected.","summary":"[breaking] dataSource on get_price_index narrowed to a closed enum (live_active_listings, daily_snapshot); previously valid values may now be rejected. [risky] Optional field query was added to search_listings; may shift model behaviour. [risky] Field notes was added to search_listings output.","changes":[{"kind":"enum_narrowed","path":"outputSchema.properties.dataSource","tool":"get_price_index","after":"enum[live_active_listings,daily_snapshot]","before":"open","detail":"`dataSource` on `get_price_index` narrowed to a closed enum (live_active_listings, daily_snapshot); previously valid values may now be rejected.","severity":"breaking"},{"kind":"input_property_added","path":"inputSchema.properties.query","tool":"search_listings","after":{"type":"string","description":"Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict"},"detail":"Optional field `query` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.notes","tool":"search_listings","after":{"type":"array","items":{"type":"string"}},"detail":"Field `notes` was added to `search_listings` output.","severity":"risky"}],"published_at":"2026-09-10T10:13:18.506Z"},{"slug":"ZV-2026-0863","server_name":"evlek.app","severity":"breaking","title":"evlek.app: Field listing_ids was removed from compare_properties input; consumers still sending it may be rejected or silently ignored.","summary":"[safe] Description of compare_properties changed (24% word delta). [breaking] Field listing_ids was removed from compare_properties input; consumers still sending it may be rejected or silently ignored. [breaking] New required field listingIds on compare_properties; requests without it will fail. [breaking] Enum value girne removed from city on get_district_profile. [breaking] Enum value iskele removed from city on get_district_profile. [breaking] Enum value lefkosa removed from city on get_district_profile. [breaking] Enum value gazimagusa removed from city on get_district_profile. [breaking] Enum value guzelyurt removed from city on get_district_profile. [breaking] Enum value lefke removed from city on get_district_profile. [breaking] Field indicativeGrossRentToPricePct was renamed to askingRentToAskingPricePct on get_district_profile. [breaking] Field isObservedYield was renamed to isObservedIncome on get_district_profile. [breaking] Field yieldMetricType was renamed to ratioMetricType on get_district_profile. [risky] Field truncated was added to get_district_profile output. [risky] Description of get_listing_by_number changed (25% word delta). [breaking] Field listing_number was renamed to listingNumber on get_listing_by_number. [safe] Description of get_listing_detail changed (22% word delta). [breaking] Field property_id was removed from get_listing_detail input; consumers still sending it may be rejected or silently ignored. [breaking] New required field propertyId on get_listing_detail; requests without it will fail. [breaking] Enum value girne removed from city on get_price_index. [breaking] Enum value iskele removed from city on get_price_index. [breaking] Enum value lefkosa removed from city on get_price_index. [breaking] Enum value gazimagusa removed from city on get_price_index. [breaking] Enum value guzelyurt removed from city on get_price_index. [breaking] Enum value lefke removed from city on get_price_index. [breaking] Enum value girne removed from ","changes":[{"kind":"description_changed","tool":"compare_properties","after":"Compare descriptive facts from 2-4 active Evlek sale or long-term-rent listings of the same type. Shows advertised asking price, size and £/m² differences without making a value, suitability, appraisal, or investment judgment. The legacy `listing_ids` parameter name is still accepted as an alias of `listingIds`.","before":"Compare descriptive facts from 2-4 active Evlek sale or long-term-rent listings of the same type. Shows advertised asking price, size and £/m² differences without making a value, suitability, appraisal, or investment judgment.","detail":"Description of `compare_properties` changed (24% word delta).","severity":"safe","descriptionDelta":0.24444444444444446},{"kind":"input_property_removed","path":"inputSchema.properties.listing_ids","tool":"compare_properties","before":{"type":"array","items":{"type":"string","description":"Evlek listing UUID"},"description":"Evlek listing UUIDs (2-4)"},"detail":"Field `listing_ids` was removed from `compare_properties` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_required_added","path":"inputSchema.properties.listingIds","tool":"compare_properties","after":{"type":"array","items":{"type":"string","description":"Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")"},"description":"Evlek listing UUIDs or listing numbers (2-4)"},"detail":"New required field `listingIds` on `compare_properties`; requests without it will fail.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"girne","detail":"Enum value `girne` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"iskele","detail":"Enum value `iskele` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"lefkosa","detail":"Enum value `lefkosa` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"gazimagusa","detail":"Enum value `gazimagusa` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"guzelyurt","detail":"Enum value `guzelyurt` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_district_profile","before":"lefke","detail":"Enum value `lefke` removed from `city` on `get_district_profile`.","severity":"breaking"},{"kind":"output_property_renamed","path":"outputSchema.properties.indicativeGrossRentToPricePct","tool":"get_district_profile","after":"askingRentToAskingPricePct","before":"indicativeGrossRentToPricePct","detail":"Field `indicativeGrossRentToPricePct` was renamed to `askingRentToAskingPricePct` on `get_district_profile`.","severity":"breaking"},{"kind":"output_property_renamed","path":"outputSchema.properties.isObservedYield","tool":"get_district_profile","after":"isObservedIncome","before":"isObservedYield","detail":"Field `isObservedYield` was renamed to `isObservedIncome` on `get_district_profile`.","severity":"breaking"},{"kind":"output_property_renamed","path":"outputSchema.properties.yieldMetricType","tool":"get_district_profile","after":"ratioMetricType","before":"yieldMetricType","detail":"Field `yieldMetricType` was renamed to `ratioMetricType` on `get_district_profile`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.truncated","tool":"get_district_profile","after":{"type":"boolean"},"detail":"Field `truncated` was added to `get_district_profile` output.","severity":"risky"},{"kind":"description_changed","tool":"get_listing_by_number","after":"Look up a single Evlek listing by its public listing number (e.g. \"EVL-123456\", \"123456\", or a bare number) and return its full detail — same shape as get_listing_detail. Use when: a listing number is known. Don't use for: UUID lookups — use get_listing_detail. The legacy `listing_number` parameter name is still accepted as an alias of `listingNumber`.","before":"Look up a single Evlek listing by its public listing number (e.g. \"EVL-123456\", \"123456\", or a bare number) and return its full detail — same shape as get_listing_detail. Use when: a listing number is known. Don't use for: UUID lookups — use get_listing_detail.","detail":"Description of `get_listing_by_number` changed (25% word delta).","severity":"risky","descriptionDelta":0.25},{"kind":"input_property_renamed","path":"inputSchema.properties.listing_number","tool":"get_listing_by_number","after":"listingNumber","before":"listing_number","detail":"Field `listing_number` was renamed to `listingNumber` on `get_listing_by_number`.","severity":"breaking"},{"kind":"description_changed","tool":"get_listing_detail","after":"Return a 360° profile of one active Evlek listing by UUID or listing number: title, description, price, location, size, amenities, features, cover image, per-photo captions/tags, and AI virtual-staging before/after pairs (always AI-disclosed). Contact details omitted. Use when: a UUID or listing number is already known. Don't use for: discovery — use search_listings first. The legacy `property_id` parameter name is still accepted as an alias of `propertyId`.","before":"Return a 360° profile of one active Evlek listing by UUID: title, description, price, location, size, amenities, features, cover image, per-photo captions/tags, and AI virtual-staging before/after pairs (always AI-disclosed). Contact details omitted. Use when: a UUID is already known. Don't use for: discovery — use search_listings first.","detail":"Description of `get_listing_detail` changed (22% word delta).","severity":"safe","descriptionDelta":0.21666666666666667},{"kind":"input_property_removed","path":"inputSchema.properties.property_id","tool":"get_listing_detail","before":{"type":"string","description":"Evlek listing UUID"},"detail":"Field `property_id` was removed from `get_listing_detail` input; consumers still sending it may be rejected or silently ignored.","severity":"breaking"},{"kind":"input_required_added","path":"inputSchema.properties.propertyId","tool":"get_listing_detail","after":{"type":"string","description":"Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")"},"detail":"New required field `propertyId` on `get_listing_detail`; requests without it will fail.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"girne","detail":"Enum value `girne` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"iskele","detail":"Enum value `iskele` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"lefkosa","detail":"Enum value `lefkosa` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"gazimagusa","detail":"Enum value `gazimagusa` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"guzelyurt","detail":"Enum value `guzelyurt` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"get_price_index","before":"lefke","detail":"Enum value `lefke` removed from `city` on `get_price_index`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"girne","detail":"Enum value `girne` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"iskele","detail":"Enum value `iskele` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"lefkosa","detail":"Enum value `lefkosa` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"gazimagusa","detail":"Enum value `gazimagusa` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"guzelyurt","detail":"Enum value `guzelyurt` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"list_locations","before":"lefke","detail":"Enum value `lefke` removed from `city` on `list_locations`.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.truncated","tool":"list_locations","after":{"type":"boolean"},"detail":"Field `truncated` was added to `list_locations` output.","severity":"risky"},{"kind":"description_changed","tool":"payment_plan","after":"Currently returns currency conversion only. A real installment/payment-schedule tool is planned under this name; until then it does not produce a payment plan, deposit schedule, or acquisition-cost estimate.","before":"Deprecated alias of convert_currency; removed in 2.1.0. Converts an entered property asking-price amount across GBP/EUR/USD/TRY when complete, valid, fresh, date-stamped stored FX rates are available; otherwise it fails closed without amounts. Currency conversion only: no payment plan, deposit schedule, installment schedule, acquisition-cost estimate, or advice.","detail":"Description of `payment_plan` changed (81% word delta).","severity":"risky","descriptionDelta":0.8059701492537313},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"girne","detail":"Enum value `girne` removed from `city` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"iskele","detail":"Enum value `iskele` removed from `city` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"lefkosa","detail":"Enum value `lefkosa` removed from `city` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"gazimagusa","detail":"Enum value `gazimagusa` removed from `city` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"guzelyurt","detail":"Enum value `guzelyurt` removed from `city` on `search_listings`.","severity":"breaking"},{"kind":"enum_value_removed","path":"inputSchema.properties.city","tool":"search_listings","before":"lefke","detail":"Enum value `lefke` removed from `city` on `search_listings`.","severity":"breaking"}],"published_at":"2026-09-08T20:17:13.887Z"},{"slug":"ZV-2026-0847","server_name":"evlek.app","severity":"breaking","title":"evlek.app: Tool get_yield_estimate was removed.","summary":"[breaking] Tool get_yield_estimate was removed. [breaking] Tool student_housing was removed. [breaking] Tool suggest_neighborhood was removed. [safe] Tool convert_currency was added. [breaking] Field generatedAt was removed from compare_cities output; consumers reading it will break. [risky] Field dataAsOf was added to compare_cities output. [breaking] Field totalActive was removed from get_district_profile output; consumers reading it will break. [risky] Field cleanSampleTotal was added to get_district_profile output. [risky] Field dataAsOf was added to get_district_profile output. [risky] Field fxRates was added to get_listing_by_number output. [risky] Field monthlyRentGbp was added to get_listing_by_number output. [risky] Field fxRates was added to get_listing_detail output. [risky] Field monthlyRentGbp was added to get_listing_detail output. [breaking] Field generatedAt was renamed to dataAsOf on get_price_index. [risky] Description of payment_plan changed (38% word delta). [risky] Field criteria was added to search output. [risky] Field nearbyAlternatives was added to search output. [risky] Optional field district was added to search_listings; may shift model behaviour. [risky] Optional field elevator was added to search_listings; may shift model behaviour. [risky] Optional field furnished was added to search_listings; may shift model behaviour. [risky] Optional field garden was added to search_listings; may shift model behaviour. [risky] Optional field offset was added to search_listings; may shift model behaviour. [risky] Optional field parking was added to search_listings; may shift model behaviour. [risky] Optional field pool was added to search_listings; may shift model behaviour. [risky] Optional field seaView was added to search_listings; may shift model behaviour. [risky] Enum value house added to propertyType on search_listings. [risky] Enum value land added to propertyType on search_listings. [risky] Enum value commercial added to propertyType on sear","changes":[{"kind":"tool_removed","tool":"get_yield_estimate","detail":"Tool `get_yield_estimate` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"student_housing","detail":"Tool `student_housing` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"suggest_neighborhood","detail":"Tool `suggest_neighborhood` was removed.","severity":"breaking"},{"kind":"tool_added","tool":"convert_currency","detail":"Tool `convert_currency` was added.","severity":"safe"},{"kind":"output_property_removed","path":"outputSchema.properties.generatedAt","tool":"compare_cities","before":{"type":"string"},"detail":"Field `generatedAt` was removed from `compare_cities` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.dataAsOf","tool":"compare_cities","after":{"type":["string","null"]},"detail":"Field `dataAsOf` was added to `compare_cities` output.","severity":"risky"},{"kind":"output_property_removed","path":"outputSchema.properties.totalActive","tool":"get_district_profile","before":{"type":"number"},"detail":"Field `totalActive` was removed from `get_district_profile` output; consumers reading it will break.","severity":"breaking"},{"kind":"output_property_added","path":"outputSchema.properties.cleanSampleTotal","tool":"get_district_profile","after":{"type":"number","description":"sale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings"},"detail":"Field `cleanSampleTotal` was added to `get_district_profile` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.dataAsOf","tool":"get_district_profile","after":{"type":["string","null"]},"detail":"Field `dataAsOf` was added to `get_district_profile` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.fxRates","tool":"get_listing_by_number","after":{"type":["object","null"]},"detail":"Field `fxRates` was added to `get_listing_by_number` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.monthlyRentGbp","tool":"get_listing_by_number","after":{"type":["number","null"]},"detail":"Field `monthlyRentGbp` was added to `get_listing_by_number` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.fxRates","tool":"get_listing_detail","after":{"type":["object","null"]},"detail":"Field `fxRates` was added to `get_listing_detail` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.monthlyRentGbp","tool":"get_listing_detail","after":{"type":["number","null"]},"detail":"Field `monthlyRentGbp` was added to `get_listing_detail` output.","severity":"risky"},{"kind":"output_property_renamed","path":"outputSchema.properties.generatedAt","tool":"get_price_index","after":"dataAsOf","before":"generatedAt","detail":"Field `generatedAt` was renamed to `dataAsOf` on `get_price_index`.","severity":"breaking"},{"kind":"description_changed","tool":"payment_plan","after":"Deprecated alias of convert_currency; removed in 2.1.0. Converts an entered property asking-price amount across GBP/EUR/USD/TRY when complete, valid, fresh, date-stamped stored FX rates are available; otherwise it fails closed without amounts. Currency conversion only: no payment plan, deposit schedule, installment schedule, acquisition-cost estimate, or advice.","before":"The payment_plan identifier is retained only for compatibility. This tool converts an entered property asking-price amount across GBP/EUR/USD/TRY when complete, valid, fresh, date-stamped stored FX rates are available; otherwise it fails closed without amounts. It does not produce a payment plan, deposit schedule, installment schedule, acquisition-cost estimate, or advice.","detail":"Description of `payment_plan` changed (38% word delta).","severity":"risky","descriptionDelta":0.3846153846153846},{"kind":"output_property_added","path":"outputSchema.properties.criteria","tool":"search","after":{"type":"array","items":{"type":"object","required":["key","value","state"],"properties":{"key":{"type":"string"},"note":{"type":"string"},"state":{"enum":["applied","unresolved","not_supported"],"type":"string"},"value":{"type":"string"}}}},"detail":"Field `criteria` was added to `search` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.nearbyAlternatives","tool":"search","after":{"type":["object","null"],"required":["relaxed","listings"],"properties":{"relaxed":{"enum":["district","maxPrice"],"type":"string"},"listings":{"type":"array","items":{"type":"object"}}}},"detail":"Field `nearbyAlternatives` was added to `search` output.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.district","tool":"search_listings","after":{"type":"string","description":"District name (e.g. Alsancak), case-insensitive"},"detail":"Optional field `district` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.elevator","tool":"search_listings","after":{"type":"boolean","description":"Only listings with an elevator"},"detail":"Optional field `elevator` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.furnished","tool":"search_listings","after":{"type":"boolean","description":"Only furnished listings"},"detail":"Optional field `furnished` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.garden","tool":"search_listings","after":{"type":"boolean","description":"Only listings with a garden"},"detail":"Optional field `garden` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.offset","tool":"search_listings","after":{"type":"number","minimum":0,"description":"Rows to skip (pagination, default 0)"},"detail":"Optional field `offset` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.parking","tool":"search_listings","after":{"type":"boolean","description":"Only listings with parking"},"detail":"Optional field `parking` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.pool","tool":"search_listings","after":{"type":"boolean","description":"Only listings with a pool"},"detail":"Optional field `pool` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.seaView","tool":"search_listings","after":{"type":"boolean","description":"Only listings flagged sea_view"},"detail":"Optional field `seaView` was added to `search_listings`; may shift model behaviour.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.propertyType","tool":"search_listings","after":"house","detail":"Enum value `house` added to `propertyType` on `search_listings`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.propertyType","tool":"search_listings","after":"land","detail":"Enum value `land` added to `propertyType` on `search_listings`.","severity":"risky"},{"kind":"enum_value_added","path":"inputSchema.properties.propertyType","tool":"search_listings","after":"commercial","detail":"Enum value `commercial` added to `propertyType` on `search_listings`.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.fxRates","tool":"search_listings","after":{"type":["object","null"]},"detail":"Field `fxRates` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.offset","tool":"search_listings","after":{"type":"number"},"detail":"Field `offset` was added to `search_listings` output.","severity":"risky"},{"kind":"output_property_added","path":"outputSchema.properties.ranking","tool":"search_listings","after":{"type":["object","null"],"required":["scope","pooled","of"],"properties":{"of":{"type":"number"},"scope":{"enum":["complete","partial"],"type":"string"},"pooled":{"type":"number"}}},"detail":"Field `ranking` was added to `search_listings` output.","severity":"risky"},{"kind":"resource_added","tool":"evlek://guides/neighborhood-personas","after":"evlek://guides/neighborhood-personas","detail":"Resource `evlek://guides/neighborhood-personas` was added.","severity":"safe"},{"kind":"resource_added","tool":"evlek://guides/universities","after":"evlek://guides/universities","detail":"Resource `evlek://guides/universities` was added.","severity":"safe"}],"published_at":"2026-09-08T11:05:15.429Z"}]