NC Keys — Northern Cyprus property
Server Details
Northern Cyprus property listings for rent and sale: search by region, price, layout. Read-only.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: search_listings for discovery, get_listing for single-item details, and list_regions for region metadata. The descriptions reinforce the boundaries (e.g., get_listing takes an id, search_listings takes filters), so an agent can easily tell them apart.
All tool names follow a consistent verb_noun snake_case pattern: get_listing, list_regions, search_listings. The verbs are distinct and the nouns clearly indicate the target resource.
Three tools are well-scoped for a read-only property search service: one for searching, one for fetching details, and one for region reference data. Each earns its place without redundancy or bloat.
The surface covers the core read-only workflows (search, detail, region lookup) but lacks pagination or advanced sorting/filtering options beyond a limit parameter. These are minor gaps that agents can work around for typical browsing tasks.
Available Tools
3 toolsget_listingGet one listingARead-onlyIdempotentInspect
Full details of one listing by id (e.g. 'c-152' or 'b-7'): full description, photos, dates. If latest_id is set, this is an older copy of a reposted listing — use the newest one instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Listing id from search_listings, e.g. 'c-152' |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine contextual behavior beyond that: the repost/staleness signal via latest_id and the concrete return payload (photos, dates), which an agent wouldn't infer from the annotations alone.
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, front-loaded with the core purpose and followed by an edge-case warning; no filler. Slightly compressed by the parenthetical examples, but every clause 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 single-parameter read tool with an output schema, rich annotations, and a documented id format, the description covers purpose, return highlights, and the one real edge case (reposted/stale listings). Nothing needed to invoke it correctly 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 coverage is 100% and there is only one parameter whose format is already documented in the schema ('Listing id from search_listings, e.g. c-152'). The description's id examples are redundant with the schema, so baseline 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?
Specific verb+resource ('Full details of one listing by id') with concrete id examples and an enumeration of what's returned (description, photos, dates). An agent can distinguish this from search_listings and list_regions without opening a schema.
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?
Gives a clear conditional: if latest_id is set, the record is a stale copy of a reposted listing and the newest should be used instead. It stops short of explicitly stating the retrieval workflow (e.g. 'get ids from search_listings first'), though the schema description on `id` carries that routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_regionsList regions and areasARead-onlyIdempotentInspect
Regions and areas of Northern Cyprus with the number of current listings (rent and sale), names in English and Russian. Use to pick region / sub_region for search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds content context (listing counts, bilingual names), but nothing about caching, ordering, or data freshness. Adequate but modest value beyond 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?
Two tight sentences with no waste. The content (what it returns) is front-loaded before the actionable routing instruction.
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?
An output schema exists, so return structure needn't be explained, and the description still summarizes the payload usefully. An agent has what it needs to call this zero-arg lookup 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?
Zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The description's mention of returned fields is not a parameter concern.
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?
Specific verb+resource ('Regions and areas of Northern Cyprus') with scope detail (listing counts, English/Russian names). It implicitly separates itself from get_listing/search_listings by being a reference lookup, though it never names those siblings directly.
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?
Explicitly states when to use it: 'Use to pick `region` / `sub_region` for search_listings.' That routes the agent to the correct downstream tool. It stops short of stating when NOT to use it or naming other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch property listingsARead-onlyIdempotentInspect
Search current property listings in Northern Cyprus. All filters are optional and accept English, Russian or Turkish spellings (e.g. region 'Kyrenia' or 'Гирне'). Returns up to limit listings (featured first, then newest by default) with a one-line summary, url and contact_url. Example: long-term rent of a 2+1 in Iskele up to £700 → deal='Rent', region='iskele', layout='2+1', price_max=700, price_period='month'.
| Name | Required | Description | Default |
|---|---|---|---|
| deal | No | Sale or Rent | |
| sort | No | recommended = featured first, then newest | recommended |
| type | No | Property type | |
| limit | No | How many listings to return, 1–10 | |
| cursor | No | next_cursor from a previous call, for more results | |
| layout | No | 'studio', '1+1', '2+1', '3+1', or '4+' for 4 or more bedrooms | |
| region | No | girne (Kyrenia), iskele, famagusta, lefkosha (Nicosia), guzelyurt, lefke | |
| area_min | No | Minimum area in m² | |
| currency | No | Currency of price_min/max, default GBP | |
| has_photo | No | Only listings with photos | |
| price_max | No | Maximum price in `currency` | |
| price_min | No | Minimum price in `currency` | |
| sub_region | No | Area within a region, e.g. 'Long Beach', 'Bogaz', 'Esentepe', 'Alsancak' (see list_regions) | |
| price_period | No | month = monthly rent, day = daily/holiday rent, total = sale price |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, read-only, idempotent, non-destructive operation, so the bar is lower. The description still adds real value: multilingual filter acceptance (English/Russian/Turkish), default ordering (featured first, then newest), the cap of `limit` results, and the fields each result carries.
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 front-loaded sentences: scope, cross-cutting filter behavior, then return shape and a worked example. No sentence is redundant and the most load-bearing facts come first.
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 14-parameter, all-optional search tool with an output schema and full annotation coverage, the description supplies the remaining non-structured context: language flexibility, default ranking, and result cardinality. Nothing an agent needs to call it correctly 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 a 3 is the baseline. The description goes beyond it by explaining that filters accept spellings across three languages (region 'Kyrenia' or 'Гирне') and by demonstrating a multi-parameter combination, which the schema alone does not convey.
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?
States a specific verb and resource ('Search current property listings in Northern Cyprus') plus scope details like sorting order and result contents. It is unmistakably distinct from get_listing (single record) and list_regions (region dictionary) without needing to name them.
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?
Tells the agent that all filters are optional and supplies a concrete worked query mapping ('long-term rent of a 2+1 in Iskele up to £700') that shows how to compose parameters. It stops short of explicit when-not guidance or routing to siblings like list_regions for valid sub_region values, though the schema hints at that.
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.
3 tool updates
- First observed
get_listing - First observed
list_regions - First observed
search_listings
Related MCP Connectors
Live Northern Cyprus (KKTC/TRNC) property listings and asking-price data. Read-only, 12 tools.
Read-only European property search by location, price, size and features. No sign-in required.
81North Cyprus car rental (Kıbrıs araç kiralama): live availability, prices, company info, booking.
Dubai property prices, rents and trends from official Dubai Land Department records. Read-only.
Related MCP Servers
AlicenseAqualityAmaintenanceAI-native property MCP for Northern Cyprus (KKTC). Search live listings, get the price index, compare cities and districts, estimate rental yield, and look up KKTC title-deed (koçan) procedures — all sourced live from evlek.app.129 npmMIT- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host's own domain. Agents discover a host domain, verify an Ed25519-signed offer (VRP), and send the guest to that domain to book and pay the host. Do not compare hosts or prices. HemmaBo + VRP, 6 runtime tools: 2 HemmaBo tools, 2 host onboarding tools, and 2 VRP verification tools. Not an OTA. Not a marketplace.13108 npm3Apache 2.0
- AlicenseAqualityCmaintenanceEnables searching and browsing ss.ge real estate listings with filters, counters, full card details, and geo/city data via MCP tools.652 npmMIT
- AlicenseAqualityDmaintenancePhilippine real estate data for AI agents — search verified listings, calculate transfer costs, and get accurate legal information via lupaph.com.645 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.