{"openapi":"3.1.0","info":{"title":"StockData.org (BYOK) API","version":"0.1.0","description":"StockData.org (BYOK) lets an AI assistant read your own StockData.org data through the StockData.org API with a key you supply (StockData.org API token). Read-only: 10 tools (get_quotes, get_eod_prices, get_intraday_prices, get_splits, get_dividends, search_entities, list_news, get_news_article, list_similar_news, list_news_sources). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-stockdata.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-stockdata/docs"},"termsOfService":"https://connectorbay.com/byok-stockdata/terms"},"servers":[{"url":"https://byok-stockdata.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-stockdata/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_quotes":{"post":{"operationId":"get_quotes","summary":"Get latest prices of US-listed stocks: price, day high and low, open, 52 week range, previous close, day change and volu","description":"Get latest prices of US-listed stocks: price, day high and low, open, 52 week range, previous close, day change and volume. Use for \"What are the current prices of Apple, Tesla and Microsoft\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"description":"Ticker symbol(s), comma-separated, for example 'AAPL,TSLA'. The number allowed per request depends on your plan.","maxLength":200,"title":"Symbols","type":"string"},"extended_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include pre and post market prices.","title":"Extended Hours"}},"required":["symbols"],"title":"get_quotesArguments","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_eod_prices":{"post":{"operationId":"get_eod_prices","summary":"Get end-of-day open, high, low, close and volume of one stock (also crypto and forex symbols) by day, week, month, quart","description":"Get end-of-day open, high, low, close and volume of one stock (also crypto and forex symbols) by day, week, month, quarter or year, adjusted for splits. Use for \"Show Apple's daily closing prices for September 2026\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"description":"One ticker symbol, for example 'AAPL'.","maxLength":30,"title":"Symbols","type":"string"},"interval":{"anyOf":[{"enum":["day","week","month","quarter","year"],"type":"string"},{"type":"null"}],"default":"day","description":"Bar size: day, week, month, quarter or year.","title":"Interval"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort by date: asc or desc.","title":"Sort"},"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only data after this date: YYYY-MM-DD, YYYY-MM or YYYY.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only data before this date: YYYY-MM-DD, YYYY-MM or YYYY.","title":"Date To"},"date":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only this exact date, YYYY-MM-DD.","title":"Date"}},"required":["symbols"],"title":"get_eod_pricesArguments","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_intraday_prices":{"post":{"operationId":"get_intraday_prices","summary":"Get unadjusted intraday bars (minute or hour) of US stocks with open, high, low, close and volume; minute data spans at ","description":"Get unadjusted intraday bars (minute or hour) of US stocks with open, high, low, close and volume; minute data spans at most 7 days, hour data 180 days. Use for \"Show Tesla's hourly prices for the last few days\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"description":"One ticker symbol, for example 'AAPL'.","maxLength":30,"title":"Symbols","type":"string"},"interval":{"anyOf":[{"enum":["minute","hour"],"type":"string"},{"type":"null"}],"default":"hour","description":"Bar size: minute or hour.","title":"Interval"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"Sort by date: asc or desc.","title":"Sort"},"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only data after this date: YYYY-MM-DD, YYYY-MM or YYYY.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Only data before this date: YYYY-MM-DD, YYYY-MM or YYYY.","title":"Date To"},"extended_hours":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include pre and post market bars.","title":"Extended Hours"}},"required":["symbols"],"title":"get_intraday_pricesArguments","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_splits":{"post":{"operationId":"get_splits","summary":"Get the stock split history of a ticker with numerator, denominator and ratio. Needs the Standard plan or above. Use for","description":"Get the stock split history of a ticker with numerator, denominator and ratio. Needs the Standard plan or above. Use for \"When did Nvidia split its stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"description":"One ticker symbol, for example 'AAPL'.","maxLength":30,"title":"Symbols","type":"string"}},"required":["symbols"],"title":"get_splitsArguments","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_dividends":{"post":{"operationId":"get_dividends","summary":"Get the dividend history of a ticker with date and amount. Needs the Standard plan or above. Use for \"What dividends has","description":"Get the dividend history of a ticker with date and amount. Needs the Standard plan or above. Use for \"What dividends has Microsoft paid recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"description":"One ticker symbol, for example 'AAPL'.","maxLength":30,"title":"Symbols","type":"string"}},"required":["symbols"],"title":"get_dividendsArguments","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/search_entities":{"post":{"operationId":"search_entities","summary":"Search tradable entities (stocks, indices, ETFs, crypto) by name or symbol, with exchange, type, industry and country; 5","description":"Search tradable entities (stocks, indices, ETFs, crypto) by name or symbol, with exchange, type, industry and country; 50 per page. Use for \"Find the ticker for Shopify\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"description":"Name or symbol text to search for.","maxLength":100,"title":"Search","type":"string"},"types":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated entity types, for example 'equity,index'.","title":"Types"},"countries":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated two-letter exchange country codes, for example 'us,ca'.","title":"Countries"},"exchanges":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated exchange codes.","title":"Exchanges"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["search"],"title":"search_entitiesArguments","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_news":{"post":{"operationId":"list_news","summary":"List the latest global financial news with identified entities and sentiment, filtered by symbols, search text, language","description":"List the latest global financial news with identified entities and sentiment, filtered by symbols, search text, language, dates or sentiment. Use for \"What is the latest news about Tesla and how positive is it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"symbols":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Entity symbols identified in the article, comma-separated, for example 'TSLA,AMZN'.","title":"Symbols"},"search":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Search text for article title and body; supports + (AND), | (OR), - (NOT), quoted phrases and trailing *.","title":"Search"},"language":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated language codes to include, for example 'en,es' (default all).","title":"Language"},"published_after":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only articles published after this time: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.","title":"Published After"},"published_before":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only articles published before this time, same formats.","title":"Published Before"},"sentiment_gte":{"anyOf":[{"maximum":1,"minimum":-1,"type":"number"},{"type":"null"}],"default":null,"description":"Only articles with an entity sentiment score of at least this value (-1 to 1).","title":"Sentiment Gte"},"sentiment_lte":{"anyOf":[{"maximum":1,"minimum":-1,"type":"number"},{"type":"null"}],"default":null,"description":"Only articles with an entity sentiment score of at most this value (-1 to 1).","title":"Sentiment Lte"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Articles per request; the maximum depends on your plan.","title":"Limit"},"page":{"anyOf":[{"maximum":400,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (results beyond 20000 are not reachable).","title":"Page"}},"title":"list_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}},"/v1/tools/get_news_article":{"post":{"operationId":"get_news_article","summary":"Get one news article by its uuid (from list_news) with entities, sentiment and highlights. Use for \"Show the article wit","description":"Get one news article by its uuid (from list_news) with entities, sentiment and highlights. Use for \"Show the article with uuid 147013d8-6c2c-4d50-8bad-eb3c8b7f5740\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Article uuid returned by list_news.","maxLength":200,"title":"Uuid","type":"string"}},"required":["uuid"],"title":"get_news_articleArguments","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_similar_news":{"post":{"operationId":"list_similar_news","summary":"List articles similar to one article, by its uuid, with the same optional filters as list_news. Use for \"Find articles s","description":"List articles similar to one article, by its uuid, with the same optional filters as list_news. Use for \"Find articles similar to this story\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uuid":{"description":"Article uuid returned by list_news.","maxLength":200,"title":"Uuid","type":"string"},"language":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated language codes to include, for example 'en,es' (default all).","title":"Language"},"published_after":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only articles published after this time: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS.","title":"Published After"},"published_before":{"anyOf":[{"maxLength":20,"type":"string"},{"type":"null"}],"default":null,"description":"Only articles published before this time, same formats.","title":"Published Before"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Articles per request; the maximum depends on your plan.","title":"Limit"},"page":{"anyOf":[{"maximum":400,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (results beyond 20000 are not reachable).","title":"Page"}},"required":["uuid"],"title":"list_similar_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}},"/v1/tools/list_news_sources":{"post":{"operationId":"list_news_sources","summary":"List the news sources StockData tracks with source id, domain and language; 50 per page. Use for \"Which news sources can","description":"List the news sources StockData tracks with source id, domain and language; 50 per page. Use for \"Which news sources can I filter on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"language":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated language codes to include.","title":"Language"},"distinct_domain":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to group by domain.","title":"Distinct Domain"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_news_sourcesArguments","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}}}}