Evlek — Northern Cyprus Property MCP Server
OfficialThis read-only Evlek MCP server lets an AI client search and inspect Northern Cyprus property listings, compare properties/cities, view asking-price statistics, list locations, and convert currencies; it offers no write actions.
Search live sale and long-term-rent listings with filters for city, district, type, price, bedrooms, property type, amenities (pool, garden, parking, sea view, elevator, furnished), sorting, and pagination.
Run free-text listing search and fetch listings by id for OpenAI/ChatGPT-style search/fetch workflows.
Get full listing details by UUID or listing number, including price, location, size/rooms, amenities, features, photos, virtual-staging disclosures, and canonical URL; contact details are omitted.
Compare 2–4 properties side by side or compare 2–4 cities by asking-price aggregates.
Get city price indexes and district profiles with active-listing counts, medians/quartiles, price per m², sample/provenance flags, and sale-vs-rent splits.
List valid cities and districts that currently have active listings.
Convert amounts among GBP, EUR, USD, and TRY using stored daily FX rates;
payment_planis currently only a currency-conversion placeholder.All tools are read-only and descriptive only: no valuation, forecast, ranking, recommendation, or legal/title-deed advice.
Exposes OpenAI-compatible search and fetch tools for property data, enabling integration with ChatGPT and other OpenAI-based agents.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Evlek MCP Server
Evlek is the Northern Cyprus property portal: Northern Cyprus property listings for sale and long-term rent, an asking-price index by city and district, and this MCP server (see the MCP documentation).
AI-native property discovery for North Cyprus (KKTC). Built on the Model Context Protocol — works in Claude, ChatGPT, Gemini, Cursor, and any MCP-compatible client.
Evlek MCP gives AI assistants read-only access to live Northern Cyprus (KKTC/TRNC) property listings for sale and long-term rent, plus asking-price statistics, in TR, EN, RU, DE and AR. 8 tools, no auth, hosted at https://evlek.app/api/mcp. Asking prices only: no valuations, yield estimates, legal or investment advice.
License scope
This repository is MIT-licensed for the public manifest, documentation, examples, and reference clients contained here. The hosted Evlek service, evlek.app web app, mobile apps, listing database, AI prompts, business logic, brand assets, name, logo, and trade dress remain proprietary and are not licensed under MIT. See LICENSE for details.
Related MCP server: UK Property Intelligence
Why Evlek MCP
AI-first. Built for agentic workflows from day one — not retrofitted on a legacy listing API.
Multilingual. Answers in TR, EN, RU, DE, AR: pass
locale(or write thesearchquery in that language) and the text, amenity names, number formats and links follow it. Place names are resolved in any of the five languages.Verification-aware listings. Evlek surfaces listing and account verification context where available, and the MCP omits contact fields to preserve Evlek's reveal/contact funnel.
Built for the region. Optimized for the 6 cities of North Cyprus (Lefkoşa, Girne, Gazimağusa, İskele, Güzelyurt, Lefke) and 100+ districts.
Production-grade. OWASP MCP Top 10 aligned — Zod input validation, output sanitization, rate limiting (60/min/IP, 500/min global), Sentry observability.
Add Evlek to ChatGPT, Claude or your MCP client
The server URL is https://evlek.app/api/mcp. No sign-in, no API key.
ChatGPT
Evlek is in the ChatGPT app directory:
ChatGPT → Apps → search for "Evlek" → Connect.
In a chat, pick Evlek from the tools menu and ask, for example, "2-bedroom flats for rent in Girne".
To add it by hand instead: Settings → Apps & Connectors → Advanced settings → developer mode on, then Create with the URL https://evlek.app/api/mcp (no authentication).
Claude (web and desktop)
Settings → Connectors → Add custom connector.
Name:
Evlek. URL:https://evlek.app/api/mcp.In a chat, turn Evlek on from the tools menu.
Claude Code
claude mcp add --transport http evlek https://evlek.app/api/mcpGemini CLI
gemini extensions install https://github.com/Evlek/evlek-mcpThe extension (gemini-extension.json) points Gemini CLI at https://evlek.app/api/mcp.
Cline
Ask Cline to install the server from this repository; it follows llms-install.md (remote URL, no
API key).
MCP Registry
Evlek is in the official MCP Registry as app.evlek/mcp-server
(registry entry).
Clients that install from the registry find it under that name; the entry points at the same URL.
More options (Cursor, VS Code, stdio) are under Quick start and on the MCP documentation page.
Quick start
Remote-capable clients (preferred)
Most modern MCP clients (Claude, Cursor, VS Code) connect directly to the Streamable HTTP endpoint — no local bridge needed:
{
"mcpServers": {
"evlek": {
"url": "https://evlek.app/api/mcp"
}
}
}ChatGPT (connector + Deep Research)
Add https://evlek.app/api/mcp as a custom connector. Evlek exposes OpenAI-compatible search and fetch tools, so it works in ChatGPT connectors and Deep Research in addition to developer mode.
Claude Desktop (legacy stdio bridge)
If your client only supports stdio servers, use the pinned mcp-remote bridge. Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"evlek": {
"command": "npx",
"args": ["-y", "mcp-remote@0.1.16", "https://evlek.app/api/mcp"]
}
}
}Restart Claude Desktop. The "evlek" server appears in the tools list.
MCP Inspector (test before installing)
npx @modelcontextprotocol/inspector https://evlek.app/api/mcpDirect API (cURL)
curl -X POST https://evlek.app/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'More configs: examples/
Local stdio server (this repository)
This repo is also a runnable MCP server. It answers initialize / tools/list entirely locally from the embedded tool contract (tools.json) and fetches live data from the Evlek data API when a tool is called. It only implements tools — it does not declare the resources or prompts capability, so resources/list and prompts/list return a normal MCP "method not found" error on this bridge; those primitives (see below) are hosted-endpoint-only, reachable via the Streamable HTTP URL above. It also speaks whatever MCP protocol version the pinned @modelcontextprotocol/sdk supports during initialize (currently 2025-11-25), not necessarily the hosted endpoint's 2026-07-28 — tool schemas are identical either way.
npx github:Evlek/evlek-mcp # or: npm install && npm start{
"mcpServers": {
"evlek": {
"command": "npx",
"args": ["-y", "github:Evlek/evlek-mcp"]
}
}
}Smoke-test it (spawns the server and speaks real MCP over stdio):
npm test # live: initialize + tools/list + a real tools/call
OFFLINE=1 npm test # offline: introspection works with zero networkAvailable tools
8 tools · protocol 2026-07-28 · Streamable HTTP JSON-RPC 2.0
Tool | Title | Description |
| Search Northern Cyprus property listings | Use this when the user wants to find or see property listings; results are shown with real photos in the Evlek widget. Search live Evlek property listings for sale and long-term rent in Northern Cyprus (KKTC/TRNC; prices in GBP unless a currency is given; 2+1 means bedrooms 2) with structured filters: transaction, city, district, property type, bedrooms, price, areas, amenities, nearby university. Pass the user's language as |
| Search Evlek property listings | For research and citation lookups (deep research): free-text search of live Northern Cyprus (KKTC/TRNC) property listings on Evlek, in Turkish, English, Russian, German or Arabic. Returns matching listings as id/title/url, newest first (sale and rent as two groups when the query names neither). The answer language follows the language of the query. OpenAI deep-research compatible format, for research and citation clients. Use when: the caller only has a free-text query ("2+1 apartment in Kyrenia under 150000 pounds", "EVL-100464"). Not for: structured filters, paging or choosing the answer language. |
| Fetch full Evlek listing detail | Fetch the full detail of one Evlek listing: title, price, location, rooms, areas, amenities, data-quality notes and the canonical link. The id is the listing id (UUID) from a search result, a listing number such as EVL-100464, or an evlek.app listing link; the answer language follows the link (English otherwise). A listing that is not available (it does not exist, is not public, or was removed) always gets the same answer. OpenAI deep-research compatible format, for research and citation clients. Use when: a listing id from a search result is known. Not for: discovering listings or choosing the answer language. |
| Get an Evlek listing | Get the full details of ONE public Evlek listing (sale or long-term rent) in the user's language. |
| Compare Evlek listings | Compare 2 to 4 public Evlek listings side by side in the user's language: price, price per m² (only when the built area is believable), rooms, bathrooms, built area and plot area (always separate), location, furnishing, key features and data-quality notes, plus a few descriptive highlights (lowest price, largest indoor area, most recently listed). |
| Northern Cyprus market statistics | Market statistics for Northern Cyprus from asking prices of active public listings (not sales, valuations or forecasts). No city = the island by city; one city = its districts; several = side by side; city + district = a district profile. Sale and rent are reported separately. Each figure has activeCount (public listings in scope) and sampleCount (the cleaned sample behind the statistic); below 10 sampled listings it is withheld. Pass locale. |
| List Evlek locations | List the places Evlek knows in Northern Cyprus (6 cities, districts, villages, sub-areas, landmarks, the Karpaz region) with their public sale and long-term rent listing counts. Call it first when unsure how a place is spelled: every name and id returned is accepted as place input. Pass |
| Currency conversion (GBP/EUR/USD/TRY) | Converts an amount between GBP, EUR, USD and TRY with the exchange rates Evlek stores (refreshed daily) and returns all four equivalents. Currency conversion only: no payment plan, deposit or instalment schedule, tax, fee or acquisition-cost estimate, no advice. Rates older than 24 hours are flagged as stale; beyond 72 hours (or when none are stored) no conversion is produced (FX_UNAVAILABLE). |
Every tool declares annotations: { readOnlyHint: true, destructiveHint: false, openWorldHint: false } — the whole surface is read-only.
Interactive widgets (MCP Apps / SEP-1865)
Five tools additionally bind a sandboxed HTML view (_meta.ui.resourceUri) that
MCP Apps-capable hosts (Claude web/desktop) render inline in the conversation:
Tool | Widget | What you get |
|
| Listing cards (cover photo, price, location); opening one shows the listing detail view; in ChatGPT, "Show on map" opens a full-screen map of every match |
|
| Photo gallery, spec sheet, and AI virtual-staging before/after (always AI-disclosed) |
|
| Asking-price statistics per city / district |
compare_listings, list_locations and convert_currency have no widget. The
widget URIs moved from -v2 to -v3 in 3.0.0 so a host never serves a cached
v2 template against v3 data. 3.0.1 moved them to -v3-1, 3.0.2 to -v3-2, 3.0.3 to -v3-3 and 3.1.0 to -v3-4
(cards and detail then -v3-5); 3.1.4 served cards -v3-11, detail -v3-8 and price index -v3-6; 3.2.1 served cards -v3-13, detail -v3-10 and price index -v3-8; 3.2.2 serves cards -v3-14, detail -v3-11 and price index -v3-9. The older v3 URIs keep
answering with the current content. Rule since 3.1.0: a widget's
content never changes under a URI it was published with (a host caches a template by URI), so a changed widget gets a new URI.
In ChatGPT (3.0.2, search since 3.0.3) the listing data reaches the widget through the result _meta["evlek/widget"],
which ChatGPT shows only to the widget; for search_listings and get_listing the model gets a short summary (counts, price range,
listing numbers). Other clients get the full structuredContent as before.
Views are static, self-contained HTML — no bundler, no third-party JS. Listing
data reaches them only at runtime over postMessage and is written with
textContent, never innerHTML. CSP is declared per resource
(_meta.ui.csp) and limited to the public listing-photo origin.
See TOOLS.md for full input schemas, parameter details, and response examples.
Resources (12) & resource templates (2)
resources/list returns 12 resources on the hosted endpoint — 9 read-only evlek:// data resources plus the 3 ui:// interactive-widget resources described above (pre-declared so a host can pre-cache them). Parameterized templates are separate, via resources/templates/list:
Templates (2):
evlek://price-index/{city}·evlek://district/{city}/{district}Data resources (9): per-city price indexes (girne, iskele, lefkosa, gazimagusa, guzelyurt, lefke), a sample district profile (Girne/Alsancak), and 2 orientation guides —
evlek://guides/neighborhood-personas,evlek://guides/universities.Widget resources (3):
ui://evlek/listing-cards-v3-14.html,ui://evlek/listing-detail-v3-11.html,ui://evlek/price-index-v3-9.html— see "Interactive widgets" above.
Renamed tools in 3.0.0 (deprecated aliases)
3.0.0 consolidates the 12 v2 tools into 8. The old names below are not in
tools/list any more, but the hosted endpoint still answers them for one
release: the call is translated to the new tool, runs it, and the result starts
with a Deprecated: … Use <new> instead. line (plus
structuredContent.deprecated). The aliases are removed in 3.1.0 — switch
to the new names now.
Old name (v2) | New name (3.0.0) | Argument change |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Unchanged names: search_listings, search, fetch, list_locations,
convert_currency. search_listings, list_locations and convert_currency
gained new parameters and canonical names (e.g. transaction, priceMin/priceMax,
sort, cursor, amount, locale) — see TOOLS.md. The v2 names
type, maxPrice and price are still accepted on the hosted endpoint.
Tools removed in 2.0.0 and earlier (get_yield_estimate, suggest_neighborhood,
student_housing, get_market_overview, get_legal_info) still return a
protocol error naming the replacement, not an alias.
Prompts (2)
property_scenario— Illustrative Property Scenario with Separate Live Factsstudent_rental_scenario— Illustrative Student-Rental Scenario
Example prompts
"Find 2-bedroom flats for rent in Girne under £1,500/month."
"Show me apartments in Girne under £150,000."
"What's the median sale price per square meter in Lefkoşa?"
"Compare Kyrenia and Famagusta — which has more active listings and how do median asking prices differ?"
"What does a district profile for Alsancak look like?"
"Convert £150,000 to EUR, USD, and TRY."
Coverage
Cities: 6 (Girne, İskele, Lefkoşa, Gazimağusa, Güzelyurt, Lefke)
Districts: 100+
Currency: GBP primary; TRY/USD/EUR normalized to GBP server-side using live daily exchange rates
Tool descriptions: EN · Answers: TR · EN · RU · DE · AR (
locale)
Architecture
The Evlek MCP server runs as a hosted endpoint at https://evlek.app/api/mcp. It speaks the Model Context Protocol over Streamable HTTP (JSON-RPC 2.0), protocolVersion 2026-07-28, and exposes tools, resources, resource templates, and prompts. Discovery metadata is published at /.well-known/mcp.json.
This repository contains:
server.json — MCP Registry manifest
tools.json — Live tool contract (what the local stdio server answers
tools/listwith)TOOLS.md — Full tool reference (JSON schemas + examples)
CHANGELOG.md — Notable changes to the tool surface, including removed/renamed tools
examples/ — Configuration files for Claude Desktop, Cursor, VS Code
CONTRIBUTING.md — How to file issues and propose docs improvements
Sözleşme dosyaları (contract files)
tools.jsonandTOOLS.mdare a projection of the live server, generated bypnpm mcp:export-publicin the source repo and copied here verbatim. Never hand-edit them; theContract Driftworkflow comparestools.jsonagainst the livetools/listdaily and on every PR.The
Live Syncworkflow (.github/workflows/live-sync.yml, daily) reads the live server and, when it differs from this repo, opens an issue listing the tools and fields that differ (one issue per live version; later runs comment on it). It never changes the repo.node scripts/sync-from-live.mjsupdatestools.json, the versions, the README tools table and widget URIs for the sync PR.server.jsonis not that projection. It is the MCP Registry publish manifest and must keep the registry shape:nameisapp.evlek/mcp-server(pattern^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$) anddescriptionis at most 100 characters. A sync only updates itsversion, the tool count indescription, and the_metatool list. (Copying the export's ownserver.jsonhere is what failed the v2.1.0 registry publish.)
The full server implementation (database schemas, API routes, AI prompt engineering, listing pipeline) is hosted at evlek.app and remains proprietary.
Security model
Per OWASP MCP Top 10: per-IP rate limit 60/min, global 500/min, 30s hard timeout, Zod input validation, output sanitization (prompt-injection defense), max 10 results per query, Supabase anon key + RLS, no stack traces leaked, Sentry observability.
To report a security issue, email hello@evlek.app.
Status
MCP version: 3.2.2 (live)
Protocol: 2026-07-28
Primitives: 8 tools · 9 data resources + 3 interactive widget resources · 2 resource templates · 2 prompts
Auth: none (public read-only)
Endpoint:
https://evlek.app/api/mcpMCP Registry:
app.evlek/mcp-server
License
MIT — see LICENSE. MIT covers the public manifest, documentation, examples, and reference clients in this repository only (see License scope above). The hosted Evlek service (web app, mobile apps, listing data, AI prompts, database schemas, business logic) is proprietary.
Trademark notice: "Evlek" is a trademark of Onur Dokuzoğlu. The MIT license does not grant rights to use the "Evlek" name, logo, or branding except as described in this README. To request brand usage permission, contact hello@evlek.app.
Links
Web: evlek.app
iOS: App Store
Android: Google Play
MCP endpoint:
https://evlek.app/api/mcpMCP documentation: evlek.app/mcp
MCP Registry:
app.evlek/mcp-serverModel Context Protocol: modelcontextprotocol.io
Contact: hello@evlek.app
Built in North Cyprus by an architect, not a software firm. Powered by Anthropic Claude, Supabase, Vercel, and the Model Context Protocol.
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.
Inputs: cities (required), type. Returns: type, cities, dataAsOf, dataSource, +2 more
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.
Inputs: listingIds (required). Returns: count, missing, listings, dataSource, +2 more
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.
Inputs: price (required), currency. Returns: fx, amounts, priceGBP, dataSource, +2 more
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.
Inputs: id (required). Returns: id, url, text, title, +3 more
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.
Inputs: city (required), district (required). Returns: city, rent, sale, dataAsOf, +9 more
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.
Inputs: listingNumber (required). Returns: id, url, city, type, +27 more
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.
Inputs: propertyId (required). Returns: id, url, city, type, +27 more
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.
Inputs: city, type. Returns: type, cities, dataAsOf, dataSource, +3 more
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.
Inputs: city. Returns: cities, truncated, dataSource, isEstimate
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.
Inputs: price (required), currency. Returns: fx, amounts, priceGBP, dataSource, +2 more
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.
Inputs: query (required). Returns: fxRates, results, criteria, listings, +4 more
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.
Inputs: city, pool, type, limit, +12 more. Returns: count, offset, fxRates, ranking, +7 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 12 tools
Several tools have overlapping boundaries: `search` and `search_listings` serve the same data, `fetch`, `get_listing_detail`, and `get_listing_by_number` are all single-listing detail retrievers with subtle ID-type differences, and `payment_plan` currently duplicates `convert_currency`'s behavior. Descriptions help, but the distinctions are easy to get wrong.
Most tool names follow a consistent `verb_noun` snake_case pattern (`search_listings`, `compare_cities`, `convert_currency`, `list_locations`). `search` and `fetch` are bare verbs and `payment_plan` is a noun phrase, which are minor deviations from an otherwise readable set.
Twelve tools is a reasonable count for a property-data server, but a few tools are redundant (`search`, `fetch`, `get_listing_by_number`) or placeholder (`payment_plan`), so the set is slightly over-inclusive rather than tightly scoped.
The read-only property domain is well covered: listing search, detailed retrieval, price aggregates, city/district comparisons, currency conversion, and location inventory all exist. The main gaps are the promised payment-plan functionality that is not yet implemented and unavailability of holiday-home inventory, but core workflows succeed.
Maintenance
Related MCP Connectors
Northern Cyprus property listings for rent and sale: search by region, price, layout. Read-only.
Real-estate AI website builder, commission calculator, lease, FAL licence check, listing writer.
AI-native real estate discovery with structured property search and market intelligence.
- Casafari MCPDeprecatedcom.casafari
Property data intelligence, built for AI agents: Europe's most complete property index.
Related MCP Servers
- AlicenseAqualityBmaintenanceUK property data MCP server — Land Registry comps, EPC, Rightmove, rental yields, stamp duty, Companies House. 13 tools.1318MIT
- AlicenseNot gradedqualityCmaintenanceUK 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
- AlicenseAqualityCmaintenanceEnables AI-powered real estate analysis with built-in EU AI Act compliance, providing a production-ready MCP server for property insights and governance.1MIT
- AlicenseAqualityDmaintenanceMCP server for querying Taiwan's real estate transaction registry via web scraping of the Ministry of the Interior's official portal. Enables natural language queries for real estate sales, rentals, and pre-sale housing data.11MIT