{"openapi":"3.1.0","info":{"title":"Finage (BYOK) API","version":"0.1.0","description":"Finage (BYOK) lets an AI assistant read your own Finage data through the Finage API with a key you supply (Finage API key). Read-only: 12 tools (get_stock_last_quote, get_stock_last_trade, get_stock_bars, get_stock_previous_close, get_forex_last_quote, get_forex_bars, convert_forex, get_crypto_last_trade, get_crypto_bars, get_market_status, list_top_us_gainers, get_stock_news). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-finage.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-finage/docs"},"termsOfService":"https://connectorbay.com/byok-finage/terms"},"servers":[{"url":"https://byok-finage.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-finage/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_stock_last_quote":{"post":{"operationId":"get_stock_last_quote","summary":"Get the last US stock quote: bid, ask, sizes and timestamp. Use for \"What is the current bid and ask for AAPL\".","description":"Get the last US stock quote: bid, ask, sizes and timestamp. Use for \"What is the current bid and ask for AAPL\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"US stock ticker, for example AAPL.","maxLength":30,"title":"Symbol","type":"string"}},"required":["symbol"],"title":"get_stock_last_quoteArguments","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_stock_last_trade":{"post":{"operationId":"get_stock_last_trade","summary":"Get the last US stock trade: price, size and timestamp. Use for \"What was the last AAPL trade price\".","description":"Get the last US stock trade: price, size and timestamp. Use for \"What was the last AAPL trade price\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"US stock ticker, for example AAPL.","maxLength":30,"title":"Symbol","type":"string"}},"required":["symbol"],"title":"get_stock_last_tradeArguments","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_stock_bars":{"post":{"operationId":"get_stock_bars","summary":"Get OHLCV price bars for a US stock between two dates at a chosen bar size. Use for \"Show daily AAPL bars for September ","description":"Get OHLCV price bars for a US stock between two dates at a chosen bar size. Use for \"Show daily AAPL bars for September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"US stock ticker.","maxLength":30,"title":"Symbol","type":"string"},"multiply":{"description":"Time multiplier: how many time units per bar, for example 1 with 'day' for daily bars.","title":"Multiply","type":"integer"},"time":{"description":"Bar size unit: minute, hour, day, week, month, quarter, year.","enum":["minute","hour","day","week","month","quarter","year"],"title":"Time","type":"string"},"from_date":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"End date as YYYY-MM-DD.","maxLength":10,"title":"To Date","type":"string"},"limit":{"anyOf":[{"maximum":50000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum bars to return (default 100, up to 50000); keep it small.","title":"Limit"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc (oldest first, default) or desc (newest first).","title":"Sort"}},"required":["symbol","multiply","time","from_date","to_date"],"title":"get_stock_barsArguments","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_stock_previous_close":{"post":{"operationId":"get_stock_previous_close","summary":"Get the previous trading day's OHLCV bar for a US stock. Use for \"What was AAPL's close yesterday\".","description":"Get the previous trading day's OHLCV bar for a US stock. Use for \"What was AAPL's close yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"US stock ticker.","maxLength":30,"title":"Symbol","type":"string"}},"required":["symbol"],"title":"get_stock_previous_closeArguments","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_forex_last_quote":{"post":{"operationId":"get_forex_last_quote","summary":"Get the last forex quote (bid, ask, timestamp) for a currency pair such as GBPUSD. Use for \"What is the GBP/USD rate rig","description":"Get the last forex quote (bid, ask, timestamp) for a currency pair such as GBPUSD. Use for \"What is the GBP/USD rate right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Forex pair without a slash, for example GBPUSD.","maxLength":30,"title":"Symbol","type":"string"}},"required":["symbol"],"title":"get_forex_last_quoteArguments","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_forex_bars":{"post":{"operationId":"get_forex_bars","summary":"Get OHLCV bars for a forex pair between two dates at a chosen bar size. Use for \"Show hourly EUR/USD bars for 2026-09-01","description":"Get OHLCV bars for a forex pair between two dates at a chosen bar size. Use for \"Show hourly EUR/USD bars for 2026-09-01\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Forex pair, for example EURUSD.","maxLength":30,"title":"Symbol","type":"string"},"multiply":{"description":"Time multiplier: how many time units per bar, for example 1 with 'day' for daily bars.","title":"Multiply","type":"integer"},"time":{"description":"Bar size unit: minute, hour, day, week, month, quarter, year.","enum":["minute","hour","day","week","month","quarter","year"],"title":"Time","type":"string"},"from_date":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"End date as YYYY-MM-DD.","maxLength":10,"title":"To Date","type":"string"},"limit":{"anyOf":[{"maximum":50000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum bars to return (default 100, up to 50000); keep it small.","title":"Limit"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc (oldest first, default) or desc (newest first).","title":"Sort"}},"required":["symbol","multiply","time","from_date","to_date"],"title":"get_forex_barsArguments","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_forex":{"post":{"operationId":"convert_forex","summary":"Convert an amount from one currency to another at the current forex rate. Use for \"Convert 250 GBP to USD\".","description":"Convert an amount from one currency to another at the current forex rate. Use for \"Convert 250 GBP to USD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_currency":{"description":"Currency code to convert from, for example GBP.","maxLength":10,"title":"From Currency","type":"string"},"to_currency":{"description":"Currency code to convert to, for example USD.","maxLength":10,"title":"To Currency","type":"string"},"amount":{"description":"Whole amount to convert.","minimum":0,"title":"Amount","type":"integer"}},"required":["from_currency","to_currency","amount"],"title":"convert_forexArguments","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_crypto_last_trade":{"post":{"operationId":"get_crypto_last_trade","summary":"Get the last crypto trade price and timestamp for a pair such as BTCUSD. Use for \"What is the current Bitcoin price in U","description":"Get the last crypto trade price and timestamp for a pair such as BTCUSD. Use for \"What is the current Bitcoin price in USD\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Crypto pair without a slash, for example BTCUSD.","maxLength":30,"title":"Symbol","type":"string"}},"required":["symbol"],"title":"get_crypto_last_tradeArguments","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_crypto_bars":{"post":{"operationId":"get_crypto_bars","summary":"Get OHLCV bars for a crypto pair between two dates; the time multiplier can be 1, 3, 5, 15 or 30. Use for \"Show daily BT","description":"Get OHLCV bars for a crypto pair between two dates; the time multiplier can be 1, 3, 5, 15 or 30. Use for \"Show daily BTC/USD bars for September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Crypto pair, for example BTCUSD.","maxLength":30,"title":"Symbol","type":"string"},"multiply":{"description":"Time multiplier: how many time units per bar, for example 1 with 'day' for daily bars.","title":"Multiply","type":"integer"},"time":{"description":"Bar size unit: minute, hour, day, week, month.","enum":["minute","hour","day","week","month"],"title":"Time","type":"string"},"from_date":{"description":"Start date as YYYY-MM-DD.","maxLength":10,"title":"From Date","type":"string"},"to_date":{"description":"End date as YYYY-MM-DD.","maxLength":10,"title":"To Date","type":"string"},"limit":{"anyOf":[{"maximum":50000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"Maximum bars to return (default 100, up to 50000); keep it small.","title":"Limit"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc (oldest first, default) or desc (newest first).","title":"Sort"}},"required":["symbol","multiply","time","from_date","to_date"],"title":"get_crypto_barsArguments","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_market_status":{"post":{"operationId":"get_market_status","summary":"Get whether the stock market of a country (default US), its exchanges and forex and crypto markets are open. Use for \"Is","description":"Get whether the stock market of a country (default US), its exchanges and forex and crypto markets are open. Use for \"Is the US stock market open right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country":{"anyOf":[{"maxLength":4,"type":"string"},{"type":"null"}],"default":null,"description":"Country code, for example US (default).","title":"Country"},"holidays":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include the country's market holidays.","title":"Holidays"},"trading_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to include trading hours.","title":"Trading Hours"}},"title":"get_market_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}},"/v1/tools/list_top_us_gainers":{"post":{"operationId":"list_top_us_gainers","summary":"List the top US stock gainers of the day with price, change and percentage change. Use for \"Which US stocks gained the m","description":"List the top US stock gainers of the day with price, change and percentage change. Use for \"Which US stocks gained the most today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_top_us_gainersArguments","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_stock_news":{"post":{"operationId":"get_stock_news","summary":"Get recent news headlines for a stock symbol with source, title, description, link and date. Use for \"What is the latest","description":"Get recent news headlines for a stock symbol with source, title, description, link and date. Use for \"What is the latest news about AMZN\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbol":{"description":"Stock ticker, for example AMZN.","maxLength":30,"title":"Symbol","type":"string"},"limit":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many articles (1 to 30, default 10).","title":"Limit"}},"required":["symbol"],"title":"get_stock_newsArguments","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}}}}