{"openapi":"3.1.0","info":{"title":"Exchangeratesapi (BYOK) API","version":"0.1.0","description":"Exchangeratesapi (BYOK) lets an AI assistant read your own Exchangeratesapi data through the Exchangeratesapi API with a key you supply (access key). Read-only: 6 tools (list_currency_symbols, get_latest_rates, get_historical_rates, convert_currency, get_time_series, get_fluctuation). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-exchangeratesapi.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-exchangeratesapi/docs"},"termsOfService":"https://connectorbay.com/byok-exchangeratesapi/terms"},"servers":[{"url":"https://byok-exchangeratesapi.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-exchangeratesapi/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/list_currency_symbols":{"post":{"operationId":"list_currency_symbols","summary":"List the currency codes the service supports with their full names, as a code-to-name map. Use for \"Which currencies doe","description":"List the currency codes the service supports with their full names, as a code-to-name map. Use for \"Which currencies does Exchangeratesapi 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_latest_rates":{"post":{"operationId":"get_latest_rates","summary":"Get the latest exchange rates against a base currency (EUR by default), optionally limited to some currencies, with the ","description":"Get the latest exchange rates against a base currency (EUR by default), optionally limited to some currencies, with the time the rates were collected. Use for \"What are the latest EUR to USD, GBP and JPY exchange rates\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"base":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"3-letter code of the base currency. The API default is EUR; choosing another base may need a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated 3-letter currency codes to return, for example 'USD,GBP,JPY'. Omit for all currencies.","title":"Symbols"}},"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 the exchange rates of one past day (data goes back to 1999), optionally limited to some currencies. Use for \"What wa","description":"Get the exchange rates of one past day (data goes back to 1999), optionally limited to some currencies. Use for \"What was the EUR to USD rate on 2024-12-24\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"date":{"description":"Day to look up, formatted YYYY-MM-DD.","maxLength":10,"title":"Date","type":"string"},"base":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"3-letter code of the base currency. The API default is EUR; choosing another base may need a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated 3-letter currency codes to return, for example 'USD,GBP,JPY'. Omit for all currencies.","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/convert_currency":{"post":{"operationId":"convert_currency","summary":"Convert an amount from one currency to another at the latest rate, or at a past day's rate when a date is given. Availab","description":"Convert an amount from one currency to another at the latest rate, or at a past day's rate when a date is given. Availability depends on the plan. Use for \"How much is 250 GBP in JPY today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_currency":{"description":"3-letter code of the currency to convert from, for example 'GBP'.","maxLength":3,"title":"From Currency","type":"string"},"to_currency":{"description":"3-letter code of the currency to convert to, for example 'JPY'.","maxLength":3,"title":"To Currency","type":"string"},"amount":{"description":"Amount to convert, a number.","title":"Amount","type":"number"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Optional past day (YYYY-MM-DD) to use that day's rate.","title":"Date"}},"required":["from_currency","to_currency","amount"],"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_time_series":{"post":{"operationId":"get_time_series","summary":"Get daily exchange rates between two dates (at most 365 days apart) for a base currency, optionally for some currencies.","description":"Get daily exchange rates between two dates (at most 365 days apart) for a base currency, optionally for some currencies. Needs a plan that includes time series. Use for \"How did EUR to USD move day by day in January 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the period, formatted YYYY-MM-DD. The period may be at most 365 days long.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day of the period, formatted YYYY-MM-DD.","maxLength":10,"title":"End Date","type":"string"},"base":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"3-letter code of the base currency. The API default is EUR; choosing another base may need a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated 3-letter currency codes to return, for example 'USD,GBP,JPY'. Omit for all currencies.","title":"Symbols"}},"required":["start_date","end_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_fluctuation":{"post":{"operationId":"get_fluctuation","summary":"Get how each currency's rate changed between two dates (at most 365 days apart): start rate, end rate, change and percen","description":"Get how each currency's rate changed between two dates (at most 365 days apart): start rate, end rate, change and percent change. Needs a plan that includes fluctuation data. Use for \"How much did EUR to USD change during January 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the period, formatted YYYY-MM-DD. The period may be at most 365 days long.","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day of the period, formatted YYYY-MM-DD.","maxLength":10,"title":"End Date","type":"string"},"base":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"3-letter code of the base currency. The API default is EUR; choosing another base may need a paid plan.","title":"Base"},"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated 3-letter currency codes to return, for example 'USD,GBP,JPY'. Omit for all currencies.","title":"Symbols"}},"required":["start_date","end_date"],"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}}}}