Skip to main content
Glama

Evlek — Northern Cyprus Property MCP Server

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Evlek/evlek-mcp
GitHub Stars
0
Server Listing
Evlek — Northern Cyprus Property MCP Server

TDQS

A4/5.0

Scored across 12 tools

Disambiguation3/5

Several tool pairs are near-duplicates: fetch mirrors get_listing_detail, search mirrors search_listings, and get_listing_by_number overlaps with get_listing_detail. Descriptions explicitly flag these as connector-contract variants and include use/don't-use guidance, which mitigates but does not eliminate misselection risk. payment_plan is especially hazardous since its name implies schedule data but it currently only converts currency.

Naming Consistency4/5

Predominantly consistent verb_noun snake_case (compare_cities, get_listing_detail, list_locations, convert_currency). Minor deviations exist: bare verbs fetch and search, and payment_plan which is noun-only and inconsistent with the get_/search_/compare_ patterns.

Tool Count4/5

12 tools is a reasonable scope for a property-listing data server. However, effective unique capability is lower because fetch/get_listing_detail, search/search_listings, and get_listing_by_number are largely redundant, and payment_plan duplicates convert_currency.

Completeness4/5

The surface covers discovery, detail retrieval, comparison, aggregate price indexing, location listing, and currency conversion, which is solid for descriptive listing data. Gaps are minor (no geo/map search or explicit amenity filtering), and the read-only nature fits a data-consumer server.

Available Tools

12 tools
compare_citiesCompare Northern Cyprus Cities Side-by-SideA
Read-only
Inspect

Compare source-dated live active-listing asking-price aggregates across 2-4 Northern Cyprus cities. Descriptive listing facts only; not transaction prices, valuation, forecast, ranking, or investment advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoSale or rent (default: sale)
citiesYesCities to compare (2-4)

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYes
citiesYes
dataAsOfYes
dataSourceNo
isEstimateNo
metricTypeNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by specifying that it returns source-dated live active-listing asking-price aggregates and descriptive listing facts only, which clarifies the nature and limitations of the data beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, tightly written sentence that front-loads the action and resource, then adds the important exclusions. Every element earns its place; there is no redundancy or filler.

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

Completeness5/5

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

With annotations covering the read-only/destructive profile, a fully described input schema, an output schema present, and a description that states scope, data type, and exclusions, the description is complete for an agent to correctly select and invoke this tool. Return format is not needed because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both parameters. The description reinforces the 2-4 city constraint and the sale/rent context, but it does not add substantial meaning beyond what the schema already provides. Baseline 3 is appropriate here.

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

Purpose5/5

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

The description states a clear verb ('Compare') and a specific resource ('source-dated live active-listing asking-price aggregates across 2-4 Northern Cyprus cities'). It also distinguishes itself from valuation, forecast, and investment tools by explicitly excluding those categories, making it easy for an agent to identify what this tool does.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: comparing city-level asking-price aggregates for 2-4 Northern Cyprus cities, for sale or rent. It also gives exclusions (not transaction prices, valuation, forecast, ranking, or investment advice). However, it does not explicitly name alternative sibling tools such as compare_properties or get_price_index, so the when-not-to-use guidance is present but not fully explicit.

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

compare_propertiesCompare Evlek Property Listings Side-by-SideA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listingIdsYesEvlek listing UUIDs or listing numbers (2-4)

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
missingNo
listingsYes
dataSourceNo
isEstimateNo
metricTypeNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it only compares factual listing data and avoids subjective judgments, shows specific outputs (price, size, £/m²), and documents that the legacy alias `listing_ids` is accepted. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, each carrying distinct value: core function, output scope and non-judgment boundary, and alias note. The most important constraints are front-loaded, and there is no filler or repetition of schema content.

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

Completeness5/5

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

For a tool with one parameter, a complete output schema, and annotations covering safety, the description covers all needed guidance: input count and type constraints, active and same-type prerequisites, what it returns, what it avoids, and legacy compatibility. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying that only listings of the same type and active listings should be compared, and by revealing the legacy `listing_ids` alias. These details are not present in the schema itself, raising the value above baseline.

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

Purpose5/5

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

The description uses the specific verb 'Compare' with a clear resource: descriptive facts from 2-4 active Evlek sale or long-term-rent listings of the same type. It distinguishes itself from sibling tools like compare_cities by focusing on property listings, and from listing lookups by emphasizing side-by-side comparison of facts.

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

Usage Guidelines4/5

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

The description clearly scopes when to use the tool: comparing descriptive facts from 2-4 active listings of the same type. It also provides an explicit when-not by stating it makes no value, suitability, appraisal, or investment judgment. It does not name alternative sibling tools, but the use case is well-defined enough to guide an agent.

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

convert_currencyCurrency Conversion (GBP/EUR/USD/TRY)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesEntered property asking-price amount; not a deposit or installment.
currencyNoCurrency of the price (default GBP).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fxNo
amountsYes
priceGBPYes
dataSourceNo
inputCurrencyYes
usesStoredRateNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and non-destructive, and the description adds valuable behavior beyond that: it requires fresh date-stamped rates and fails closed without amounts if conditions are unmet. This gives the agent a clear expectation of success and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences deliver the purpose, scope, preconditions, and failure mode with no filler. The core action and limitations are front-loaded, making the tool easy to scan and understand.

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

Completeness4/5

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

The description, together with the schema and annotations, gives a solid picture of when and how the tool behaves. An output schema exists so return details are not the description's responsibility. It could be slightly more explicit about whether all four currencies are returned at once, but the current wording is sufficient for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the price amount and currency well. The description reinforces that the input is a property asking-price amount and not a deposit or installment, but it does not add new parameter-level detail beyond the schema.

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

Purpose5/5

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

The description states a specific verb and resource: converting an entered property asking-price amount across GBP/EUR/USD/TRY. It also clearly delimits the tool's scope by excluding payment plans, deposit schedules, and other related calculations, distinguishing it from sibling tools like payment_plan.

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

Usage Guidelines4/5

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

The description gives clear context: this is only for currency conversion of an asking price, not for payment schedules or cost advice. It also states a precondition (complete, valid, fresh, date-stamped FX rates) and the failure behavior. It does not explicitly name alternative tools for the excluded use cases, but the exclusion itself provides practical routing guidance.

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

fetchFetch full Evlek listing detailA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEvlek listing id (UUID) from search

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
textYes
titleYes
photosNo
metadataNo
coverImageUrlNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it is id-only, returns GBP-normalized price, and mirrors get_listing_detail's data. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is well-structured and front-loaded: it opens with the action and resource, then narrows to contract context and explicit usage rules. Every sentence contributes useful information without unnecessary filler.

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

Completeness5/5

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

For a one-parameter read-only tool with a rich output schema and annotations already present, the description covers what the tool does, what data it returns, when to use it, and when not to. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for its single required parameter, including the UUID-from-search meaning. The description reinforces 'by id (from search)' but adds no meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Fetch the full detail of one Evlek listing by id', and enumerates the exact data fields returned. It also distinguishes this tool from get_listing_detail by explaining it is the fixed id-only connector-contract form.

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

Usage Guidelines4/5

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

It explicitly gives a use condition ('Use when: an id from search is known'), a don't-use condition ('Don't use for: discovery'), and names the alternative ('use search first'). However, because get_listing_detail is described as returning the same data, the description doesn't fully clarify when to choose fetch over get_listing_detail for non-connector use.

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

get_district_profileGet Live Asking-Price Context for a Northern Cyprus DistrictA
Read-only
Inspect

