# Evlek — Northern Cyprus Property MCP Server (remote · evlek.app)

AI-native property MCP for Northern Cyprus (KKTC/TRNC): listings, prices, districts, yields.

- Trust score: 75/100 (medium)
- Change this week: +9
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `evlek.app`: 75/100 (this document), [markdown](https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp.md), [page](https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp)

## Channel facts

- Endpoint: `https://evlek.app/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.9.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1784 tokens (~71/item across 25 items; 15 tools + 10 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 8/100
  - Stability check failed: schema churn in the 8 days we've observed: 3 tool removals, 0 breaking changes, 0 auth/transport breaks, 2 additions.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 80% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http app-evlek-mcp-server https://evlek.app/api/mcp
```

### Codex

```toml
[mcp_servers.app-evlek-mcp-server]
url = "https://evlek.app/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-evlek-mcp-server": {
      "type": "remote",
      "url": "https://evlek.app/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-evlek-mcp-server --url https://evlek.app/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-evlek-mcp-server:
    url: "https://evlek.app/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-evlek-mcp-server": {
      "type": "http",
      "url": "https://evlek.app/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 5 to 8.

### 2026-08-01 (score 74, +1)

- [security regression] Stability: 0.17 → fail
- [security regression] Tool “foreign_buyer_roadmap” was removed
- [security regression] Tool “assess_title_risk” was removed
- [security regression] Tool “get_legal_info” was removed
- [security] Tool “get_listing_detail” rewrote its description, which is the text the model reads
- [functional regression] Prompt “foreign_buyer_guide” was removed
- [functional regression] Prompt “kocan_risk_check” was removed
- [functional regression] Resource “kocan-types” was removed
- [functional improvement] Schema quality: 1936 → 1610
- [functional] First check of Capabilities: pass
- [functional] Schema quality: good → excellent
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server
- [functional] Server version: 1.6.0 → 1.7.0

### 2026-07-31 (score 73, +5)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 66, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 65)

First indexed and scored.

## MCP tools (15)

### `search_listings` (~130 tokens)

Search Northern Cyprus Property Listings

Search live property listings on Evlek. Filter by city, type (sale/rent/daily), bedrooms, and price range. Returns up to 10 matching properties with title, price, location, and direct link.

Input parameters:

- `bedrooms` (number): Bedroom count (integer 0-10)
- `city` (string): City to filter
- `limit` (number): Result count (integer 1-10, default 5)
- `maxPrice` (number): Max price in GBP
- `minPrice` (number): Min price in GBP
- `type` (string): Listing type

Output parameters:

- `appliedFilters` (object)
- `count` (number)
- `fxRates` (object)
- `listings` (array)

### `get_price_index` (~71 tokens)

Get Northern Cyprus Price Index

Returns the live Evlek Price Index: aggregated average, median, min, max prices per city and top districts. Based on all active listings on evlek.app. Useful for market analysis and investment decisions.

Input parameters:

- `city` (string)
- `type` (string): Sale or rent (default: sale)

Output parameters:

- `cities` (array)
- `generatedAt` (string|null)
- `totalListings` (number|null)
- `type` (string)

### `get_market_overview` (~75 tokens)

Get Northern Cyprus Market Overview

Returns a live, high-level market overview for Northern Cyprus property: active listing counts and average/median sale & rent prices per city (same live data as get_price_index/compare_cities), estimated gross rental yield where sample size allows, and investment-tool routing. Coverage grows automatically as more listings are added to Evlek.

Output parameters:

- `cities` (array)
- `generatedAt` (string)
- `investmentHighlights` (array)
- `totalActiveListings` (number)

### `compare_cities` (~74 tokens)

Compare Northern Cyprus Cities Side-by-Side

Compare 2-4 Northern Cyprus cities side-by-side with aggregated prices (avg, median, min, max), listing counts, and top districts. Useful for deciding between investment locations.

Input parameters:

- `cities` (array, required): Cities to compare (2-4)
- `type` (string): Sale or rent (default: sale)

Output parameters:

- `cities` (array)
- `generatedAt` (string)
- `type` (string)

### `get_yield_estimate` (~74 tokens)

Estimate Rental Yield for a Northern Cyprus Property

Calculate estimated gross and net annual rental yield for a property given its purchase price and city. Returns breakeven years and comparison to city averages.

Input parameters:

- `bedrooms` (number): Bedroom count (integer 0-10)
- `city` (string, required)
- `purchasePrice` (number, required): Purchase price in GBP

Output parameters:

- `breakevenYears` (number)
- `city` (string)
- `cityBenchmark` (string|null)
- `dataSource` (string): modelled — not derived from live rental listings
- `grossAnnualGBP` (number)
- `grossYieldPct` (number)
- `monthlyRentGBP` (number)
- `netAnnualGBP` (number)
- `netYieldPct` (number)
- `purchasePriceGBP` (number)

### `suggest_neighborhood` (~81 tokens)

Suggest Best Northern Cyprus Neighborhoods for a Buyer Persona

Given a buyer persona (retiree, investor, student, family, digital_nomad, vacation) and optional budget/preferences, return 2-3 best-matched neighborhoods with rationale. Based on Evlek expert knowledge of KKTC regional characteristics.

Input parameters:

- `budgetGBP` (number)
- `persona` (string, required)
- `preferences` (array)

Output parameters:

- `budgetGBP` (number|null)
- `persona` (string)
- `preferences` (array)
- `suggestions` (array)

### `compare_properties` (~84 tokens)

Compare Evlek Property Listings Side-by-Side

Compare 2-4 active Evlek property listings side-by-side. Returns price, area, bedrooms, price-per-m², location for each, plus an automatic value insight (cheapest £/m², largest area, same-city grouping). Pass UUIDs from search_listings results.

Input parameters:

- `listing_ids` (array, required): Evlek listing UUIDs (2-4)

Output parameters:

- `count` (number)
- `listings` (array)
- `missing` (number)

### `get_district_profile` (~101 tokens)

Get 360° Profile for a Northern Cyprus District

Returns a comprehensive profile for a single district: active listing counts (sale & rent), average/median prices, £/m², bedroom breakdown, estimated gross yield (rent/sale ratio), and matching buyer personas (retiree, investor, student, family, digital_nomad, vacation). Use after compare_cities narrows the city.

Input parameters:

- `city` (string, required)
- `district` (string, required): District name (2-60 chars)

Output parameters:

- `city` (string)
- `district` (string)
- `grossYieldPct` (number|null)
- `personas` (array)
- `rent` (object|null)
- `sale` (object|null)
- `totalActive` (number)

### `student_housing` (~122 tokens)

Student-Housing Rental Outlook near a KKTC University

Given a Northern Cyprus university (resolved from the live Evlek roster), estimate student-rental monthly rent and academic-year (9-month) vs year-round (12-month) gross income/yield, with the city yield band and a link to nearby listings. Estimates only — not financial advice.

Input parameters:

- `bedrooms` (number): Bedroom count (0=studio).
- `purchasePrice` (number): Optional purchase price in GBP (enables yield).
- `university` (string, required): University name, short code, or known alias, matched against the canonical Evlek university catalog.

Output parameters:

- `academicAnnualGBP` (number)
- `academicYieldPct` (number|null)
- `city` (string)
- `cityBand` (string|null)
- `dataSource` (string): modelled — not derived from live rental listings
- `monthlyRentGBP` (number)
- `university` (string)
- `yearRoundAnnualGBP` (number)
- `yearRoundYieldPct` (number|null)

### `payment_plan` (~98 tokens)

KKTC Property Payment & Currency Breakdown

Convert a Northern Cyprus property price across GBP/EUR/USD/TRY using live, date-stamped exchange rates (base GBP), and surface off-plan staged-payment risk warnings. General information only — confirm escrow, milestones and title transfer with an independent KKTC lawyer.

Input parameters:

- `currency` (string): Currency of the price (default GBP).
- `offPlan` (boolean): True if off-plan (under construction).
- `price` (number, required): Property price.

Output parameters:

- `amounts` (object)
- `fx` (object)
- `inputCurrency` (string)
- `offPlan` (boolean)
- `priceGBP` (number)
- `warnings` (array)

### `get_listing_detail` (~90 tokens)

Get Full Detail for a Single Evlek Listing

Return a 360° profile of one active Evlek listing by UUID: title, description, price, location, size, amenities, features, cover image, per-photo captions/tags, and AI virtual-staging before/after pairs where available (always AI-disclosed). Contact details are intentionally omitted. Pass a UUID from search_listings.

Input parameters:

- `property_id` (string, required): Evlek listing UUID

Output parameters:

- `amenities` (array)
- `areaSqm` (number|null)
- `bathrooms` (number|null)
- `bedrooms` (number|null)
- `city` (string)
- `coverImageUrl` (string|null)
- `currency` (string)
- `district` (string|null)
- `features` (array)
- `found` (boolean)
- `furnished` (boolean|null)
- `fxRates` (object)
- `id` (string)
- `listedAt` (string|null)
- `listingNumber` (number|null)
- `photoCount` (number)
- `photos` (array)
- `price` (number)
- `priceGbp` (number|null)
- `pricePerSqmGBP` (number|null)
- `title` (string)
- `type` (string)
- `url` (string)
- `virtualStaging` (object)

### `search` (~107 tokens)

Search Evlek property listings

Search live Northern Cyprus (KKTC/TRNC) property listings on Evlek with a free-text query (city, sale/rent, bedrooms). Returns matching listings as id/title/url for the fetch tool. Read-only; no contact details. Same underlying data as search_listings — this fixed single-query-string form exists for the ChatGPT/OpenAI connector contract; prefer search_listings directly for structured filters (price range, exact bedroom count).

Input parameters:

- `query` (string, required): Free-text property search query

Output parameters:

- `appliedFilters` (object)
- `fxRates` (object|null)
- `listings` (array)
- `results` (array)

### `fetch` (~93 tokens)

Fetch full Evlek listing detail

Fetch the full detail of one Evlek listing by id (from search): title, description, GBP-normalized price, location, size, amenities. Read-only; contact details intentionally omitted. Same underlying data as get_listing_detail — this fixed id-only form exists for the ChatGPT/OpenAI connector contract; prefer get_listing_detail directly outside that connector.

Input parameters:

- `id` (string, required): Evlek listing id (UUID) from search

Output parameters:

- `coverImageUrl` (string|null)
- `id` (string)
- `metadata` (object)
- `photos` (array)
- `text` (string)
- `title` (string)
- `url` (string)

### `list_locations` (~78 tokens)

List Valid Evlek Cities and Districts

Return the canonical list of valid KKTC city slugs plus the districts that currently have active Evlek listings. Call this first when unsure about exact city/district spelling — search_listings, compare_cities, and get_district_profile all reject unrecognized city values.

Input parameters:

- `city` (string): Optional — limit districts to a single city slug.

Output parameters:

- `cities` (array)

### `get_listing_by_number` (~96 tokens)

Get Evlek Listing by Number

Look up a single Evlek listing by its public listing number (e.g. "EVL-123456" or "123456") and return its full detail — same shape as get_listing_detail. Use this when a listing number is known (site/card reference) instead of a UUID.

Input parameters:

- `listing_number` (string, required): Evlek listing number, e.g. "EVL-123456" or "123456".

Output parameters:

- `amenities` (array)
- `areaSqm` (number|null)
- `bathrooms` (number|null)
- `bedrooms` (number|null)
- `city` (string)
- `coverImageUrl` (string|null)
- `currency` (string)
- `district` (string|null)
- `features` (array)
- `found` (boolean)
- `furnished` (boolean|null)
- `fxRates` (object)
- `id` (string)
- `listedAt` (string|null)
- `listingNumber` (number|null)
- `photoCount` (number)
- `photos` (array)
- `price` (number)
- `priceGbp` (number|null)
- `pricePerSqmGBP` (number|null)
- `title` (string)
- `type` (string)
- `url` (string)
- `virtualStaging` (object)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp#diagnostics

## Score history

- 2026-08-03: 75
- 2026-08-02: 74
- 2026-08-01: 74
- 2026-07-31: 73
- 2026-07-30: 68
- 2026-07-29: 67
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 65

## Links

- Remote endpoint: https://evlek.app/api/mcp
- Repository: https://github.com/Evlek/evlek-mcp
- Website: https://evlek.app/mcp
- Changelog RSS feed: https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-evlek-mcp-server/api-mcp
