Skip to main content
Glama

Evlek — Northern Cyprus Property MCP Server

Currency conversion (GBP/EUR/USD/TRY)

convert_currency
Read-onlyIdempotent

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).

Input Schema

NameRequiredDescriptionDefault
amountYesAmount to convert: a property price, a monthly rent, any amount from 1 up. Not a deposit or an instalment plan.
localeNoLanguage of the answer and the number format. Pass the language the user writes in. Default en.
currencyNoCurrency of the amount. Default GBP. Lower case, symbols (£ € $ ₺) and names (pound, euro, dollar, lira) are read.

Output Schema

NameRequiredDescriptionDefault
fxNo
codeNoPresent on a soft refusal (FX_UNAVAILABLE) and on invalid arguments (INVALID_PARAMS).
staleNoTrue when the stored rates are older than 24 hours.
issuesNo
reasonNo
amountsNo
priceGBPNoThe amount in GBP (the same number as amounts.GBP).
warningsNo
retryableNo
dataSourceNo
rateAgeHoursNoFX_UNAVAILABLE with reason too_old: how old the stored rates are, in hours.
contentLocaleNo
inputCurrencyNo
usesStoredRateNo
assumedCurrencyNoTrue when no currency was given and GBP was assumed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed22 schema fields changed
    • addedInput schema / properties / amount
      Added value: +{
      +  "description": "Amount to convert: a property price, a monthly rent, any amount from 1 up. Not a deposit or an instalment plan.",
      +  "maximum": 10000000000,
      +  "minimum": 1,
      +  "type": "number"
      +}
    • changedInput schema / properties / currency / description
      Previous value: -"Currency of the price (default GBP)."New value: +"Currency of the amount. Default GBP. Lower case, symbols (£ € $ ₺) and names (pound, euro, dollar, lira) are read."
    • addedInput schema / properties / locale
      Added value: +{
      +  "description": "Language of the answer and the number format. Pass the language the user writes in. Default en.",
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / price
      Removed value: -{
      -  "description": "Entered property asking-price amount; not a deposit or installment.",
      -  "maximum": 100000000,
      -  "minimum": 1000,
      -  "type": "number"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "price"
      -]New value: +[
      +  "amount"
      +]
    • addedOutput schema / properties / assumedCurrency
      Added value: +{
      +  "description": "True when no currency was given and GBP was assumed.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / code
      Added value: +{
      +  "description": "Present on a soft refusal (FX_UNAVAILABLE) and on invalid arguments (INVALID_PARAMS).",
      +  "type": "string"
      +}
    • addedOutput schema / properties / contentLocale
      Added value: +{
      +  "enum": [
      +    "tr",
      +    "en",
      +    "ru",
      +    "de",
      +    "ar"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / fx / properties / ageHours
      Added value: +{
      +  "description": "Whole hours since the rates were stored.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / fx / properties / asOf / description
      Added value: +"When the rates were stored (ISO 8601, UTC)."
    • addedOutput schema / properties / fx / properties / rates / description
      Added value: +"Units of each currency per 1 GBP, as stored."
    • addedOutput schema / properties / fx / properties / stale
      Added value: +{
      +  "description": "True when the rates are older than 24 hours (at most 72 hours: older ones are refused).",
      +  "type": "boolean"
      +}
    • changedOutput schema / properties / fx / required
      Previous value: -[
      -  "base",
      -  "source",
      -  "asOf",
      -  "rates"
      -]New value: +[
      +  "base",
      +  "source",
      +  "asOf",
      +  "rates",
      +  "stale",
      +  "ageHours"
      +]
    • addedOutput schema / properties / inputCurrency / enum
      Added value: +[
      +  "GBP",
      +  "EUR",
      +  "USD",
      +  "TRY"
      +]
    • addedOutput schema / properties / issues
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "allowedValues": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "code": {
      +        "type": "string"
      +      },
      +      "field": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "suggestion": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "field",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / priceGBP / description
      Added value: +"The amount in GBP (the same number as amounts.GBP)."
    • addedOutput schema / properties / rateAgeHours
      Added value: +{
      +  "description": "FX_UNAVAILABLE with reason too_old: how old the stored rates are, in hours.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / reason
      Added value: +{
      +  "enum": [
      +    "unavailable",
      +    "too_old"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / retryable
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / stale
      Added value: +{
      +  "description": "True when the stored rates are older than 24 hours.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / warnings
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "field": {
      +        "type": "string"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "inputCurrency",
      -  "priceGBP",
      -  "amounts"
      -]New value: +[]
  2. Changed4 schema fields changed
    • addedOutput schema / properties / amounts / properties
      Added value: +{
      +  "EUR": {
      +    "type": "number"
      +  },
      +  "GBP": {
      +    "type": "number"
      +  },
      +  "TRY": {
      +    "type": "number"
      +  },
      +  "USD": {
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / amounts / required
      Added value: +[
      +  "GBP",
      +  "EUR",
      +  "USD",
      +  "TRY"
      +]
    • addedOutput schema / properties / fx / properties
      Added 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"
      +  }
      +}
    • addedOutput schema / properties / fx / required
      Added value: +[
      +  "base",
      +  "source",
      +  "asOf",
      +  "rates"
      +]
  3. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly/idempotent/non-destructive) by disclosing rate provenance, daily refresh cadence, a 24-hour staleness flag, and a hard failure mode (FX_UNAVAILABLE) beyond 72 hours or with no stored rates. This tells the agent exactly what degraded output looks like.

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?

Front-loads the core capability in the first clause and puts exclusions and rate-freshness rules after. Dense but every clause carries operational meaning; slightly long sentences keep it from a 5.

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?

An output schema exists, so return values need no prose. The description still covers scope boundaries, data freshness, and the failure condition, leaving nothing an agent needs to call it correctly undocumented.

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?

Schema description coverage is 100% and two of three parameters are enums, so the schema already carries the semantics. The description adds the four-currency output set but no extra per-parameter guidance, making 3 the correct baseline.

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?

States a specific verb (converts) and resource (amount between GBP, EUR, USD, TRY), plus the return shape (all four equivalents) and the rate source. The explicit scope exclusions (no payment plan, deposit, tax, fee, advice) make it unambiguously distinct from the listing/search siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-not guidance via an explicit exclusion list (no payment plans, deposits, instalments, tax, fees, acquisition costs, advice). It does not name an alternative tool for those adjacent needs, so routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.