currencylayer MCP by usefulapi

Read and calculate currency exchange rates with your paid currencylayer account.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
96%
Naming quality
72%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'currencylayer_get_historical_rates' name length outside 3-30 rangein currencylayer_get_historical_rates
  • LOWTool 'currencylayer_get_timeframe_rates' name length outside 3-30 rangein currencylayer_get_timeframe_rates

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,741Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.36% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "currencylayer": {
      "url": "https://currencylayer.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://currencylayer.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🔴currencylayer_get_live_rates(currencies, source)

SPENDS 1 request of your currencylayer monthly quota per call (also when it fails after authentication; it is never retried). Real-time exchange rates for up to 174 world currencies and precious metals relative to a source currency (default USD). Quotes are keyed by pair, e.g. USDEUR = 0.918 means 1 USD = 0.918 EUR. The free plan refreshes daily, higher plans hourly down to every 60 seconds. Use 'currencies' to limit the reply. GET /live.

Input Schema

{
  "type": "object",
  "properties": {
    "currencies": {
      "description": "Only these currency codes, e.g. [\"EUR\",\"GBP\",\"JPY\"] (default: all of them).",
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9]{2,10}$"
      }
    },
    "source": {
      "description": "Source (base) currency code, default USD. Needs the Basic plan or higher; every quote is then SOURCE+TARGET, e.g. EURGBP.",
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴currencylayer_get_historical_rates(date, currencies, source)

SPENDS 1 request of your currencylayer monthly quota per call (also when it fails after authentication; it is never retried). Exchange rates for one past date (data back to 1999 for most currencies; a currency added later has no data before its start date and the whole request then fails). Quotes are keyed by pair, e.g. USDEUR. Use 'currencies' to limit the reply. GET /historical.

Input Schema

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "The date to look up, yyyy-mm-dd."
    },
    "currencies": {
      "description": "Only these currency codes, e.g. [\"EUR\",\"GBP\",\"JPY\"] (default: all of them).",
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9]{2,10}$"
      }
    },
    "source": {
      "description": "Source (base) currency code, default USD. Needs the Basic plan or higher; every quote is then SOURCE+TARGET, e.g. EURGBP.",
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$"
    }
  },
  "required": [
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴currencylayer_convert_currency(from, to, amount, date)

SPENDS 1 request of your currencylayer monthly quota per call (also when it fails after authentication; it is never retried). Convert an amount from one currency to another with real-time rates, or with the rates of a past date. Returns the result and the quote used. Needs the Basic plan or higher. GET /convert.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$",
      "description": "Currency to convert from, e.g. USD."
    },
    "to": {
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$",
      "description": "Currency to convert to, e.g. EUR."
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000000,
      "description": "Amount to convert (positive, up to 1e12)."
    },
    "date": {
      "description": "Use the rates of this date (yyyy-mm-dd) instead of real-time rates.",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    }
  },
  "required": [
    "from",
    "to",
    "amount"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴currencylayer_get_timeframe_rates(start_date, end_date, currencies, source)

SPENDS 1 request of your currencylayer monthly quota per call (also when it fails after authentication; it is never retried). Daily exchange rates for every date from start_date to end_date (at most 365 days apart), one entry per date. Needs the Enterprise plan or higher. The reply must stay small: days x currencies may not exceed 2000 (without 'currencies' that is 174 per day), checked before the request is sent. GET /timeframe.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "First date, yyyy-mm-dd."
    },
    "end_date": {
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$",
      "description": "Last date, yyyy-mm-dd (not before start_date, at most 365 days after it)."
    },
    "currencies": {
      "description": "Only these currency codes, e.g. [\"EUR\",\"GBP\",\"JPY\"] (default: all of them).",
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9]{2,10}$"
      }
    },
    "source": {
      "description": "Source (base) currency code, default USD. Needs the Basic plan or higher; every quote is then SOURCE+TARGET, e.g. EURGBP.",
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$"
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴currencylayer_get_rate_changes(start_date, end_date, currencies, source)

SPENDS 1 request of your currencylayer monthly quota per call (also when it fails after authentication; it is never retried). How exchange rates changed between two dates: per currency pair the start_rate, end_rate, absolute change and change_pct. Pass both dates or none (none = yesterday's end-of-day rate against the latest rate). Forex markets are closed on weekends, so a weekend change can be zero. Needs the Enterprise+ plan or higher. GET /change.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "description": "Start date, yyyy-mm-dd (give both dates or neither).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "end_date": {
      "description": "End date, yyyy-mm-dd (give both dates or neither).",
      "type": "string",
      "pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
    },
    "currencies": {
      "description": "Only these currency codes, e.g. [\"EUR\",\"GBP\",\"JPY\"] (default: all of them).",
      "minItems": 1,
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "string",
        "pattern": "^[A-Za-z0-9]{2,10}$"
      }
    },
    "source": {
      "description": "Source (base) currency code, default USD. Needs the Basic plan or higher; every quote is then SOURCE+TARGET, e.g. EURGBP.",
      "type": "string",
      "pattern": "^[A-Za-z0-9]{2,10}$"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools