{"openapi":"3.1.0","info":{"title":"CurrencyFreaks (BYOK) API","version":"0.1.0","description":"CurrencyFreaks (BYOK) lets an AI assistant read your own CurrencyFreaks data through the CurrencyFreaks API with a key you supply (CurrencyFreaks API key). Read-only: 8 tools (get_latest_rates, convert_latest, get_historical_rates, get_time_series, get_rate_fluctuation, convert_historical, list_currency_symbols, get_historical_data_limits). The BYOK key travels with each request, is used for that...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-currencyfreaks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-currencyfreaks/docs"},"termsOfService":"https://connectorbay.com/byok-currencyfreaks/terms"},"servers":[{"url":"https://byok-currencyfreaks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-currencyfreaks/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 of fiat, crypto and metal currencies against USD (or another base on paid plans). Free pla","description":"Get the latest exchange rates of fiat, crypto and metal currencies against USD (or another base on paid plans). Free plans can use it. Use for \"What are the current USD to EUR, GBP and PKR rates\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,PKR'. Leave empty for every currency (a very long answer).","title":"Symbols"},"base":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Base currency code (default USD). Changing the base needs a paid plan.","title":"Base"}},"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/convert_latest":{"post":{"operationId":"convert_latest","summary":"Convert an amount from one currency to another at the latest rate. Needs a paid plan. Use for \"How much is 500 US dollar","description":"Convert an amount from one currency to another at the latest rate. Needs a paid plan. Use for \"How much is 500 US dollars in Pakistani rupees today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_currency":{"description":"Currency code to convert from, for example 'USD'.","maxLength":10,"title":"From Currency","type":"string"},"to_currency":{"description":"Currency code to convert to, for example 'PKR'.","maxLength":10,"title":"To Currency","type":"string"},"amount":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":1.0,"description":"Amount to convert (default 1.0).","title":"Amount"}},"required":["from_currency","to_currency"],"title":"convert_latestArguments","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 end-of-day exchange rates for one past date. Needs a paid plan. Use for \"What were the USD to EUR and GBP rates on 2","description":"Get end-of-day exchange rates for one past date. Needs a paid plan. Use for \"What were the USD to EUR and GBP rates on 20 August 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date":{"description":"Past date, formatted YYYY-MM-DD.","maxLength":10,"title":"Date","type":"string"},"base":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Base currency code (default USD). Changing the base needs a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,PKR'. Leave empty for every currency (a very long answer).","title":"Symbols"}},"required":["date"],"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/get_time_series":{"post":{"operationId":"get_time_series","summary":"Get daily exchange rates between two dates for chosen currencies. Needs the Professional plan or above. Use for \"Show da","description":"Get daily exchange rates between two dates for chosen currencies. Needs the Professional plan or above. Use for \"Show daily EUR to PKR and USD rates for the first week of July 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the range, formatted YYYY-MM-DD.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the range, formatted YYYY-MM-DD (default: the day before today).","title":"End Date"},"base":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Base currency code (default USD). Changing the base needs a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,PKR'. Leave empty for every currency (a very long answer).","title":"Symbols"}},"required":["start_date"],"title":"get_time_seriesArguments","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_rate_fluctuation":{"post":{"operationId":"get_rate_fluctuation","summary":"Get how rates changed between two dates: start rate, end rate, change and percent change. Needs the Professional plan or","description":"Get how rates changed between two dates: start rate, end rate, change and percent change. Needs the Professional plan or above. Use for \"How much did GBP to PKR move between 1 and 15 June 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the range, formatted YYYY-MM-DD.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Last day of the range, formatted YYYY-MM-DD (default: the day before today).","title":"End Date"},"base":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Base currency code (default USD). Changing the base needs a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated currency codes to return, for example 'EUR,GBP,PKR'. Leave empty for every currency (a very long answer).","title":"Symbols"}},"required":["start_date"],"title":"get_rate_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/convert_historical":{"post":{"operationId":"convert_historical","summary":"Convert an amount between two currencies at the rate of a past date. Needs a paid plan. Use for \"How much was 1000 euros","description":"Convert an amount between two currencies at the rate of a past date. Needs a paid plan. Use for \"How much was 1000 euros in US dollars on 3 March 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date":{"description":"Past date, formatted YYYY-MM-DD.","maxLength":10,"title":"Date","type":"string"},"from_currency":{"description":"Currency code to convert from, for example 'USD'.","maxLength":10,"title":"From Currency","type":"string"},"to_currency":{"description":"Currency code to convert to, for example 'PKR'.","maxLength":10,"title":"To Currency","type":"string"},"amount":{"anyOf":[{"minimum":0,"type":"number"},{"type":"null"}],"default":1.0,"description":"Amount to convert (default 1.0).","title":"Amount"}},"required":["date","from_currency","to_currency"],"title":"convert_historicalArguments","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_currency_symbols":{"post":{"operationId":"list_currency_symbols","summary":"List every supported currency code with its full name (fiat, crypto and metals). The answer is long and may be cut off. ","description":"List every supported currency code with its full name (fiat, crypto and metals). The answer is long and may be cut off. Use for \"Which currencies does CurrencyFreaks support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_currency_symbolsArguments","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_data_limits":{"post":{"operationId":"get_historical_data_limits","summary":"Show, for each currency, the period of dates it has historical rates for. The answer is long and may be cut off. Use for","description":"Show, for each currency, the period of dates it has historical rates for. The answer is long and may be cut off. Use for \"Since when does CurrencyFreaks have BTC rates\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_historical_data_limitsArguments","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}}}}