Returns source-dated active sale/long-term-rent listing counts and asking-price aggregates for one district. Any rent-to-price percentage is a derived asking-price ratio, not observed income, net yield, valuation, forecast, ranking, or recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity containing the district. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou).
districtYesDistrict name (2-60 chars), matched accent/case-insensitively against the active-listing district list

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
rentNo
saleNo
dataAsOfNo
districtYes
truncatedNo
dataSourceNo
metricTypeNo
personaContextsNo
ratioMetricTypeNo
cleanSampleTotalYessale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings
isObservedIncomeNo
askingRentToAskingPricePctNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: data is source-dated, reflecting active listings, and any rent-to-price percentage is a derived ratio rather than observed income, yield, valuation, forecast, ranking, or recommendation. This prevents misinterpretation of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads the core behavior, and the second sentence adds an essential caveat about how rent-to-price percentages should be interpreted.

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

Completeness4/5

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

With full schema coverage, annotations, and an output schema, the description is nearly complete. It adds the right disclaimers and scope. A small gap is the absence of any explicit pointer to sibling tools for multi-district comparisons, though this is not required for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both city and district parameters are fully documented there. The description adds no parameter-specific details beyond the single-district scope, so it does not need to compensate for any schema gap.

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

Purpose5/5

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

Description states a specific verb and resource: 'Returns source-dated active sale/long-term-rent listing counts and asking-price aggregates for one district.' It clearly identifies a single-district profile tool and distinguishes it from siblings like compare_cities or get_price_index.

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

Usage Guidelines4/5

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

The description gives clear context: use this tool when you need asking-price and listing-count aggregates for one district. It does not explicitly name alternatives or exclusions, but the single-district scope and output type make the intended usage reasonably obvious.

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

get_listing_by_numberGet Evlek Listing by NumberA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
listingNumberYesEvlek listing number, e.g. "EVL-123456", "123456", or the bare number 123456.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
cityNo
typeNo
foundYes
priceNo
titleNo
photosNo
areaSqmNo
fxRatesNo
bedroomsNo
currencyNo
districtNo
factTypeNo
featuresNo
listedAtNo
priceGbpNo
amenitiesNo
bathroomsNo
furnishedNo
dataSourceNo
isEstimateNo
photoCountNo
photosShownNo
coverImageUrlNo
listingNumberNo
monthlyRentGbpNo
pricePerSqmGBPNo
virtualStagingNo
photosTruncatedNo
locationPrecisionNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds useful behavior beyond that: it returns 'full detail — same shape as get_listing_detail' and documents the accepted legacy `listing_number` alias. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences pack purpose, boundary conditions, return shape, and alias information without any filler. Key scoping information is front-loaded before the alternatives and alias notes.

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

Completeness5/5

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

For a simple read-only lookup with a single required parameter and an output schema, the description fully covers what the tool does, when to use it, what not to use it for, and the parameter alias. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents listingNumber with examples. The description adds the legacy alias `listing_number` and clarifies the acceptable formats ('EVL-123456', '123456', or bare number), which goes beyond the schema's already-good documentation.

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

Purpose5/5

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

The description opens with a specific verb and object: 'Look up a single Evlek listing by its public listing number.' It immediately differentiates itself from get_listing_detail by contrasting public-number lookups with UUID lookups, so an agent can distinguish the two tools without inspecting schemas.

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

Usage Guidelines5/5

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

Provides explicit guidance: 'Use when: a listing number is known. Don't use for: UUID lookups — use get_listing_detail.' It also covers the legacy parameter alias, which helps agents handle older call patterns correctly.

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

get_listing_detailGet Full Detail for a Single Evlek ListingA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
propertyIdYesEvlek listing UUID or listing number (e.g. "EVL-123456", "123456")

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
urlNo
cityNo
typeNo
foundYes
priceNo
titleNo
photosNo
areaSqmNo
fxRatesNo
bedroomsNo
currencyNo
districtNo
factTypeNo
featuresNo
listedAtNo
priceGbpNo
amenitiesNo
bathroomsNo
furnishedNo
dataSourceNo
isEstimateNo
photoCountNo
photosShownNo
coverImageUrlNo
listingNumberNo
monthlyRentGbpNo
pricePerSqmGBPNo
virtualStagingNo
photosTruncatedNo
locationPrecisionNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description discloses meaningful behaviors: contact details are omitted, AI virtual-staging is always disclosed, and only active listings are returned. These details inform an agent about content boundaries and policy compliance beyond what the annotations or schema state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is information-dense but every clause earns its place: main behavior, field list, exclusions, usage guidance, and alias note. It is front-loaded with the core purpose and avoids redundant restatement of the title.

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

Completeness5/5

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

For a single-parameter, read-only tool with an output schema present, the description covers everything an agent needs: what is returned, what is omitted, when to use it, and how to identify the listing. No critical gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameter well. The description adds value by clarifying that the propertyId can be a UUID or listing number and by noting the legacy 'property_id' alias is still accepted, which the schema does not mention.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Return a 360° profile of one active Evlek listing by UUID or listing number,' followed by a concrete list of included fields. It clearly distinguishes itself from discovery-oriented tools by naming search_listings as the alternative, making its role unambiguous.

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

Usage Guidelines5/5

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

Explicit guidance is provided: 'Use when: a UUID or listing number is already known. Don't use for: discovery — use search_listings first.' This gives both positive and negative usage conditions and names the exact alternative, leaving no inference required.

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

get_price_indexGet Northern Cyprus Price IndexA
Read-only
Inspect

Returns source-dated aggregates of live active Evlek sale or long-term-rent asking prices. Descriptive listing facts only: not completed transactions, a valuation, a forecast, or an investment recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoFilter to a single city (omit for all cities). Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou).
typeNoSale or rent (default: sale)

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYes
citiesYes
dataAsOfYes
dataSourceNo
isEstimateNo
metricTypeNo
totalListingsNo
excludedOutliersNo
excludedDuplicatesNo
excludedNotEligibleNo
indexEligibleListingsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it returns 'source-dated aggregates' and 'descriptive listing facts only', clarifying that the data is not a transaction record or forward-looking opinion. This goes beyond the annotations and helps set expectations about the nature of the data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two sentences with no wasted words. The core function is stated first, and the clarifying exclusions are packed into a short second sentence. Every sentence earns its place.

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

Completeness4/5

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

The tool has an output schema, so return values are already documented. The description covers the data nature, the source (live active Evlek listings), and the scope (sale or long-term-rent asking prices). It does not explicitly mention that both parameters are optional, but the schema already shows required parameters: 0. The only minor gap is not naming a sibling alternative for when an agent should use a different tool, but the description is otherwise complete for a read-only aggregate tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (city and type) with descriptions and an enum for type. The description adds the context that the aggregates are for 'sale or long-term-rent asking prices', which aligns with the type parameter, but it does not add new parameter-level detail beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Returns'), a clear resource ('source-dated aggregates of live active Evlek sale or long-term-rent asking prices'), and explicitly distinguishes itself from related concepts like completed transactions, valuations, forecasts, and investment recommendations. This makes it easy for an agent to understand what the tool does and what it does not do.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: when you need asking-price aggregates for sale or rent listings. It does not explicitly name sibling alternatives or state when not to use it, but the negative list ('not completed transactions, a valuation, a forecast, or an investment recommendation') provides useful exclusion guidance. A clear context is given, though no explicit alternative tool is named.

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

list_locationsList Valid Evlek Cities and DistrictsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoOptional — limit districts to a single city. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou).

