Skip to main content
Glama
Evlek

Evlek — Northern Cyprus Property MCP Server

Official

Search Evlek property listings

search
Read-only

Find live Northern Cyprus property listings by free-text query. Get matching property IDs, titles, and URLs for further details.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text property search query

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
fxRatesNo
resultsYes
criteriaNo
listingsNo
outOfScopeNo
unresolvedNo
appliedFiltersNo
nearbyAlternativesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv2.1.0
    • addedOutput schema / properties / appliedFilters
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "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"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / criteria
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "key": {
      +        "type": "string"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "state": {
      +        "enum": [
      +          "applied",
      +          "unresolved",
      +          "not_supported"
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "key",
      +      "value",
      +      "state"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / fxRates
      Added value: +{
      +  "properties": {
      +    "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"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "base",
      +    "rates",
      +    "source",
      +    "updatedAt",
      +    "isFallback"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / listings
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "areaSqm": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "bedrooms": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "city": {
      +        "type": "string"
      +      },
      +      "coverImageUrl": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "currency": {
      +        "type": "string"
      +      },
      +      "district": {
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "listingNumber": {
      +        "type": [
      +          "number",
      +          "null"
      +        ]
      +      },
      +      "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"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "title",
      +      "city",
      +      "district",
      +      "price",
      +      "priceGbp",
      +      "currency",
      +      "type",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / nearbyAlternatives
      Added value: +{
      +  "properties": {
      +    "listings": {
      +      "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"
      +            ]
      +          },
      +          "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"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "title",
      +          "city",
      +          "district",
      +          "price",
      +          "priceGbp",
      +          "currency",
      +          "type",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "relaxed": {
      +      "enum": [
      +        "district",
      +        "maxPrice"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "relaxed",
      +    "listings"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / outOfScope
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / unresolved
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / required
      Added value: +[
      +  "results"
      +]
  2. First observedv1.6.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false; the description adds 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.

Conciseness4/5

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.

Completeness5/5

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

For a one-parameter, read-only 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.