Evlek — Northern Cyprus Property MCP Server
Server Details
Live Northern Cyprus (KKTC/TRNC) property listings and asking-price data. Read-only, 12 tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- Evlek/evlek-mcp
- GitHub Stars
- 0
- Server Listing
- Evlek — Northern Cyprus Property MCP Server
TDQS
Scored across 12 tools
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.
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.
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.
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 toolscompare_citiesCompare Northern Cyprus Cities Side-by-SideARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Sale or rent (default: sale) | |
| cities | Yes | Cities to compare (2-4) |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| cities | Yes | |
| dataAsOf | Yes | |
| dataSource | No | |
| isEstimate | No | |
| metricType | No |
TDQS
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.
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.
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.
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.
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.
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-SideARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| listingIds | Yes | Evlek listing UUIDs or listing numbers (2-4) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| missing | No | |
| listings | Yes | |
| dataSource | No | |
| isEstimate | No | |
| metricType | No |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Entered property asking-price amount; not a deposit or installment. | |
| currency | No | Currency of the price (default GBP). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fx | No | |
| amounts | Yes | |
| priceGBP | Yes | |
| dataSource | No | |
| inputCurrency | Yes | |
| usesStoredRate | No |
TDQS
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.
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.
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.
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.
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.
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 detailARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Evlek listing id (UUID) from search |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| photos | No | |
| metadata | No | |
| coverImageUrl | No |
TDQS
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.
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.
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.
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.
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.
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 DistrictARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City containing the district. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou). | |
| district | Yes | District name (2-60 chars), matched accent/case-insensitively against the active-listing district list |
Output Schema
| Name | Required | Description |
|---|---|---|
| city | Yes | |
| rent | No | |
| sale | No | |
| dataAsOf | No | |
| district | Yes | |
| truncated | No | |
| dataSource | No | |
| metricType | No | |
| personaContexts | No | |
| ratioMetricType | No | |
| cleanSampleTotal | Yes | sale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings |
| isObservedIncome | No | |
| askingRentToAskingPricePct | No |
TDQS
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.
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.
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.
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.
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.
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 NumberARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| listingNumber | Yes | Evlek listing number, e.g. "EVL-123456", "123456", or the bare number 123456. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| city | No | |
| type | No | |
| found | Yes | |
| price | No | |
| title | No | |
| photos | No | |
| areaSqm | No | |
| fxRates | No | |
| bedrooms | No | |
| currency | No | |
| district | No | |
| factType | No | |
| features | No | |
| listedAt | No | |
| priceGbp | No | |
| amenities | No | |
| bathrooms | No | |
| furnished | No | |
| dataSource | No | |
| isEstimate | No | |
| photoCount | No | |
| photosShown | No | |
| coverImageUrl | No | |
| listingNumber | No | |
| monthlyRentGbp | No | |
| pricePerSqmGBP | No | |
| virtualStaging | No | |
| photosTruncated | No | |
| locationPrecision | No |
TDQS
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.
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.
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.
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.
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.
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 ListingARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| propertyId | Yes | Evlek listing UUID or listing number (e.g. "EVL-123456", "123456") |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | |
| url | No | |
| city | No | |
| type | No | |
| found | Yes | |
| price | No | |
| title | No | |
| photos | No | |
| areaSqm | No | |
| fxRates | No | |
| bedrooms | No | |
| currency | No | |
| district | No | |
| factType | No | |
| features | No | |
| listedAt | No | |
| priceGbp | No | |
| amenities | No | |
| bathrooms | No | |
| furnished | No | |
| dataSource | No | |
| isEstimate | No | |
| photoCount | No | |
| photosShown | No | |
| coverImageUrl | No | |
| listingNumber | No | |
| monthlyRentGbp | No | |
| pricePerSqmGBP | No | |
| virtualStaging | No | |
| photosTruncated | No | |
| locationPrecision | No |
TDQS
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.
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.
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.
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.
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.
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 IndexARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Filter to a single city (omit for all cities). Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou). | |
| type | No | Sale or rent (default: sale) |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | |
| cities | Yes | |
| dataAsOf | Yes | |
| dataSource | No | |
| isEstimate | No | |
| metricType | No | |
| totalListings | No | |
| excludedOutliers | No | |
| excludedDuplicates | No | |
| excludedNotEligible | No | |
| indexEligibleListings | No |
TDQS
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.
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.
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.
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.
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.
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 DistrictsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Optional — limit districts to a single city. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cities | Yes | |
| truncated | No | |
| dataSource | No | |
| isEstimate | No |
TDQS
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.
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.
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.
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.
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.
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)ARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Entered property asking-price amount; not a deposit or installment. | |
| currency | No | Currency of the price (default GBP). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fx | No | |
| amounts | Yes | |
| priceGBP | Yes | |
| dataSource | No | |
| inputCurrency | Yes | |
| usesStoredRate | No |
TDQS
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.
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.
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.
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.
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.
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.
searchSearch Evlek property listingsARead-onlyInspect
Search live Northern Cyprus (KKTC/TRNC) property listings on Evlek with a free-text query. Returns matching listings as id/title/url for the fetch tool. Same data as search_listings — this fixed form exists for the ChatGPT/OpenAI connector contract. Use when: the caller only has a free-text query. Don't use for: structured filters — use search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Free-text property search query |
Output Schema
| Name | Required | Description |
|---|---|---|
| fxRates | No | |
| results | Yes | |
| criteria | No | |
| listings | No | |
| outOfScope | No | |
| unresolved | No | |
| appliedFilters | No | |
| nearbyAlternatives | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false; the description adds that results are returned as id/title/url for the fetch tool and that it shares data with search_listings. It enriches the behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is clear and front-loaded with the core action and resource, then return format, then usage routing. It is slightly longer than the minimum but every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only search tool with an output schema and annotations, the description covers what the tool does, why it exists, when to use it, and which sibling covers the excluded case. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'query' is already fully described in the schema as 'Free-text property search query'. The description reinforces the free-text nature and contrasts with structured filters, but adds no new details such as format, length, or language constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (search), a concrete resource (live Northern Cyprus property listings on Evlek), and the free-text query mode. It also explicitly distinguishes itself from search_listings by noting the shared data and the fixed connector contract, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Use when' and 'Don't use for' instructions, naming search_listings as the alternative for structured filters. This is unambiguous routing guidance that leaves no doubt about when this tool should be selected.
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 ListingsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou). | |
| pool | No | Only listings with a pool | |
| type | No | Listing type | |
| limit | No | Result count (integer 1-10, default 5) | |
| query | No | Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict | |
| garden | No | Only listings with a garden | |
| offset | No | Rows to skip (pagination, default 0) | |
| sortBy | No | Sort order (default: newest) | |
| parking | No | Only listings with parking | |
| seaView | No | Only listings flagged sea_view | |
| bedrooms | No | Bedroom count (integer 0-10) | |
| district | No | District name (e.g. Alsancak), matched accent/case-insensitively against the active-listing district list | |
| elevator | No | Only listings with an elevator | |
| maxPrice | No | Max price in GBP | |
| minPrice | No | Min price in GBP | |
| furnished | No | Only furnished listings | |
| propertyType | No | Raw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| notes | No | |
| offset | Yes | |
| fxRates | No | |
| ranking | No | |
| factType | No | |
| listings | Yes | |
| dataSource | No | |
| isEstimate | No | |
| sortApplied | Yes | |
| totalMatched | Yes | |
| appliedFilters | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
- Changed
get_price_index1 field changed- added
Output schema / properties / dataSource / enumAdded value: +[ + "live_active_listings", + "daily_snapshot" +]
- Changed
search_listings2 fields changed- added
Input schema / properties / queryAdded value: +{ + "description": "Optional free-text query (parsed like the `search` tool); merges with explicit filters below — an explicit filter wins on conflict", + "type": "string" +} - added
Output schema / properties / notesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
get_price_index12 fields changed- added
Output schema / properties / cities / items / properties / districts / items / properties / nDuplicatesAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / districts / items / properties / nIqrExcludedAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / districts / items / properties / nRawAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / districts / items / properties / nUniqueAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / nDuplicatesAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / nIqrExcludedAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / nRawAdded value: +{ + "type": "number" +} - added
Output schema / properties / cities / items / properties / nUniqueAdded value: +{ + "type": "number" +} - added
Output schema / properties / excludedDuplicatesAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / excludedNotEligibleAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / excludedOutliersAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / indexEligibleListingsAdded value: +{ + "type": [ + "number", + "null" + ] +}
12 tool updates
- Changed
compare_cities4 fields changed- added
Input schema / properties / cities / items / descriptionAdded value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)." - removed
Input schema / properties / cities / items / enumRemoved value: -[ - "girne", - "iskele", - "lefkosa", - "gazimagusa", - "guzelyurt", - "lefke" -] - added
Output schema / properties / cities / items / properties / provenance / propertiesAdded value: +{ + "agencies": { + "type": [ + "number", + "null" + ] + }, + "maxAgencyShare": { + "type": [ + "number", + "null" + ] + }, + "publishers": { + "type": [ + "number", + "null" + ] + }, + "singleSource": { + "type": "boolean" + } +} - added
Output schema / properties / cities / items / properties / provenance / requiredAdded value: +[ + "publishers", + "agencies", + "maxAgencyShare", + "singleSource" +]
- Changed
compare_properties3 fields changed- added
Input schema / properties / listingIdsAdded 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" +} - removed
Input schema / properties / listing_idsRemoved value: -{ - "description": "Evlek listing UUIDs (2-4)", - "items": { - "description": "Evlek listing UUID", - "type": "string" - }, - "type": "array" -} - changed
Input schema / requiredPrevious value: -[ - "listing_ids" -]New value: +[ + "listingIds" +]
- Changed
convert_currency4 fields changed- added
Output schema / properties / amounts / propertiesAdded value: +{ + "EUR": { + "type": "number" + }, + "GBP": { + "type": "number" + }, + "TRY": { + "type": "number" + }, + "USD": { + "type": "number" + } +} - added
Output schema / properties / amounts / requiredAdded value: +[ + "GBP", + "EUR", + "USD", + "TRY" +] - added
Output schema / properties / fx / propertiesAdded 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" + } +} - added
Output schema / properties / fx / requiredAdded value: +[ + "base", + "source", + "asOf", + "rates" +]
- Changed
fetch2 fields changed- added
Output schema / properties / metadata / propertiesAdded 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" + ] + } +} - added
Output schema / properties / metadata / requiredAdded value: +[ + "city", + "district", + "type", + "bedrooms", + "areaSqm", + "priceGBP", + "pricePerSqmGBP", + "monthlyRentGbp", + "currency", + "listedAt", + "locationPrecision" +]
- Changed
get_district_profile14 fields changed- added
Input schema / properties / city / descriptionAdded value: +"City containing the district. Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)." - removed
Input schema / properties / city / enumRemoved value: -[ - "girne", - "iskele", - "lefkosa", - "gazimagusa", - "guzelyurt", - "lefke" -] - changed
Input schema / properties / district / descriptionPrevious value: -"District name (2-60 chars)"New value: +"District name (2-60 chars), matched accent/case-insensitively against the active-listing district list" - added
Output schema / properties / askingRentToAskingPricePctAdded value: +{ + "type": [ + "number", + "null" + ] +} - removed
Output schema / properties / indicativeGrossRentToPricePctRemoved value: -{ - "type": [ - "number", - "null" - ] -} - added
Output schema / properties / isObservedIncomeAdded value: +{ + "type": "boolean" +} - removed
Output schema / properties / isObservedYieldRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / ratioMetricTypeAdded value: +{ + "type": "string" +} - added
Output schema / properties / rent / properties / provenance / propertiesAdded value: +{ + "agencies": { + "type": [ + "number", + "null" + ] + }, + "maxAgencyShare": { + "type": [ + "number", + "null" + ] + }, + "publishers": { + "type": [ + "number", + "null" + ] + }, + "singleSource": { + "type": "boolean" + } +} - added
Output schema / properties / rent / properties / provenance / requiredAdded value: +[ + "publishers", + "agencies", + "maxAgencyShare", + "singleSource" +] - added
Output schema / properties / sale / properties / provenance / propertiesAdded value: +{ + "agencies": { + "type": [ + "number", + "null" + ] + }, + "maxAgencyShare": { + "type": [ + "number", + "null" + ] + }, + "publishers": { + "type": [ + "number", + "null" + ] + }, + "singleSource": { + "type": "boolean" + } +} - added
Output schema / properties / sale / properties / provenance / requiredAdded value: +[ + "publishers", + "agencies", + "maxAgencyShare", + "singleSource" +] - added
Output schema / properties / truncatedAdded value: +{ + "type": "boolean" +} - removed
Output schema / properties / yieldMetricTypeRemoved value: -{ - "type": "string" -}
- Changed
get_listing_by_number5 fields changed- added
Input schema / properties / listingNumberAdded value: +{ + "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.", + "type": [ + "string", + "number" + ] +} - removed
Input schema / properties / listing_numberRemoved value: -{ - "description": "Evlek listing number, e.g. \"EVL-123456\", \"123456\", or the bare number 123456.", - "type": [ - "string", - "number" - ] -} - changed
Input schema / requiredPrevious value: -[ - "listing_number" -]New value: +[ + "listingNumber" +] - added
Output schema / properties / fxRates / propertiesAdded 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" + ] + } +} - added
Output schema / properties / fxRates / requiredAdded value: +[ + "base", + "rates", + "source", + "updatedAt", + "isFallback" +]
- Changed
get_listing_detail5 fields changed- added
Input schema / properties / propertyIdAdded value: +{ + "description": "Evlek listing UUID or listing number (e.g. \"EVL-123456\", \"123456\")", + "type": "string" +} - removed
Input schema / properties / property_idRemoved value: -{ - "description": "Evlek listing UUID", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "property_id" -]New value: +[ + "propertyId" +] - added
Output schema / properties / fxRates / propertiesAdded 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" + ] + } +} - added
Output schema / properties / fxRates / requiredAdded value: +[ + "base", + "rates", + "source", + "updatedAt", + "isFallback" +]
- Changed
get_price_index6 fields changed- added
Input schema / properties / city / descriptionAdded value: +"Filter to a single city (omit for all cities). Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)." - removed
Input schema / properties / city / enumRemoved value: -[ - "girne", - "iskele", - "lefkosa", - "gazimagusa", - "guzelyurt", - "lefke" -] - added
Output schema / properties / cities / items / properties / districts / items / properties / provenance / propertiesAdded value: +{ + "agencies": { + "type": [ + "number", + "null" + ] + }, + "maxAgencyShare": { + "type": [ + "number", + "null" + ] + }, + "publishers": { + "type": [ + "number", + "null" + ] + }, + "singleSource": { + "type": "boolean" + } +} - added
Output schema / properties / cities / items / properties / districts / items / properties / provenance / requiredAdded value: +[ + "publishers", + "agencies", + "maxAgencyShare", + "singleSource" +] - added
Output schema / properties / cities / items / properties / provenance / propertiesAdded value: +{ + "agencies": { + "type": [ + "number", + "null" + ] + }, + "maxAgencyShare": { + "type": [ + "number", + "null" + ] + }, + "publishers": { + "type": [ + "number", + "null" + ] + }, + "singleSource": { + "type": "boolean" + } +} - added
Output schema / properties / cities / items / properties / provenance / requiredAdded value: +[ + "publishers", + "agencies", + "maxAgencyShare", + "singleSource" +]
- Changed
list_locations3 fields changed- changed
Input schema / properties / city / descriptionPrevious 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)." - removed
Input schema / properties / city / enumRemoved value: -[ - "girne", - "iskele", - "lefkosa", - "gazimagusa", - "guzelyurt", - "lefke" -] - added
Output schema / properties / truncatedAdded value: +{ + "type": "boolean" +}
- Changed
payment_plan4 fields changed- added
Output schema / properties / amounts / propertiesAdded value: +{ + "EUR": { + "type": "number" + }, + "GBP": { + "type": "number" + }, + "TRY": { + "type": "number" + }, + "USD": { + "type": "number" + } +} - added
Output schema / properties / amounts / requiredAdded value: +[ + "GBP", + "EUR", + "USD", + "TRY" +] - added
Output schema / properties / fx / propertiesAdded 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" + } +} - added
Output schema / properties / fx / requiredAdded value: +[ + "base", + "source", + "asOf", + "rates" +]
- Changed
search7 fields changed- added
Output schema / properties / appliedFilters / additionalPropertiesAdded value: +false - added
Output schema / properties / appliedFilters / propertiesAdded 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" + } +} - added
Output schema / properties / fxRates / propertiesAdded 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" + ] + } +} - added
Output schema / properties / fxRates / requiredAdded value: +[ + "base", + "rates", + "source", + "updatedAt", + "isFallback" +] - added
Output schema / properties / listings / items / requiredAdded value: +[ + "id", + "title", + "city", + "district", + "price", + "priceGbp", + "currency", + "type", + "url" +] - added
Output schema / properties / nearbyAlternatives / properties / listings / items / propertiesAdded 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" + } +} - added
Output schema / properties / nearbyAlternatives / properties / listings / items / requiredAdded value: +[ + "id", + "title", + "city", + "district", + "price", + "priceGbp", + "currency", + "type", + "url" +]
- Changed
search_listings7 fields changed- changed
Input schema / properties / city / descriptionPrevious value: -"City to filter"New value: +"Slug, Turkish name, or exonym (Kyrenia/Nicosia/Famagusta/Morphou)." - removed
Input schema / properties / city / enumRemoved value: -[ - "girne", - "iskele", - "lefkosa", - "gazimagusa", - "guzelyurt", - "lefke" -] - changed
Input schema / properties / district / descriptionPrevious 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" - added
Output schema / properties / appliedFilters / additionalPropertiesAdded value: +false - added
Output schema / properties / appliedFilters / propertiesAdded 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" + } +} - added
Output schema / properties / fxRates / propertiesAdded 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" + ] + } +} - added
Output schema / properties / fxRates / requiredAdded value: +[ + "base", + "rates", + "source", + "updatedAt", + "isFallback" +]
12 tool updates
- Changed
compare_cities4 fields changed- added
Output schema / properties / cities / itemsAdded 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" +} - added
Output schema / properties / dataAsOfAdded value: +{ + "type": [ + "string", + "null" + ] +} - removed
Output schema / properties / generatedAtRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "type", - "cities" -]New value: +[ + "type", + "dataAsOf", + "cities" +]
- Changed
compare_properties1 field changed- added
Output schema / properties / listings / itemsAdded 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" +}
- Added
convert_currency - Changed
get_district_profile6 fields changed- added
Output schema / properties / cleanSampleTotalAdded value: +{ + "description": "sale.count + rent.count — clean sample size (IQR outliers excluded), not raw active listings", + "type": "number" +} - added
Output schema / properties / dataAsOfAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / rent / propertiesAdded 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" + ] + } +} - added
Output schema / properties / sale / propertiesAdded 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" + ] + } +} - removed
Output schema / properties / totalActiveRemoved value: -{ - "type": "number" -} - changed
Output schema / requiredPrevious value: -[ - "city", - "district", - "totalActive" -]New value: +[ + "city", + "district", + "cleanSampleTotal" +]
- Changed
get_listing_by_number2 fields changed- added
Output schema / properties / fxRatesAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / monthlyRentGbpAdded value: +{ + "type": [ + "number", + "null" + ] +}
- Changed
get_listing_detail2 fields changed- added
Output schema / properties / fxRatesAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / monthlyRentGbpAdded value: +{ + "type": [ + "number", + "null" + ] +}
- Changed
get_price_index4 fields changed- added
Output schema / properties / cities / itemsAdded 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" +} - added
Output schema / properties / dataAsOfAdded value: +{ + "type": [ + "string", + "null" + ] +} - removed
Output schema / properties / generatedAtRemoved value: -{ - "type": [ - "string", - "null" - ] -} - changed
Output schema / requiredPrevious value: -[ - "type", - "cities" -]New value: +[ + "type", + "dataAsOf", + "cities" +]
- Removed
get_yield_estimate - Changed
search5 fields changed- added
Output schema / properties / criteriaAdded 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" +} - added
Output schema / properties / listings / items / properties / locationPrecisionAdded value: +{ + "enum": [ + "exact", + "district", + "city" + ], + "type": "string" +} - added
Output schema / properties / listings / items / properties / monthlyRentGbpAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / listings / items / properties / propertyTypeAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / nearbyAlternativesAdded value: +{ + "properties": { + "listings": { + "items": { + "type": "object" + }, + "type": "array" + }, + "relaxed": { + "enum": [ + "district", + "maxPrice" + ], + "type": "string" + } + }, + "required": [ + "relaxed", + "listings" + ], + "type": [ + "object", + "null" + ] +}
- Changed
search_listings15 fields changed- added
Input schema / properties / districtAdded value: +{ + "description": "District name (e.g. Alsancak), case-insensitive", + "type": "string" +} - added
Input schema / properties / elevatorAdded value: +{ + "description": "Only listings with an elevator", + "type": "boolean" +} - added
Input schema / properties / furnishedAdded value: +{ + "description": "Only furnished listings", + "type": "boolean" +} - added
Input schema / properties / gardenAdded value: +{ + "description": "Only listings with a garden", + "type": "boolean" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "Rows to skip (pagination, default 0)", + "minimum": 0, + "type": "number" +} - added
Input schema / properties / parkingAdded value: +{ + "description": "Only listings with parking", + "type": "boolean" +} - added
Input schema / properties / poolAdded value: +{ + "description": "Only listings with a pool", + "type": "boolean" +} - changed
Input schema / properties / propertyType / descriptionPrevious value: -"Property type filter"New value: +"Raw property type (apartment, villa, …) or K75 group slug: house (villa+detached+bungalow), land, commercial" - changed
Input schema / properties / propertyType / enumPrevious 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" +] - added
Input schema / properties / seaViewAdded value: +{ + "description": "Only listings flagged sea_view", + "type": "boolean" +} - added
Output schema / properties / fxRatesAdded value: +{ + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / listings / items / properties / monthlyRentGbpAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / offsetAdded value: +{ + "type": "number" +} - added
Output schema / properties / rankingAdded value: +{ + "properties": { + "of": { + "type": "number" + }, + "pooled": { + "type": "number" + }, + "scope": { + "enum": [ + "complete", + "partial" + ], + "type": "string" + } + }, + "required": [ + "scope", + "pooled", + "of" + ], + "type": [ + "object", + "null" + ] +} - changed
Output schema / requiredPrevious value: -[ - "count", - "totalMatched", - "sortApplied", - "listings", - "appliedFilters" -]New value: +[ + "count", + "totalMatched", + "offset", + "sortApplied", + "listings", + "appliedFilters" +]
- Removed
student_housing - Removed
suggest_neighborhood
3 tool updates
- Changed
get_listing_by_number1 field changed- added
Output schema / properties / locationPrecisionAdded value: +{ + "enum": [ + "exact", + "district", + "city" + ], + "type": "string" +}
- Changed
get_listing_detail1 field changed- added
Output schema / properties / locationPrecisionAdded value: +{ + "enum": [ + "exact", + "district", + "city" + ], + "type": "string" +}
- Changed
search_listings1 field changed- added
Output schema / properties / listings / items / properties / locationPrecisionAdded value: +{ + "enum": [ + "exact", + "district", + "city" + ], + "type": "string" +}
1 tool update
- Changed
search_listings1 field changed- changed
Input schema / properties / propertyType / enumPrevious 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" +]
13 tool updates
- Changed
compare_cities3 fields changed- added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / metricTypeAdded value: +{ + "type": "string" +}
- Changed
compare_properties3 fields changed- added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / metricTypeAdded value: +{ + "type": "string" +}
- Changed
get_district_profile8 fields changed- added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - removed
Output schema / properties / grossYieldPctRemoved value: -{ - "type": [ - "number", - "null" - ] -} - added
Output schema / properties / indicativeGrossRentToPricePctAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / isObservedYieldAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / metricTypeAdded value: +{ + "type": "string" +} - added
Output schema / properties / personaContextsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Output schema / properties / personasRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - added
Output schema / properties / yieldMetricTypeAdded value: +{ + "type": "string" +}
- Changed
get_listing_by_number6 fields changed- removed
Output schema / properties / dataQualityRemoved value: -{ - "properties": { - "priceOutlier": { - "type": "boolean" - } - }, - "type": "object" -} - added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / factTypeAdded value: +{ + "type": "string" +} - removed
Output schema / properties / fxRatesRemoved value: -{ - "properties": { - "base": { - "type": "string" - }, - "isFallback": { - "type": "boolean" - }, - "rates": { - "type": "object" - }, - "source": { - "type": "string" - }, - "updatedAt": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / virtualStaging / properties / items / items / properties / provenanceAdded 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" +}
- Changed
get_listing_detail6 fields changed- removed
Output schema / properties / dataQualityRemoved value: -{ - "properties": { - "priceOutlier": { - "type": "boolean" - } - }, - "type": "object" -} - added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / factTypeAdded value: +{ + "type": "string" +} - removed
Output schema / properties / fxRatesRemoved value: -{ - "properties": { - "base": { - "type": "string" - }, - "isFallback": { - "type": "boolean" - }, - "rates": { - "type": "object" - }, - "source": { - "type": "string" - }, - "updatedAt": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / virtualStaging / properties / items / items / properties / provenanceAdded 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" +}
- Removed
get_market_overview - Changed
get_price_index3 fields changed- added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / metricTypeAdded value: +{ + "type": "string" +}
- Changed
get_yield_estimate15 fields changed- added
Input schema / properties / annualOperatingCostsGBPAdded value: +{ + "description": "User-supplied annual operating-cost assumption in GBP", + "maximum": 10000000, + "minimum": 0, + "type": "number" +} - removed
Input schema / properties / bedroomsRemoved value: -{ - "description": "Bedroom count (integer 0-10)", - "maximum": 10, - "minimum": 0, - "type": "number" -} - added
Input schema / properties / monthlyRentGBPAdded value: +{ + "description": "User-supplied monthly long-term rent assumption in GBP", + "maximum": 1000000, + "minimum": 1, + "type": "number" +} - added
Input schema / properties / occupiedMonthsAdded value: +{ + "description": "User-supplied number of occupied and paid months in the 12-month scenario period", + "maximum": 12, + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / purchasePriceRemoved value: -{ - "description": "Purchase price in GBP", - "maximum": 10000000, - "minimum": 10000, - "type": "number" -} - added
Input schema / properties / purchasePriceGBPAdded value: +{ + "description": "User-supplied purchase price in GBP", + "maximum": 10000000, + "minimum": 10000, + "type": "number" +} - changed
Input schema / requiredPrevious value: -[ - "city", - "purchasePrice" -]New value: +[ + "purchasePriceGBP", + "monthlyRentGBP", + "annualOperatingCostsGBP", + "occupiedMonths" +] - added
Output schema / properties / assumptionsAdded value: +{ + "type": "object" +} - changed
Output schema / properties / breakevenYears / typePrevious value: -"number"New value: +[ + "number", + "null" +] - changed
Output schema / properties / city / typePrevious value: -"string"New value: +[ + "string", + "null" +] - removed
Output schema / properties / cityBenchmarkRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / dataSource / descriptionRemoved value: -"modelled — not derived from live rental listings" - added
Output schema / properties / estimateTypeAdded value: +{ + "type": "string" +} - added
Output schema / properties / occupiedMonthsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / usesLiveListingDataAdded value: +{ + "type": "boolean" +}
- Changed
list_locations2 fields changed- added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +}
- Changed
payment_plan6 fields changed- removed
Input schema / properties / offPlanRemoved value: -{ - "description": "True if off-plan (under construction).", - "type": "boolean" -} - changed
Input schema / properties / price / descriptionPrevious value: -"Property price."New value: +"Entered property asking-price amount; not a deposit or installment." - added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - removed
Output schema / properties / offPlanRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / usesStoredRateAdded value: +{ + "type": "boolean" +} - removed
Output schema / properties / warningsRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
search_listings5 fields changed- changed
Input schema / properties / type / enumPrevious value: -[ - "sale", - "rent", - "daily" -]New value: +[ + "sale", + "rent" +] - added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / factTypeAdded value: +{ + "type": "string" +} - removed
Output schema / properties / fxRatesRemoved value: -{ - "properties": { - "base": { - "type": "string" - }, - "isFallback": { - "type": "boolean" - }, - "rates": { - "type": "object" - }, - "source": { - "type": "string" - }, - "updatedAt": { - "type": [ - "string", - "null" - ] - } - }, - "type": "object" -} - added
Output schema / properties / isEstimateAdded value: +{ + "type": "boolean" +}
- Changed
student_housing16 fields changed- removed
Input schema / properties / bedroomsRemoved value: -{ - "description": "Bedroom count (0=studio).", - "maximum": 10, - "minimum": 0, - "type": "number" -} - added
Input schema / properties / monthlyRentGBPAdded value: +{ + "description": "User-supplied monthly long-term rent assumption in GBP.", + "maximum": 1000000, + "minimum": 1, + "type": "number" +} - added
Input schema / properties / occupiedMonthsAdded value: +{ + "description": "User-supplied number of occupied and paid months in the 12-month scenario period.", + "maximum": 12, + "minimum": 1, + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "university" -]New value: +[ + "university", + "monthlyRentGBP", + "occupiedMonths" +] - removed
Output schema / properties / academicAnnualGBPRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / academicYieldPctRemoved value: -{ - "type": [ - "number", - "null" - ] -} - added
Output schema / properties / assumptionsAdded value: +{ + "type": "object" +} - removed
Output schema / properties / cityBandRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / dataSource / descriptionRemoved value: -"modelled — not derived from live rental listings" - added
Output schema / properties / estimateTypeAdded value: +{ + "type": "string" +} - added
Output schema / properties / grossRentToPricePctAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / modelledGrossRentGBPAdded value: +{ + "type": "number" +} - added
Output schema / properties / occupiedMonthsAdded value: +{ + "type": "integer" +} - added
Output schema / properties / usesLiveListingDataAdded value: +{ + "type": "boolean" +} - removed
Output schema / properties / yearRoundAnnualGBPRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / yearRoundYieldPctRemoved value: -{ - "type": [ - "number", - "null" - ] -}
- Changed
suggest_neighborhood5 fields changed- removed
Input schema / properties / budgetGBPRemoved value: -{ - "maximum": 5000000, - "minimum": 20000, - "type": "number" -} - changed
Input schema / properties / persona / enumPrevious value: -[ - "retiree", - "investor", - "student", - "family", - "digital_nomad", - "vacation" -]New value: +[ + "retiree", + "student", + "family", + "digital_nomad" +] - removed
Output schema / properties / budgetGBPRemoved value: -{ - "type": [ - "number", - "null" - ] -} - added
Output schema / properties / dataSourceAdded value: +{ + "type": "string" +} - added
Output schema / properties / notRecommendationAdded value: +{ + "type": "boolean" +}
15 tool updates
- Changed
compare_cities1 field changed- added
Output schema / requiredAdded value: +[ + "type", + "cities" +]
- Changed
compare_properties1 field changed- added
Output schema / requiredAdded value: +[ + "count", + "listings" +]
- Changed
fetch1 field changed- added
Output schema / requiredAdded value: +[ + "id", + "title", + "text", + "url" +]
- Changed
get_district_profile1 field changed- added
Output schema / requiredAdded value: +[ + "city", + "district", + "totalActive" +]
- Changed
get_listing_by_number6 fields changed- changed
Input schema / properties / listing_number / descriptionPrevious 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." - changed
Input schema / properties / listing_number / typePrevious value: -"string"New value: +[ + "string", + "number" +] - added
Output schema / properties / dataQualityAdded value: +{ + "properties": { + "priceOutlier": { + "type": "boolean" + } + }, + "type": "object" +} - added
Output schema / properties / photosShownAdded value: +{ + "type": "number" +} - added
Output schema / properties / photosTruncatedAdded value: +{ + "type": "number" +} - added
Output schema / requiredAdded value: +[ + "found" +]
- Changed
get_listing_detail4 fields changed- added
Output schema / properties / dataQualityAdded value: +{ + "properties": { + "priceOutlier": { + "type": "boolean" + } + }, + "type": "object" +} - added
Output schema / properties / photosShownAdded value: +{ + "type": "number" +} - added
Output schema / properties / photosTruncatedAdded value: +{ + "type": "number" +} - added
Output schema / requiredAdded value: +[ + "found" +]
- Changed
get_market_overview1 field changed- added
Output schema / requiredAdded value: +[ + "generatedAt", + "totalActiveListings", + "cities" +]
- Changed
get_price_index1 field changed- added
Output schema / requiredAdded value: +[ + "type", + "cities" +]
- Changed
get_yield_estimate1 field changed- added
Output schema / requiredAdded value: +[ + "city", + "purchasePriceGBP", + "monthlyRentGBP", + "grossYieldPct", + "dataSource" +]
- Changed
list_locations1 field changed- added
Output schema / requiredAdded value: +[ + "cities" +]
- Changed
payment_plan1 field changed- added
Output schema / requiredAdded value: +[ + "inputCurrency", + "priceGBP", + "amounts" +]
- Changed
search3 fields changed- added
Output schema / properties / outOfScopeAdded value: +{ + "type": "boolean" +} - added
Output schema / properties / unresolvedAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / requiredAdded value: +[ + "results" +]
- Changed
search_listings7 fields changed- added
Input schema / properties / propertyTypeAdded 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" +} - added
Input schema / properties / sortByAdded value: +{ + "description": "Sort order (default: newest)", + "enum": [ + "newest", + "price_asc", + "price_desc", + "area_desc", + "price_per_sqm_asc" + ], + "type": "string" +} - added
Output schema / properties / listings / items / properties / propertyTypeAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / listings / items / requiredAdded value: +[ + "id", + "title", + "city", + "district", + "price", + "priceGbp", + "currency", + "type", + "url" +] - added
Output schema / properties / sortAppliedAdded value: +{ + "enum": [ + "newest", + "price_asc", + "price_desc", + "area_desc", + "price_per_sqm_asc" + ], + "type": "string" +} - added
Output schema / properties / totalMatchedAdded value: +{ + "type": "number" +} - added
Output schema / requiredAdded value: +[ + "count", + "totalMatched", + "sortApplied", + "listings", + "appliedFilters" +]
- Changed
student_housing1 field changed- added
Output schema / requiredAdded value: +[ + "university", + "city", + "monthlyRentGBP", + "dataSource" +]
- Changed
suggest_neighborhood1 field changed- added
Output schema / requiredAdded value: +[ + "persona", + "suggestions" +]
4 tool updates
- Changed
get_listing_by_number1 field changed- added
Output schema / properties / fxRatesAdded value: +{ + "properties": { + "base": { + "type": "string" + }, + "isFallback": { + "type": "boolean" + }, + "rates": { + "type": "object" + }, + "source": { + "type": "string" + }, + "updatedAt": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
- Changed
get_listing_detail1 field changed- added
Output schema / properties / fxRatesAdded value: +{ + "properties": { + "base": { + "type": "string" + }, + "isFallback": { + "type": "boolean" + }, + "rates": { + "type": "object" + }, + "source": { + "type": "string" + }, + "updatedAt": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
- Changed
search1 field changed- added
Output schema / properties / fxRatesAdded value: +{ + "type": [ + "object", + "null" + ] +}
- Changed
search_listings1 field changed- added
Output schema / properties / fxRatesAdded value: +{ + "properties": { + "base": { + "type": "string" + }, + "isFallback": { + "type": "boolean" + }, + "rates": { + "type": "object" + }, + "source": { + "type": "string" + }, + "updatedAt": { + "type": [ + "string", + "null" + ] + } + }, + "type": "object" +}
2 tool updates
- Changed
search2 fields changed- added
Output schema / properties / appliedFiltersAdded value: +{ + "type": "object" +} - added
Output schema / properties / listingsAdded 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" +}
- Changed
search_listings1 field changed- added
Output schema / properties / appliedFiltersAdded value: +{ + "type": "object" +}
5 tool updates
- Changed
fetch2 fields changed- added
Output schema / properties / coverImageUrlAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / photosAdded value: +{ + "items": { + "properties": { + "caption": { + "type": [ + "string", + "null" + ] + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +}
- Changed
get_listing_by_number1 field changed- added
Output schema / properties / virtualStagingAdded 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" +}
- Changed
get_listing_detail1 field changed- added
Output schema / properties / virtualStagingAdded 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" +}
- Changed
get_market_overview6 fields changed- added
Output schema / properties / citiesAdded value: +{ + "type": "array" +} - added
Output schema / properties / generatedAtAdded value: +{ + "type": "string" +} - removed
Output schema / properties / indexesRemoved value: -{ - "type": "object" -} - removed
Output schema / properties / lastUpdatedRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / sourceRemoved value: -{ - "type": "string" -} - added
Output schema / properties / totalActiveListingsAdded value: +{ + "type": "number" +}
- Changed
search_listings1 field changed- added
Output schema / properties / listings / itemsAdded 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" +}
5 tool updates
- Removed
assess_title_risk - Removed
foreign_buyer_roadmap - Removed
get_legal_info - Changed
get_listing_by_number3 fields changed- removed
Output schema / properties / titleDeedBandRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / titleDeedLabelRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / titleDeedTypeRemoved value: -{ - "type": [ - "string", - "null" - ] -}
- Changed
get_listing_detail3 fields changed- removed
Output schema / properties / titleDeedBandRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / titleDeedLabelRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / titleDeedTypeRemoved value: -{ - "type": [ - "string", - "null" - ] -}
6 tool updates
- Changed
assess_title_risk2 fields changed- changed
Input schema / properties / title_deed_type / descriptionPrevious 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)." - changed
Input schema / properties / title_deed_type / enumPrevious value: -[ - "turk_kocan", - "esdeger_kocan", - "tahsis", - "foreign_title", - "kat_irtifak" -]New value: +[ + "turk_kocan", + "esdeger_kocan", + "tahsis", + "foreign_title", + "kat_irtifak", + "unknown" +]
- Changed
foreign_buyer_roadmap6 fields changed- removed
Output schema / properties / disclaimerRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / legalAuditStatusRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / processRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Output schema / properties / summaryRemoved value: -{ - "type": "string" -} - added
Output schema / properties / topicAdded value: +{ + "type": "string" +} - removed
Output schema / properties / verifyFlagRemoved value: -{ - "type": "boolean" -}
- Added
get_listing_by_number - Changed
get_yield_estimate1 field changed- added
Output schema / properties / dataSourceAdded value: +{ + "description": "modelled — not derived from live rental listings", + "type": "string" +}
- Added
list_locations - Changed
student_housing2 fields changed- changed
Input schema / properties / university / descriptionPrevious 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." - added
Output schema / properties / dataSourceAdded value: +{ + "description": "modelled — not derived from live rental listings", + "type": "string" +}
3 tool updates
- Added
fetch - Changed
get_listing_detail2 fields changed- added
Output schema / properties / listedAtAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / priceGbpAdded value: +{ + "type": [ + "number", + "null" + ] +}
- Added
search
1 tool update
- Changed
get_listing_detail2 fields changed- added
Output schema / properties / coverImageUrlAdded value: +{ + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / photosAdded value: +{ + "items": { + "properties": { + "caption": { + "type": [ + "string", + "null" + ] + }, + "tags": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +}
14 tool updates
- Added
assess_title_risk - Changed
compare_cities1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "cities": { + "type": "array" + }, + "generatedAt": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
compare_properties1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "count": { + "type": "number" + }, + "listings": { + "type": "array" + }, + "missing": { + "type": "number" + } + }, + "type": "object" +}
- Added
foreign_buyer_roadmap - Changed
get_district_profile1 field changed- changed
Output 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" +}
- Changed
get_legal_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "topic": { + "type": "string" + } + }, + "type": "object" +}
- Added
get_listing_detail - Changed
get_market_overview1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "indexes": { + "type": "object" + }, + "investmentHighlights": { + "items": { + "type": "string" + }, + "type": "array" + }, + "lastUpdated": { + "type": "string" + }, + "source": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_price_index1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "cities": { + "type": "array" + }, + "generatedAt": { + "type": [ + "string", + "null" + ] + }, + "totalListings": { + "type": [ + "number", + "null" + ] + }, + "type": { + "type": "string" + } + }, + "type": "object" +}
- Changed
get_yield_estimate1 field changed- changed
Output 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" +}
- Added
payment_plan - Changed
search_listings1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "count": { + "type": "number" + }, + "listings": { + "type": "array" + } + }, + "type": "object" +}
- Added
student_housing - Changed
suggest_neighborhood1 field changed- changed
Output 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
GDPR-clean property listings, rents, price stats, yields and below-market deals. UK, EU.
Japanese court-run real-estate auctions (BIT). 5 tools, ~1,480 active listings. CC BY 4.0.
North Cyprus car rental (Kıbrıs araç kiralama): live availability, prices, company info, booking.
UK property data — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House
Related MCP Servers
- AlicenseAqualityBmaintenanceUK property data MCP server — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House. 13 tools.1316MIT
- AlicenseAqualityBmaintenanceGives 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.5MIT
- AlicenseAqualityAmaintenanceA 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.643Apache 2.0
- AlicenseNot gradedqualityBmaintenanceUK property data MCP server for AI hosts (Claude, ChatGPT). Wraps Land Registry, Rightmove, EPC, rental yields, stamp duty, and Companies House into 13 tools.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.