Output Schema

ParametersJSON Schema
NameRequiredDescription
citiesYes
truncatedNo
dataSourceNo
isEstimateNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive; the description adds that results are live inventory-location facts only and that holiday-home inventory is unavailable. This usefully discloses the data-source behavior and a meaningful limitation beyond what annotations state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is concise at two sentences, front-loads the core purpose, and every sentence carries meaningful scope information. No filler or redundant restatement of the title or schema.

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

Completeness5/5

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

For a simple read-only tool with one optional parameter, an output schema, and clear annotations, the description covers purpose, scope, live-inventory behavior, and an explicit exclusion. Nothing essential is missing for an agent to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for the single optional city parameter, including accepted forms like slug, Turkish name, or exonym. The description adds no additional parameter-level detail, so the baseline score of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: it returns canonical KKTC city slugs plus districts represented by active Evlek sale or long-term-rent listings. It clearly scopes the result set and distinguishes itself from broader search or comparison tools by emphasizing live inventory-location facts.

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

Usage Guidelines4/5

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

The description makes clear that this is for canonical city/district data derived from active sale or long-term-rent listings and explicitly excludes holiday-home inventory. It does not name a specific sibling alternative, but the exclusion and live-inventory framing give the agent clear contextual guidance on when to use it.

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

payment_planCurrency Conversion (payment-plan name reserved)A
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYesEntered property asking-price amount; not a deposit or installment.
currencyNoCurrency of the price (default GBP).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fxNo
amountsYes
priceGBPYes
dataSourceNo
inputCurrencyYes
usesStoredRateNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and non-destructive behavior. The description adds meaningful context by revealing that this is a temporary placeholder that only returns currency conversion, going beyond what the annotations convey and preventing false expectations about payment-plan outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is two concise sentences. The first front-loads the actual current behavior, and the second prevents misuse by listing what the tool does not do and explaining the placeholder situation. Every sentence earns its place.

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

Completeness4/5

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

For a simple two-parameter tool with an output schema and safety annotations, the description covers the essential caveat that the tool name is misleading. It could have pointed explicitly to convert_currency as the canonical sibling, but nothing critical is missing for correctly invoking a basic currency conversion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-specific detail; the schema already explains that price is the asking price and not a deposit or installment, and currency is the price currency.

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

Purpose4/5

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

The description clearly states the tool currently performs currency conversion only, and explicitly disclaims payment-plan, deposit, and acquisition-cost outputs. This distinguishes it from the misleading name, though it does not explicitly differentiate it from the sibling convert_currency.

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

Usage Guidelines3/5

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

The description implies the tool should be used for currency conversion and warns against using it for payment plans or related estimates. However, it never explicitly says when to prefer this tool over the sibling convert_currency, and it lacks clear when-to-use versus when-not-to-use guidance.

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

search_listingsSearch Northern Cyprus Property ListingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoSlug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou).
poolNoOnly listings with a pool
typeNoListing type
limitNoResult count (integer 1-10, default 5)
queryNoOptional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict
gardenNoOnly listings with a garden
offsetNoRows to skip (pagination, default 0)
sortByNoSort order (default: newest)
parkingNoOnly listings with parking
seaViewNoOnly listings flagged sea_view
bedroomsNoBedroom count (integer 0-10)
districtNoDistrict name (e.g. Alsancak), matched accent/case-insensitively against the active-listing district list
elevatorNoOnly listings with an elevator
maxPriceNoMax price in GBP
minPriceNoMin price in GBP
furnishedNoOnly furnished listings
propertyTypeNoRaw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
notesNo
offsetYes
fxRatesNo
rankingNo
factTypeNo
listingsYes
dataSourceNo
isEstimateNo
sortAppliedYes
totalMatchedYes
appliedFiltersYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare this read-only and non-destructive, so the description's job is lighter. It adds meaningful behavior beyond the annotations: newest-first default, `limit` truncation, `totalMatched` reporting, and the caveat that it is not a valuation, verification, forecast, ranking, or recommendation tool. This gives the agent a clear, honest model of what the tool will and will not do.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is three tightly focused sentences. It leads with the core purpose, then adds operational details (sorting, `limit`, `totalMatched`), and closes with a decisive scope boundary. There is no fluff or repetition.

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

Completeness4/5

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

Given the tool's complexity (17 parameters), the description plus the fully populated schema and output presence covers nearly everything the agent needs: live scope, listings type, defaults, pagination reporting, and clear negative scope. The main remaining gap is the explicit comparison with sibling tools such as `search` and `compare_properties`; otherwise this definition is functionally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents all 17 parameters well, with enums and per-field descriptions. The description adds minimal parameter-level depth; its only parameter-adjacent contributions are global behavior such as 'newest-first by default' and `totalMatched` semantics, which are useful but not substantial per-parameter enrichments.

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

Purpose4/5

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

The description clearly states a specific verb and resource: 'Search live active sale and long-term-rent listings on Evlek.' It differentiates by scope—only live active listings and only asking-price facts, not valuation or recommendations—but does not explicitly distinguish itself from the sibling `search` tool, leaving some room for confusion.

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

Usage Guidelines3/5

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

The description gives useful exclusionary guidance: it is for live active listings and returns only advertised asking-price facts, not valuation, forecast, ranking, or recommendation. However, it does not explicitly tell the agent when to prefer `search_listings` over siblings like `search`, `compare_properties`, or `get_listing_detail`, so alternative selection is left mostly to inference.

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

