{"openapi":"3.1.0","info":{"title":"CurrencyAPI (BYOK) API","version":"0.1.0","description":"CurrencyAPI (BYOK) lets an AI assistant read your own CurrencyAPI data through the CurrencyAPI API with a key you supply (CurrencyAPI key). Read-only: 8 tools (get_latest_rates, get_historical_rates, convert_currency, get_pair_rate, get_fluctuation, get_central_bank_rates, list_currencies, get_quota_status). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-currencyapi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-currencyapi/docs"},"termsOfService":"https://connectorbay.com/byok-currencyapi/terms"},"servers":[{"url":"https://byok-currencyapi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-currencyapi/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_latest_rates":{"post":{"operationId":"get_latest_rates","summary":"Get the latest exchange rates from a base currency to chosen currencies (fiat, metal or crypto), with the time of the la","description":"Get the latest exchange rates from a base currency to chosen currencies (fiat, metal or crypto), with the time of the last update. Counts against your monthly quota. Use for \"What is the euro worth in US dollars and pounds right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"base_currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Base currency code, for example 'USD' (default USD).","title":"Base Currency"},"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"type":{"anyOf":[{"enum":["fiat","metal","crypto"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one kind of currency: fiat, metal or crypto.","title":"Type"},"include":{"anyOf":[{"const":"change","type":"string"},{"type":"null"}],"default":null,"description":"Use 'change' to add the daily change and change percentage.","title":"Include"},"inverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also return the inverse rate.","title":"Inverse"},"precision":{"anyOf":[{"maximum":10,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Decimal places for rates (0 to 10).","title":"Precision"}},"title":"get_latest_ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_historical_rates":{"post":{"operationId":"get_historical_rates","summary":"Get exchange rates for one past date (or up to 31 dates) from a base currency. Some history needs a paid plan. Use for \"","description":"Get exchange rates for one past date (or up to 31 dates) from a base currency. Some history needs a paid plan. Use for \"What was the dollar to euro rate on 2025-12-31\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in YYYY-MM-DD format (use this or dates).","title":"Date"},"dates":{"anyOf":[{"maxLength":400,"type":"string"},{"type":"null"}],"default":null,"description":"Up to 31 comma-separated dates, YYYY-MM-DD.","title":"Dates"},"base_currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Base currency code, for example 'USD' (default USD).","title":"Base Currency"},"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"type":{"anyOf":[{"enum":["fiat","metal","crypto"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one kind of currency: fiat, metal or crypto.","title":"Type"},"precision":{"anyOf":[{"maximum":10,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Decimal places for rates (0 to 10).","title":"Precision"}},"title":"get_historical_ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/convert_currency":{"post":{"operationId":"convert_currency","summary":"Convert an amount (or several amounts) from a base currency into chosen currencies at the latest or a past date's rate. ","description":"Convert an amount (or several amounts) from a base currency into chosen currencies at the latest or a past date's rate. Use for \"How much is 250 US dollars in Japanese yen\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"value":{"description":"Amount to convert in the base currency (greater than 0).","minimum":1e-06,"title":"Value","type":"number"},"base_currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Base currency code, for example 'USD' (default USD).","title":"Base Currency"},"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Past date in YYYY-MM-DD format (default: latest).","title":"Date"},"type":{"anyOf":[{"enum":["fiat","metal","crypto"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one kind of currency: fiat, metal or crypto.","title":"Type"},"precision":{"anyOf":[{"maximum":10,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Decimal places for rates (0 to 10).","title":"Precision"}},"required":["value"],"title":"convert_currencyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_pair_rate":{"post":{"operationId":"get_pair_rate","summary":"Get the rate for one currency pair, with the inverse rate. Use for \"What is the GBP to EUR exchange rate\".","description":"Get the rate for one currency pair, with the inverse rate. Use for \"What is the GBP to EUR exchange rate\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_currency":{"description":"Source currency code, for example 'GBP'.","maxLength":3,"title":"From Currency","type":"string"},"to_currency":{"description":"Target currency code, for example 'EUR'.","maxLength":3,"title":"To Currency","type":"string"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Past date in YYYY-MM-DD format (default: latest).","title":"Date"},"precision":{"anyOf":[{"maximum":10,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Decimal places for rates (0 to 10).","title":"Precision"}},"required":["from_currency","to_currency"],"title":"get_pair_rateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_fluctuation":{"post":{"operationId":"get_fluctuation","summary":"Show how currencies moved between two dates: start and end rate, change, percent change, high, low and average. Use for ","description":"Show how currencies moved between two dates: start and end rate, change, percent change, high, low and average. Use for \"How did the euro move against the dollar during September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date_from":{"description":"Start date, YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"End date, YYYY-MM-DD.","maxLength":10,"title":"Date To","type":"string"},"base_currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Base currency code, for example 'USD' (default USD).","title":"Base Currency"},"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"type":{"anyOf":[{"enum":["fiat","metal","crypto"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one kind of currency: fiat, metal or crypto.","title":"Type"}},"required":["date_from","date_to"],"title":"get_fluctuationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_central_bank_rates":{"post":{"operationId":"get_central_bank_rates","summary":"Get official reference rates published by a central bank (for example ecb, boe, fed) for a date, optionally compared wit","description":"Get official reference rates published by a central bank (for example ecb, boe, fed) for a date, optionally compared with market rates. Use for \"What are the European Central Bank's reference rates for today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"source":{"description":"Central bank code such as 'ecb', 'boe' or 'fed'.","maxLength":20,"title":"Source","type":"string"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in YYYY-MM-DD format (default: latest).","title":"Date"},"base_currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":"USD","description":"Base currency code, for example 'USD' (default USD).","title":"Base Currency"},"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"compare":{"anyOf":[{"const":"market","type":"string"},{"type":"null"}],"default":null,"description":"Use 'market' to compare with market rates.","title":"Compare"}},"required":["source"],"title":"get_central_bank_ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_currencies":{"post":{"operationId":"list_currencies","summary":"List currencies with code, name, symbol, decimal digits and type, optionally only some codes or one type. This call does","description":"List currencies with code, name, symbol, decimal digits and type, optionally only some codes or one type. This call does not need a quota. Use for \"What is the symbol and name of the Swiss franc\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"currencies":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,JPY' (all if left out).","title":"Currencies"},"type":{"anyOf":[{"enum":["fiat","metal","crypto"],"type":"string"},{"type":"null"}],"default":null,"description":"Restrict to one kind of currency: fiat, metal or crypto.","title":"Type"}},"title":"list_currenciesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_quota_status":{"post":{"operationId":"get_quota_status","summary":"Show your CurrencyAPI account id and monthly quota: total, used and remaining requests. This call does not count against","description":"Show your CurrencyAPI account id and monthly quota: total, used and remaining requests. This call does not count against the quota. Use for \"How many CurrencyAPI requests do I have left this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_quota_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}