Tool Schema Changelog

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

  1. 2 tool updates
    • Changedget_price_index1 field changed
      • addedOutput schema / properties / dataSource / enum
        Added value: +[
        +  "live_active_listings",
        +  "daily_snapshot"
        +]
    • Changedsearch_listings2 fields changed
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict",
        +  "type": "string"
        +}
      • addedOutput schema / properties / notes
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
  2. 1 tool update
    • Changedget_price_index12 fields changed
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nDuplicates
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nIqrExcluded
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nRaw
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / nUnique
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nDuplicates
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nIqrExcluded
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nRaw
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / cities / items / properties / nUnique
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / excludedDuplicates
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / excludedNotEligible
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / excludedOutliers
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / indexEligibleListings
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
  3. 12 tool updates
    • Changedcompare_cities4 fields changed
      • addedInput schema / properties / cities / items / description
        Added value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / cities / items / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / cities / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
    • Changedcompare_properties3 fields changed
      • addedInput schema / properties / listingIds
        Added value: +{
        +  "description": "Evlek listing UUIDs or listing numbers (2-4)",
        +  "items": {
        +    "description": "Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")",
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / listing_ids
        Removed value: -{
        -  "description": "Evlek listing UUIDs (2-4)",
        -  "items": {
        -    "description": "Evlek listing UUID",
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "listing_ids"
        -]New value: +[
        +  "listingIds"
        +]
    • Changedconvert_currency4 fields changed
      • addedOutput schema / properties / amounts / properties
        Added value: +{
        +  "EUR": {
        +    "type": "number"
        +  },
        +  "GBP": {
        +    "type": "number"
        +  },
        +  "TRY": {
        +    "type": "number"
        +  },
        +  "USD": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / amounts / required
        Added value: +[
        +  "GBP",
        +  "EUR",
        +  "USD",
        +  "TRY"
        +]
      • addedOutput schema / properties / fx / properties
        Added value: +{
        +  "asOf": {
        +    "type": "string"
        +  },
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "GBP": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "GBP",
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "stored_current_rates"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fx / required
        Added value: +[
        +  "base",
        +  "source",
        +  "asOf",
        +  "rates"
        +]
    • Changedfetch2 fields changed
      • addedOutput schema / properties / metadata / properties
        Added value: +{
        +  "areaSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "bedrooms": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "city": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "currency": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "district": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "listedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "locationPrecision": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "monthlyRentGbp": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "priceGBP": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "pricePerSqmGBP": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "type": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / metadata / required
        Added value: +[
        +  "city",
        +  "district",
        +  "type",
        +  "bedrooms",
        +  "areaSqm",
        +  "priceGBP",
        +  "pricePerSqmGBP",
        +  "monthlyRentGbp",
        +  "currency",
        +  "listedAt",
        +  "locationPrecision"
        +]
    • Changedget_district_profile14 fields changed
      • addedInput schema / properties / city / description
        Added value: +"City containing the district. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • changedInput schema / properties / district / description
        Previous value: -"District name (2-60 chars)"New value: +"District name (2-60 chars), matched accent/case-insensitively against the active-listing district list"
      • addedOutput schema / properties / askingRentToAskingPricePct
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / indicativeGrossRentToPricePct
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / isObservedIncome
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / isObservedYield
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / ratioMetricType
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / rent / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / rent / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / sale / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / sale / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / yieldMetricType
        Removed value: -{
        -  "type": "string"
        -}
    • Changedget_listing_by_number5 fields changed
      • addedInput schema / properties / listingNumber
        Added value: +{
        +  "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.",
        +  "type": [
        +    "string",
        +    "number"
        +  ]
        +}
      • removedInput schema / properties / listing_number
        Removed value: -{
        -  "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.",
        -  "type": [
        -    "string",
        -    "number"
        -  ]
        -}
      • changedInput schema / required
        Previous value: -[
        -  "listing_number"
        -]New value: +[
        +  "listingNumber"
        +]
      • addedOutput schema / properties / fxRates / properties
        Added value: +{
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "isFallback": {
        +    "type": "boolean"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "database",
        +      "fallback"
        +    ],
        +    "type": "string"
        +  },
        +  "updatedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / fxRates / required
        Added value: +[
        +  "base",
        +  "rates",
        +  "source",
        +  "updatedAt",
        +  "isFallback"
        +]
    • Changedget_listing_detail5 fields changed
      • addedInput schema / properties / propertyId
        Added value: +{
        +  "description": "Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")",
        +  "type": "string"
        +}
      • removedInput schema / properties / property_id
        Removed value: -{
        -  "description": "Evlek listing UUID",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "property_id"
        -]New value: +[
        +  "propertyId"
        +]
      • addedOutput schema / properties / fxRates / properties
        Added value: +{
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "isFallback": {
        +    "type": "boolean"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "database",
        +      "fallback"
        +    ],
        +    "type": "string"
        +  },
        +  "updatedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / fxRates / required
        Added value: +[
        +  "base",
        +  "rates",
        +  "source",
        +  "updatedAt",
        +  "isFallback"
        +]
    • Changedget_price_index6 fields changed
      • addedInput schema / properties / city / description
        Added value: +"Filter to a single city (omit for all cities). Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / districts / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
      • addedOutput schema / properties / cities / items / properties / provenance / properties
        Added value: +{
        +  "agencies": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "maxAgencyShare": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "publishers": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "singleSource": {
        +    "type": "boolean"
        +  }
        +}
      • addedOutput schema / properties / cities / items / properties / provenance / required
        Added value: +[
        +  "publishers",
        +  "agencies",
        +  "maxAgencyShare",
        +  "singleSource"
        +]
    • Changedlist_locations3 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"Optional — limit districts to a single city slug."New value: +"Optional — limit districts to a single city. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedpayment_plan4 fields changed
      • addedOutput schema / properties / amounts / properties
        Added value: +{
        +  "EUR": {
        +    "type": "number"
        +  },
        +  "GBP": {
        +    "type": "number"
        +  },
        +  "TRY": {
        +    "type": "number"
        +  },
        +  "USD": {
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / amounts / required
        Added value: +[
        +  "GBP",
        +  "EUR",
        +  "USD",
        +  "TRY"
        +]
      • addedOutput schema / properties / fx / properties
        Added value: +{
        +  "asOf": {
        +    "type": "string"
        +  },
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "GBP": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "GBP",
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "stored_current_rates"
        +    ],
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fx / required
        Added value: +[
        +  "base",
        +  "source",
        +  "asOf",
        +  "rates"
        +]
    • Changedsearch7 fields changed
      • addedOutput schema / properties / appliedFilters / additionalProperties
        Added value: +false
      • addedOutput schema / properties / appliedFilters / properties
        Added value: +{
        +  "bedrooms": {
        +    "type": "number"
        +  },
        +  "city": {
        +    "type": "string"
        +  },
        +  "district": {
        +    "type": "string"
        +  },
        +  "elevator": {
        +    "type": "boolean"
        +  },
        +  "furnished": {
        +    "type": "boolean"
        +  },
        +  "garden": {
        +    "type": "boolean"
        +  },
        +  "maxPrice": {
        +    "type": "number"
        +  },
        +  "minPrice": {
        +    "type": "number"
        +  },
        +  "parking": {
        +    "type": "boolean"
        +  },
        +  "pool": {
        +    "type": "boolean"
        +  },
        +  "propertyType": {
        +    "type": "string"
        +  },
        +  "seaView": {
        +    "type": "boolean"
        +  },
        +  "type": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fxRates / properties
        Added value: +{
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "isFallback": {
        +    "type": "boolean"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "database",
        +      "fallback"
        +    ],
        +    "type": "string"
        +  },
        +  "updatedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / fxRates / required
        Added value: +[
        +  "base",
        +  "rates",
        +  "source",
        +  "updatedAt",
        +  "isFallback"
        +]
      • addedOutput schema / properties / listings / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "city",
        +  "district",
        +  "price",
        +  "priceGbp",
        +  "currency",
        +  "type",
        +  "url"
        +]
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / properties
        Added value: +{
        +  "areaSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "bedrooms": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "city": {
        +    "type": "string"
        +  },
        +  "coverImageUrl": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "currency": {
        +    "type": "string"
        +  },
        +  "district": {
        +    "type": "string"
        +  },
        +  "id": {
        +    "type": "string"
        +  },
        +  "listingNumber": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "locationPrecision": {
        +    "enum": [
        +      "exact",
        +      "district",
        +      "city"
        +    ],
        +    "type": "string"
        +  },
        +  "monthlyRentGbp": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "price": {
        +    "type": "number"
        +  },
        +  "priceGbp": {
        +    "type": "number"
        +  },
        +  "propertyType": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  },
        +  "title": {
        +    "type": "string"
        +  },
        +  "type": {
        +    "type": "string"
        +  },
        +  "url": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / nearbyAlternatives / properties / listings / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "city",
        +  "district",
        +  "price",
        +  "priceGbp",
        +  "currency",
        +  "type",
        +  "url"
        +]
    • Changedsearch_listings7 fields changed
      • changedInput schema / properties / city / description
        Previous value: -"City to filter"New value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)."
      • removedInput schema / properties / city / enum
        Removed value: -[
        -  "girne",
        -  "iskele",
        -  "lefkosa",
        -  "gazimagusa",
        -  "guzelyurt",
        -  "lefke"
        -]
      • changedInput schema / properties / district / description
        Previous value: -"District name (e.g. Alsancak), case-insensitive"New value: +"District name (e.g. Alsancak), matched accent/case-insensitively against the active-listing district list"
      • addedOutput schema / properties / appliedFilters / additionalProperties
        Added value: +false
      • addedOutput schema / properties / appliedFilters / properties
        Added value: +{
        +  "bedrooms": {
        +    "type": "number"
        +  },
        +  "city": {
        +    "type": "string"
        +  },
        +  "district": {
        +    "type": "string"
        +  },
        +  "elevator": {
        +    "type": "boolean"
        +  },
        +  "furnished": {
        +    "type": "boolean"
        +  },
        +  "garden": {
        +    "type": "boolean"
        +  },
        +  "maxPrice": {
        +    "type": "number"
        +  },
        +  "minPrice": {
        +    "type": "number"
        +  },
        +  "parking": {
        +    "type": "boolean"
        +  },
        +  "pool": {
        +    "type": "boolean"
        +  },
        +  "propertyType": {
        +    "type": "string"
        +  },
        +  "seaView": {
        +    "type": "boolean"
        +  },
        +  "type": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / fxRates / properties
        Added value: +{
        +  "base": {
        +    "enum": [
        +      "GBP"
        +    ],
        +    "type": "string"
        +  },
        +  "isFallback": {
        +    "type": "boolean"
        +  },
        +  "rates": {
        +    "properties": {
        +      "EUR": {
        +        "type": "number"
        +      },
        +      "TRY": {
        +        "type": "number"
        +      },
        +      "USD": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "EUR",
        +      "USD",
        +      "TRY"
        +    ],
        +    "type": "object"
        +  },
        +  "source": {
        +    "enum": [
        +      "database",
        +      "fallback"
        +    ],
        +    "type": "string"
        +  },
        +  "updatedAt": {
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / fxRates / required
        Added value: +[
        +  "base",
        +  "rates",
        +  "source",
        +  "updatedAt",
        +  "isFallback"
        +]
  4. 12 tool updates
    • Changedcompare_cities4 fields changed
      • addedOutput schema / properties / cities / items
        Added value: +{
        +  "properties": {
        +    "activeCount": {
        +      "type": "number"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "hasData": {
        +      "type": "boolean"
        +    },
        +    "lowSample": {
        +      "type": "boolean"
        +    },
        +    "medianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "medianPricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p25Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p75Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "provenance": {
        +      "type": "object"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "topDistrict": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "topDistrictMedianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "withheldReason": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "slug",
        +    "city",
        +    "activeCount",
        +    "hasData"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / generatedAt
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "type",
        -  "cities"
        -]New value: +[
        +  "type",
        +  "dataAsOf",
        +  "cities"
        +]
    • Changedcompare_properties1 field changed
      • addedOutput schema / properties / listings / items
        Added value: +{
        +  "properties": {
        +    "area": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bathrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bedrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "district": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "monthlyRentGbp": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "number": {
        +      "type": "string"
        +    },
        +    "price": {
        +      "type": "number"
        +    },
        +    "priceGbp": {
        +      "type": "number"
        +    },
        +    "pricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "title",
        +    "price",
        +    "priceGbp",
        +    "type",
        +    "url"
        +  ],
        +  "type": "object"
        +}
    • Addedconvert_currency
    • Changedget_district_profile6 fields changed
      • addedOutput schema / properties / cleanSampleTotal
        Added value: +{
        +  "description": "sale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings",
        +  "type": "number"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / rent / properties
        Added value: +{
        +  "count": {
        +    "type": "number"
        +  },
        +  "maturity": {
        +    "enum": [
        +      "olgun",
        +      "öncü",
        +      "biriktiriyor"
        +    ],
        +    "type": "string"
        +  },
        +  "median": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "medianPerSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p25": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p75": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "provenance": {
        +    "type": "object"
        +  },
        +  "status": {
        +    "enum": [
        +      "proven",
        +      "preliminary",
        +      "collecting"
        +    ],
        +    "type": "string"
        +  },
        +  "withheldReason": {
        +    "enum": [
        +      "insufficient_sample",
        +      "no_value",
        +      null
        +    ],
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • addedOutput schema / properties / sale / properties
        Added value: +{
        +  "count": {
        +    "type": "number"
        +  },
        +  "maturity": {
        +    "enum": [
        +      "olgun",
        +      "öncü",
        +      "biriktiriyor"
        +    ],
        +    "type": "string"
        +  },
        +  "median": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "medianPerSqm": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p25": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "p75": {
        +    "type": [
        +      "number",
        +      "null"
        +    ]
        +  },
        +  "provenance": {
        +    "type": "object"
        +  },
        +  "status": {
        +    "enum": [
        +      "proven",
        +      "preliminary",
        +      "collecting"
        +    ],
        +    "type": "string"
        +  },
        +  "withheldReason": {
        +    "enum": [
        +      "insufficient_sample",
        +      "no_value",
        +      null
        +    ],
        +    "type": [
        +      "string",
        +      "null"
        +    ]
        +  }
        +}
      • removedOutput schema / properties / totalActive
        Removed value: -{
        -  "type": "number"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "city",
        -  "district",
        -  "totalActive"
        -]New value: +[
        +  "city",
        +  "district",
        +  "cleanSampleTotal"
        +]
    • Changedget_listing_by_number2 fields changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedget_listing_detail2 fields changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Changedget_price_index4 fields changed
      • addedOutput schema / properties / cities / items
        Added value: +{
        +  "properties": {
        +    "city": {
        +      "type": "string"
        +    },
        +    "count": {
        +      "type": "number"
        +    },
        +    "districts": {
        +      "items": {
        +        "properties": {
        +          "count": {
        +            "type": "number"
        +          },
        +          "district": {
        +            "type": "string"
        +          },
        +          "lowSample": {
        +            "type": "boolean"
        +          },
        +          "medianPrice": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "medianPricePerSqm": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "provenance": {
        +            "type": "object"
        +          },
        +          "status": {
        +            "type": "string"
        +          },
        +          "withheldReason": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "district",
        +          "count",
        +          "lowSample",
        +          "medianPrice"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "lowSample": {
        +      "type": "boolean"
        +    },
        +    "medianPrice": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "medianPricePerSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p25Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "p75Price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "provenance": {
        +      "type": "object"
        +    },
        +    "status": {
        +      "enum": [
        +        "proven",
        +        "preliminary",
        +        "collecting"
        +      ],
        +      "type": "string"
        +    },
        +    "withheldReason": {
        +      "enum": [
        +        "insufficient_sample",
        +        "no_value",
        +        null
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "city",
        +    "count",
        +    "status",
        +    "lowSample",
        +    "withheldReason",
        +    "medianPrice",
        +    "districts"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / dataAsOf
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / generatedAt
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "type",
        -  "cities"
        -]New value: +[
        +  "type",
        +  "dataAsOf",
        +  "cities"
        +]
    • Removedget_yield_estimate
    • Changedsearch5 fields changed
      • addedOutput schema / properties / criteria
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "key": {
        +        "type": "string"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "state": {
        +        "enum": [
        +          "applied",
        +          "unresolved",
        +          "not_supported"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "key",
        +      "value",
        +      "state"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / listings / items / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / listings / items / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / listings / items / properties / propertyType
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / nearbyAlternatives
        Added value: +{
        +  "properties": {
        +    "listings": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "relaxed": {
        +      "enum": [
        +        "district",
        +        "maxPrice"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "relaxed",
        +    "listings"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedsearch_listings15 fields changed
      • addedInput schema / properties / district
        Added value: +{
        +  "description": "District name (e.g. Alsancak), case-insensitive",
        +  "type": "string"
        +}
      • addedInput schema / properties / elevator
        Added value: +{
        +  "description": "Only listings with an elevator",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / furnished
        Added value: +{
        +  "description": "Only furnished listings",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / garden
        Added value: +{
        +  "description": "Only listings with a garden",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Rows to skip (pagination, default 0)",
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / parking
        Added value: +{
        +  "description": "Only listings with parking",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / pool
        Added value: +{
        +  "description": "Only listings with a pool",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / propertyType / description
        Previous value: -"Property type filter"New value: +"Raw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial"
      • changedInput schema / properties / propertyType / enum
        Previous value: -[
        -  "apartment",
        -  "residence",
        -  "villa",
        -  "twin",
        -  "detached",
        -  "bungalow",
        -  "penthouse",
        -  "studio",
        -  "duplex",
        -  "shop",
        -  "office",
        -  "warehouse",
        -  "whole_building",
        -  "hotel",
        -  "residential_land",
        -  "commercial_land",
        -  "farmland"
        -]New value: +[
        +  "apartment",
        +  "residence",
        +  "villa",
        +  "twin",
        +  "detached",
        +  "bungalow",
        +  "penthouse",
        +  "studio",
        +  "duplex",
        +  "shop",
        +  "office",
        +  "warehouse",
        +  "whole_building",
        +  "hotel",
        +  "residential_land",
        +  "commercial_land",
        +  "farmland",
        +  "house",
        +  "land",
        +  "commercial"
        +]
      • addedInput schema / properties / seaView
        Added value: +{
        +  "description": "Only listings flagged sea_view",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / listings / items / properties / monthlyRentGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / ranking
        Added value: +{
        +  "properties": {
        +    "of": {
        +      "type": "number"
        +    },
        +    "pooled": {
        +      "type": "number"
        +    },
        +    "scope": {
        +      "enum": [
        +        "complete",
        +        "partial"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "scope",
        +    "pooled",
        +    "of"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "count",
        -  "totalMatched",
        -  "sortApplied",
        -  "listings",
        -  "appliedFilters"
        -]New value: +[
        +  "count",
        +  "totalMatched",
        +  "offset",
        +  "sortApplied",
        +  "listings",
        +  "appliedFilters"
        +]
    • Removedstudent_housing
    • Removedsuggest_neighborhood
  5. 3 tool updates
    • Changedget_listing_by_number1 field changed
      • addedOutput schema / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
    • Changedget_listing_detail1 field changed
      • addedOutput schema / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / listings / items / properties / locationPrecision
        Added value: +{
        +  "enum": [
        +    "exact",
        +    "district",
        +    "city"
        +  ],
        +  "type": "string"
        +}
  6. 1 tool update
    • Changedsearch_listings1 field changed
      • changedInput schema / properties / propertyType / enum
        Previous value: -[
        -  "apartment",
        -  "residence",
        -  "villa",
        -  "twin",
        -  "detached",
        -  "bungalow",
        -  "penthouse",
        -  "studio",
        -  "duplex",
        -  "shop",
        -  "office",
        -  "warehouse",
        -  "whole_building",
        -  "residential_land",
        -  "commercial_land",
        -  "farmland"
        -]New value: +[
        +  "apartment",
        +  "residence",
        +  "villa",
        +  "twin",
        +  "detached",
        +  "bungalow",
        +  "penthouse",
        +  "studio",
        +  "duplex",
        +  "shop",
        +  "office",
        +  "warehouse",
        +  "whole_building",
        +  "hotel",
        +  "residential_land",
        +  "commercial_land",
        +  "farmland"
        +]
  7. 13 tool updates
    • Changedcompare_cities3 fields changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / metricType
        Added value: +{
        +  "type": "string"
        +}
    • Changedcompare_properties3 fields changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / metricType
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_district_profile8 fields changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / grossYieldPct
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / indicativeGrossRentToPricePct
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / isObservedYield
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / metricType
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / personaContexts
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / personas
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / yieldMetricType
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_listing_by_number6 fields changed
      • removedOutput schema / properties / dataQuality
        Removed value: -{
        -  "properties": {
        -    "priceOutlier": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / factType
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / fxRates
        Removed value: -{
        -  "properties": {
        -    "base": {
        -      "type": "string"
        -    },
        -    "isFallback": {
        -      "type": "boolean"
        -    },
        -    "rates": {
        -      "type": "object"
        -    },
        -    "source": {
        -      "type": "string"
        -    },
        -    "updatedAt": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / virtualStaging / properties / items / items / properties / provenance
        Added value: +{
        +  "properties": {
        +    "digitalSourceType": {
        +      "type": "string"
        +    },
        +    "generatedAt": {
        +      "type": "string"
        +    },
        +    "humanReview": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "type": "string"
        +    },
        +    "modelVersion": {
        +      "type": "string"
        +    },
        +    "originalRetained": {
        +      "type": "boolean"
        +    },
        +    "outputId": {
        +      "type": "string"
        +    },
        +    "outputSha256": {
        +      "type": "string"
        +    },
        +    "provider": {
        +      "type": "string"
        +    },
        +    "version": {
        +      "type": "number"
        +    },
        +    "visibleDisclosureApplied": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_listing_detail6 fields changed
      • removedOutput schema / properties / dataQuality
        Removed value: -{
        -  "properties": {
        -    "priceOutlier": {
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / factType
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / fxRates
        Removed value: -{
        -  "properties": {
        -    "base": {
        -      "type": "string"
        -    },
        -    "isFallback": {
        -      "type": "boolean"
        -    },
        -    "rates": {
        -      "type": "object"
        -    },
        -    "source": {
        -      "type": "string"
        -    },
        -    "updatedAt": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / virtualStaging / properties / items / items / properties / provenance
        Added value: +{
        +  "properties": {
        +    "digitalSourceType": {
        +      "type": "string"
        +    },
        +    "generatedAt": {
        +      "type": "string"
        +    },
        +    "humanReview": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "type": "string"
        +    },
        +    "modelVersion": {
        +      "type": "string"
        +    },
        +    "originalRetained": {
        +      "type": "boolean"
        +    },
        +    "outputId": {
        +      "type": "string"
        +    },
        +    "outputSha256": {
        +      "type": "string"
        +    },
        +    "provider": {
        +      "type": "string"
        +    },
        +    "version": {
        +      "type": "number"
        +    },
        +    "visibleDisclosureApplied": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
    • Removedget_market_overview
    • Changedget_price_index3 fields changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / metricType
        Added value: +{
        +  "type": "string"
        +}
    • Changedget_yield_estimate15 fields changed
      • addedInput schema / properties / annualOperatingCostsGBP
        Added value: +{
        +  "description": "User-supplied annual operating-cost assumption in GBP",
        +  "maximum": 10000000,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • removedInput schema / properties / bedrooms
        Removed value: -{
        -  "description": "Bedroom count (integer 0-10)",
        -  "maximum": 10,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • addedInput schema / properties / monthlyRentGBP
        Added value: +{
        +  "description": "User-supplied monthly long-term rent assumption in GBP",
        +  "maximum": 1000000,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / occupiedMonths
        Added value: +{
        +  "description": "User-supplied number of occupied and paid months in the 12-month scenario period",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • removedInput schema / properties / purchasePrice
        Removed value: -{
        -  "description": "Purchase price in GBP",
        -  "maximum": 10000000,
        -  "minimum": 10000,
        -  "type": "number"
        -}
      • addedInput schema / properties / purchasePriceGBP
        Added value: +{
        +  "description": "User-supplied purchase price in GBP",
        +  "maximum": 10000000,
        +  "minimum": 10000,
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "city",
        -  "purchasePrice"
        -]New value: +[
        +  "purchasePriceGBP",
        +  "monthlyRentGBP",
        +  "annualOperatingCostsGBP",
        +  "occupiedMonths"
        +]
      • addedOutput schema / properties / assumptions
        Added value: +{
        +  "type": "object"
        +}
      • changedOutput schema / properties / breakevenYears / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / city / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / cityBenchmark
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / dataSource / description
        Removed value: -"modelled — not derived from live rental listings"
      • addedOutput schema / properties / estimateType
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / occupiedMonths
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / usesLiveListingData
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedlist_locations2 fields changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedpayment_plan6 fields changed
      • removedInput schema / properties / offPlan
        Removed value: -{
        -  "description": "True if off-plan (under construction).",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / price / description
        Previous value: -"Property price."New value: +"Entered property asking-price amount; not a deposit or installment."
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / offPlan
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / usesStoredRate
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / warnings
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
    • Changedsearch_listings5 fields changed
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "sale",
        -  "rent",
        -  "daily"
        -]New value: +[
        +  "sale",
        +  "rent"
        +]
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / factType
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / fxRates
        Removed value: -{
        -  "properties": {
        -    "base": {
        -      "type": "string"
        -    },
        -    "isFallback": {
        -      "type": "boolean"
        -    },
        -    "rates": {
        -      "type": "object"
        -    },
        -    "source": {
        -      "type": "string"
        -    },
        -    "updatedAt": {
        -      "type": [
        -        "string",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / isEstimate
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedstudent_housing16 fields changed
      • removedInput schema / properties / bedrooms
        Removed value: -{
        -  "description": "Bedroom count (0=studio).",
        -  "maximum": 10,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • addedInput schema / properties / monthlyRentGBP
        Added value: +{
        +  "description": "User-supplied monthly long-term rent assumption in GBP.",
        +  "maximum": 1000000,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / occupiedMonths
        Added value: +{
        +  "description": "User-supplied number of occupied and paid months in the 12-month scenario period.",
        +  "maximum": 12,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "university"
        -]New value: +[
        +  "university",
        +  "monthlyRentGBP",
        +  "occupiedMonths"
        +]
      • removedOutput schema / properties / academicAnnualGBP
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / academicYieldPct
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / assumptions
        Added value: +{
        +  "type": "object"
        +}
      • removedOutput schema / properties / cityBand
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / dataSource / description
        Removed value: -"modelled — not derived from live rental listings"
      • addedOutput schema / properties / estimateType
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / grossRentToPricePct
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / modelledGrossRentGBP
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / occupiedMonths
        Added value: +{
        +  "type": "integer"
        +}
      • addedOutput schema / properties / usesLiveListingData
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / yearRoundAnnualGBP
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / yearRoundYieldPct
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
    • Changedsuggest_neighborhood5 fields changed
      • removedInput schema / properties / budgetGBP
        Removed value: -{
        -  "maximum": 5000000,
        -  "minimum": 20000,
        -  "type": "number"
        -}
      • changedInput schema / properties / persona / enum
        Previous value: -[
        -  "retiree",
        -  "investor",
        -  "student",
        -  "family",
        -  "digital_nomad",
        -  "vacation"
        -]New value: +[
        +  "retiree",
        +  "student",
        +  "family",
        +  "digital_nomad"
        +]
      • removedOutput schema / properties / budgetGBP
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / notRecommendation
        Added value: +{
        +  "type": "boolean"
        +}
  8. 15 tool updates
    • Changedcompare_cities1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "type",
        +  "cities"
        +]
    • Changedcompare_properties1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "count",
        +  "listings"
        +]
    • Changedfetch1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "id",
        +  "title",
        +  "text",
        +  "url"
        +]
    • Changedget_district_profile1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "city",
        +  "district",
        +  "totalActive"
        +]
    • Changedget_listing_by_number6 fields changed
      • changedInput schema / properties / listing_number / description
        Previous value: -"Evlek listing number, e.g. \"EVL-123456\" or \"123456\"."New value: +"Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456."
      • changedInput schema / properties / listing_number / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "number"
        +]
      • addedOutput schema / properties / dataQuality
        Added value: +{
        +  "properties": {
        +    "priceOutlier": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / photosShown
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / photosTruncated
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "found"
        +]
    • Changedget_listing_detail4 fields changed
      • addedOutput schema / properties / dataQuality
        Added value: +{
        +  "properties": {
        +    "priceOutlier": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedOutput schema / properties / photosShown
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / photosTruncated
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "found"
        +]
    • Changedget_market_overview1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "generatedAt",
        +  "totalActiveListings",
        +  "cities"
        +]
    • Changedget_price_index1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "type",
        +  "cities"
        +]
    • Changedget_yield_estimate1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "city",
        +  "purchasePriceGBP",
        +  "monthlyRentGBP",
        +  "grossYieldPct",
        +  "dataSource"
        +]
    • Changedlist_locations1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "cities"
        +]
    • Changedpayment_plan1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "inputCurrency",
        +  "priceGBP",
        +  "amounts"
        +]
    • Changedsearch3 fields changed
      • addedOutput schema / properties / outOfScope
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / unresolved
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "results"
        +]
    • Changedsearch_listings7 fields changed
      • addedInput schema / properties / propertyType
        Added value: +{
        +  "description": "Property type filter",
        +  "enum": [
        +    "apartment",
        +    "residence",
        +    "villa",
        +    "twin",
        +    "detached",
        +    "bungalow",
        +    "penthouse",
        +    "studio",
        +    "duplex",
        +    "shop",
        +    "office",
        +    "warehouse",
        +    "whole_building",
        +    "residential_land",
        +    "commercial_land",
        +    "farmland"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sortBy
        Added value: +{
        +  "description": "Sort order (default: newest)",
        +  "enum": [
        +    "newest",
        +    "price_asc",
        +    "price_desc",
        +    "area_desc",
        +    "price_per_sqm_asc"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / listings / items / properties / propertyType
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / listings / items / required
        Added value: +[
        +  "id",
        +  "title",
        +  "city",
        +  "district",
        +  "price",
        +  "priceGbp",
        +  "currency",
        +  "type",
        +  "url"
        +]
      • addedOutput schema / properties / sortApplied
        Added value: +{
        +  "enum": [
        +    "newest",
        +    "price_asc",
        +    "price_desc",
        +    "area_desc",
        +    "price_per_sqm_asc"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / totalMatched
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / required
        Added value: +[
        +  "count",
        +  "totalMatched",
        +  "sortApplied",
        +  "listings",
        +  "appliedFilters"
        +]
    • Changedstudent_housing1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "university",
        +  "city",
        +  "monthlyRentGBP",
        +  "dataSource"
        +]
    • Changedsuggest_neighborhood1 field changed
      • addedOutput schema / required
        Added value: +[
        +  "persona",
        +  "suggestions"
        +]
  9. 4 tool updates
    • Changedget_listing_by_number1 field changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "properties": {
        +    "base": {
        +      "type": "string"
        +    },
        +    "isFallback": {
        +      "type": "boolean"
        +    },
        +    "rates": {
        +      "type": "object"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_listing_detail1 field changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "properties": {
        +    "base": {
        +      "type": "string"
        +    },
        +    "isFallback": {
        +      "type": "boolean"
        +    },
        +    "rates": {
        +      "type": "object"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch1 field changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / fxRates
        Added value: +{
        +  "properties": {
        +    "base": {
        +      "type": "string"
        +    },
        +    "isFallback": {
        +      "type": "boolean"
        +    },
        +    "rates": {
        +      "type": "object"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "updatedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
  10. 2 tool updates
    • Changedsearch2 fields changed
      • addedOutput schema / properties / appliedFilters
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / listings
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "areaSqm": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "bedrooms": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "city": {
        +        "type": "string"
        +      },
        +      "coverImageUrl": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "currency": {
        +        "type": "string"
        +      },
        +      "district": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "listingNumber": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "price": {
        +        "type": "number"
        +      },
        +      "priceGbp": {
        +        "type": "number"
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "type": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / appliedFilters
        Added value: +{
        +  "type": "object"
        +}
  11. 5 tool updates
    • Changedfetch2 fields changed
      • addedOutput schema / properties / coverImageUrl
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / photos
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "caption": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tags": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • Changedget_listing_by_number1 field changed
      • addedOutput schema / properties / virtualStaging
        Added value: +{
        +  "properties": {
        +    "available": {
        +      "type": "boolean"
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "afterUrl": {
        +            "type": "string"
        +          },
        +          "beforeUrl": {
        +            "type": "string"
        +          },
        +          "roomType": {
        +            "type": "string"
        +          },
        +          "style": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_listing_detail1 field changed
      • addedOutput schema / properties / virtualStaging
        Added value: +{
        +  "properties": {
        +    "available": {
        +      "type": "boolean"
        +    },
        +    "disclosure": {
        +      "type": "string"
        +    },
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "afterUrl": {
        +            "type": "string"
        +          },
        +          "beforeUrl": {
        +            "type": "string"
        +          },
        +          "roomType": {
        +            "type": "string"
        +          },
        +          "style": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_market_overview6 fields changed
      • addedOutput schema / properties / cities
        Added value: +{
        +  "type": "array"
        +}
      • addedOutput schema / properties / generatedAt
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / indexes
        Removed value: -{
        -  "type": "object"
        -}
      • removedOutput schema / properties / lastUpdated
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / source
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / totalActiveListings
        Added value: +{
        +  "type": "number"
        +}
    • Changedsearch_listings1 field changed
      • addedOutput schema / properties / listings / items
        Added value: +{
        +  "properties": {
        +    "areaSqm": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "bedrooms": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "coverImageUrl": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "district": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "listingNumber": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "price": {
        +      "type": "number"
        +    },
        +    "priceGbp": {
        +      "type": "number"
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  12. 5 tool updates
    • Removedassess_title_risk
    • Removedforeign_buyer_roadmap
    • Removedget_legal_info
    • Changedget_listing_by_number3 fields changed
      • removedOutput schema / properties / titleDeedBand
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / titleDeedLabel
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / titleDeedType
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
    • Changedget_listing_detail3 fields changed
      • removedOutput schema / properties / titleDeedBand
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / titleDeedLabel
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / titleDeedType
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
  13. 6 tool updates
    • Changedassess_title_risk2 fields changed
      • changedInput schema / properties / title_deed_type / description
        Previous value: -"KKTC koçan type: turk_kocan, esdeger_kocan, tahsis, foreign_title, kat_irtifak (legacy turkish/equivalent/allocation/foreign accepted)."New value: +"KKTC koçan type: turk_kocan, esdeger_kocan, tahsis, foreign_title, kat_irtifak, or unknown (legacy turkish/equivalent/allocation/foreign accepted)."
      • changedInput schema / properties / title_deed_type / enum
        Previous value: -[
        -  "turk_kocan",
        -  "esdeger_kocan",
        -  "tahsis",
        -  "foreign_title",
        -  "kat_irtifak"
        -]New value: +[
        +  "turk_kocan",
        +  "esdeger_kocan",
        +  "tahsis",
        +  "foreign_title",
        +  "kat_irtifak",
        +  "unknown"
        +]
    • Changedforeign_buyer_roadmap6 fields changed
      • removedOutput schema / properties / disclaimer
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / legalAuditStatus
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / process
        Removed value: -{
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / summary
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / topic
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / verifyFlag
        Removed value: -{
        -  "type": "boolean"
        -}
    • Addedget_listing_by_number
    • Changedget_yield_estimate1 field changed
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "description": "modelled — not derived from live rental listings",
        +  "type": "string"
        +}
    • Addedlist_locations
    • Changedstudent_housing2 fields changed
      • changedInput schema / properties / university / description
        Previous value: -"University name or code, matched against the live roster."New value: +"University name, short code, or known alias, matched against the canonical Evlek university catalog."
      • addedOutput schema / properties / dataSource
        Added value: +{
        +  "description": "modelled — not derived from live rental listings",
        +  "type": "string"
        +}
  14. 3 tool updates
    • Addedfetch
    • Changedget_listing_detail2 fields changed
      • addedOutput schema / properties / listedAt
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / priceGbp
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
    • Addedsearch
  15. 1 tool update
    • Changedget_listing_detail2 fields changed
      • addedOutput schema / properties / coverImageUrl
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / photos
        Added value: +{
        +  "items": {
        +    "properties": {
        +      "caption": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tags": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "url": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  16. 14 tool updates
    • Addedassess_title_risk
    • Changedcompare_cities1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "cities": {
        +      "type": "array"
        +    },
        +    "generatedAt": {
        +      "type": "string"
        +    },
        +    "type": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompare_properties1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "listings": {
        +      "type": "array"
        +    },
        +    "missing": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedforeign_buyer_roadmap
    • Changedget_district_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "city": {
        +      "type": "string"
        +    },
        +    "district": {
        +      "type": "string"
        +    },
        +    "grossYieldPct": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "personas": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "rent": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "sale": {
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "totalActive": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_legal_info1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "topic": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedget_listing_detail
    • Changedget_market_overview1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "indexes": {
        +      "type": "object"
        +    },
        +    "investmentHighlights": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "lastUpdated": {
        +      "type": "string"
        +    },
        +    "source": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_price_index1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "cities": {
        +      "type": "array"
        +    },
        +    "generatedAt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "totalListings": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "type": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedget_yield_estimate1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "breakevenYears": {
        +      "type": "number"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "cityBenchmark": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "grossAnnualGBP": {
        +      "type": "number"
        +    },
        +    "grossYieldPct": {
        +      "type": "number"
        +    },
        +    "monthlyRentGBP": {
        +      "type": "number"
        +    },
        +    "netAnnualGBP": {
        +      "type": "number"
        +    },
        +    "netYieldPct": {
        +      "type": "number"
        +    },
        +    "purchasePriceGBP": {
        +      "type": "number"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedpayment_plan
    • Changedsearch_listings1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "count": {
        +      "type": "number"
        +    },
        +    "listings": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedstudent_housing
    • Changedsuggest_neighborhood1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "budgetGBP": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "persona": {
        +      "type": "string"
        +    },
        +    "preferences": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "suggestions": {
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Gives AI agents read-only access to Bulgarian real-estate data from imotai.bg, letting them list districts, search and fetch active listings, pull district-level market statistics, and estimate values from current asking prices. All results are field-allowlisted and rate limited, with no credentials, broker contact details, or written descriptions exposed.
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server providing 56 tools to query Qobrix real-estate CRM data, covering listings, leads, viewings, offers, contracts, analytics, and more, with RESO Data Dictionary alignment and caching support.
    64
    3
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.