{"openapi":"3.1.0","info":{"title":"StockMarketAPI (RealtimeAPI)","version":"5f58e4a5","description":"StockMarketAPI served through the RealtimeAPI gateway. Pay per request in USDC with x402 (no account), or send an `X-API-Key` / `Authorization: Bearer rta_live_...` key. Each operation's `x-price` is the per-request price.","x-feed-slug":"stockmarket"},"servers":[{"url":"https://api.realtimeapi.ai/v1/stockmarket"}],"security":[{},{"ApiKeyHeader":[]},{"BearerKey":[]}],"paths":{"/calendar":{"get":{"operationId":"calendar","summary":"Get Calendar","description":"Get the filing schedule calendar with filters.\n\nReturns expected and actual filing dates for tracked companies,\nwith status tracking (upcoming, expected, received, overdue)\nand source information.","parameters":[{"name":"year","in":"query","required":false,"schema":{"type":"integer"},"description":"Filter by fiscal year (defaults to current year)"},{"name":"month","in":"query","required":false,"schema":{"type":["integer","null"],"minimum":1,"maximum":12},"description":"Filter by month of expected filing date"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by exchange (NYSE, ASX, etc.)"},{"name":"ticker","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by ticker symbol"},{"name":"status","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by status (upcoming, expected, received, overdue)"},{"name":"filing_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by filing type (10-K, 10-Q, annual, half_year, appendix_4e)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"minimum":1}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":200}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_calendar","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/commodities/catalog":{"get":{"operationId":"commodities-catalog","summary":"Get Commodity Catalog","description":"The commodities we serve, their default series and every backing source.\n\nAnswers \"which symbols and what will I get?\": the top-level ``unit`` /\n``frequency`` / ``source`` describe the primary series (daily market-data\nfutures where a free feed exists, official monthly series otherwise);\n``sources`` lists everything collected, including cross-checks selectable\nvia ``?source=`` on the prices endpoint. ``coverage: \"sparse\"`` flags\nseries with known publication gaps.","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_commodities-catalog","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/commodities/quotes":{"get":{"operationId":"commodities-quotes","summary":"Get Commodity Quotes","description":"Batch commodity prices with period change — one call for a strip.\n\nDelayed / end-of-day. Serves each commodity's **primary** series (daily\nfutures, or the official monthly series for iron ore / coal / uranium /\nlithium / nickel — check ``frequency`` per quote). Accepts aliases\n(``GC=F``→GOLD, ``IRON_ORE``→IRONORE, …); unknown symbols or ones with no\nhistory yet come back in ``not_found``. ``currency=AUD`` derives from the\nlatest stored AUDUSD rate with fx provenance on each quote.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated commodity symbols"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","default":"USD"},"description":"Quote currency: USD or AUD (derived)"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_commodities-quotes","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/commodities/{symbol}/prices":{"get":{"operationId":"commodities-symbol-prices","summary":"Get Commodity Prices","description":"Historical price series for one commodity (charts / analysis).\n\nDaily series behave like ``/indices/{symbol}/prices`` (1d/1wk bars, no\nintraday). Monthly-anchor series serve native monthly close-only bars —\n``interval`` comes back ``1mo`` and weekly resampling is rejected.\n``currency=AUD`` converts per-bar with forward-filled daily rates; bars\nwith no usable rate have null prices (honest gaps, see fx service).","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"1M"},"description":"Time range: 1W, 1M, 3M, 6M, 1Y, 5Y, MAX"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"1d"},"description":"Bar interval: 1d or 1wk (daily series only)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","default":"USD"},"description":"Bar currency: USD or AUD (derived per-bar)"},{"name":"source","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Source series to serve (default: the primary). See /commodities/catalog for each commodity's sources."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies":{"get":{"operationId":"companies","summary":"List Companies","description":"List all companies with pagination.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"minimum":1},"description":"Page number"},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100},"description":"Items per page"},{"name":"sector","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by sector"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by exchange"},{"name":"security_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by security type: 'equity' or 'etf'. Omit for both (the default — ETFs are part of the covered universe)."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/bulk":{"get":{"operationId":"companies-bulk","summary":"Bulk Get Companies","description":"Get detailed info for multiple companies in a single call.\n\nAccepts up to 25 comma-separated ticker symbols and returns\ncompany details including latest financials date, data completeness,\nand price data availability.","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated list of ticker symbols (max 25)"}],"x-price":{"price":"$0.100","price_micro":100000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies-bulk","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/coverage":{"get":{"operationId":"companies-coverage","summary":"Get Coverage","description":"Full covered-universe listing in a single call.\n\nCompact rows with listing identity and stored dataset/source metadata for\nevery active company, so a consumer can align its universe to ours without\npaging ``/companies`` (capped at MAX_PAGE_SIZE). For full profiles use\n``/companies/bulk``; for calculated metrics use ``/companies/metrics/bulk``.\nDates identify stored bars/periods, including sparse financial periods;\npresence does not assess freshness, completeness, or provider universe size.","parameters":[{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by exchange (e.g. NASDAQ, NYSE, ASX)"},{"name":"security_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by security type: 'equity' or 'etf'. Omit for both."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies-coverage","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/metrics/bulk":{"get":{"operationId":"companies-metrics-bulk","summary":"Bulk Get Metrics","description":"Calculated metrics for multiple companies in a single call.\n\nPath is ``/api/v1/companies/metrics/bulk``. Accepts either ``?tickers=`` or\nits alias ``?symbols=`` (max 100). Each ticker is resolved via the same\nlogic as /{ticker}/metrics/summary (latest FY financials, latest market\ndata). Tickers without financial data are reported in `not_found` rather\nthan failing the whole request.","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":["string","null"]},"description":"Comma-separated list of ticker symbols (max 100)"},{"name":"symbols","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Alias for `tickers` (accepted for consumer convenience)."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies-metrics-bulk","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/quotes":{"get":{"operationId":"companies-quotes","summary":"Get Quotes","description":"Batch quotes for a watchlist — one call for many symbols.\n\n**Price basis:** ``price`` and ``prev_close`` are as quoted: not\ndividend-adjusted, and on the same basis as each other and as\n``close_split_adjusted`` on ``/companies/{ticker}/prices``. They are NOT on\nthe basis of that endpoint's ``close``, which is also dividend-adjusted.\n\nReturns delayed / end-of-day data (price, change, day range, volume,\nmarket cap, 52-week range) assembled from the latest market-data snapshot\nand daily price history. This is **not** a real-time feed: every quote\ncarries ``is_delayed: true`` plus ``as_of`` / ``updated_at`` so consumers\ncan see exactly how stale each value is. Symbols we don't track, or that\nhave no price/market data, are returned in ``not_found``.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated ticker symbols (max 100)"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies-quotes","x-cache-ttl-s":300,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/search":{"get":{"operationId":"companies-search","summary":"Search Companies","description":"Search companies by ticker or name.\n\nResults are ranked exact-ticker first, then ticker-prefix, then any other\nticker/name substring match (ticker-alphabetical within each tier) so a\nticker lookup returns the intended company first. User-supplied LIKE\nwildcards (``%``/``_``) are escaped and matched literally.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Search query"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"minimum":1}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_companies-search","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}":{"get":{"operationId":"companies-ticker","summary":"Get Company","description":"Get company details by ticker (supports aliases).","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.020","price_micro":20000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/analyst":{"get":{"operationId":"companies-ticker-analyst","summary":"Get Company Analyst Consensus","description":"Third-party analyst consensus + 12-month price target (market-data provider source).\n\nReturns the mean/high/low target, consensus rating, and analyst count, plus\na convenience ``upside_pct`` against the latest price. ``has_consensus`` is\nFalse (with null fields) when no analyst coverage is held for the ticker —\na completeness signal rather than an error.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/completeness":{"get":{"operationId":"companies-ticker-completeness","summary":"Get Company Completeness","description":"Per-statement data-completeness breakdown for the latest reporting period.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/data-issues":{"get":{"operationId":"companies-ticker-data-issues","summary":"Get Company Data Issues","description":"Data quality issues recorded for this company (provenance / divergence).","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by status (open, resolved, etc.)"},{"name":"issue_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by issue_type (e.g. source_divergence)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"minimum":1,"maximum":500}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/filings":{"get":{"operationId":"companies-ticker-filings","summary":"Get Company Filings","description":"Get filings for a company — SEC EDGAR (US-listed) and/or ASX reports.\n\n``document_url`` is a permanent link for both sources: SEC rows point at\nEDGAR, ASX rows at our own ``/filings/{accession_number}/download``, which\nreturns the file itself. Safe to store or embed.\nUse ``source=sec_edgar`` or ``source=asx`` to filter.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"form_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by form type (10-K, 10-Q, 8-K, annual, half_year)"},{"name":"source","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by source: sec_edgar or asx"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"minimum":1,"maximum":100},"description":"Max filings per source"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.020","price_micro":20000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/filings/{accession_number}/download":{"get":{"operationId":"companies-ticker-filings-accession-number-download","summary":"Download Filing","description":"Stable download link for an ASX report — returns the file itself.\n\nThis is what ``filings[].document_url`` points to for ASX rows, and it never\nexpires, so a link that was stored, cached or baked into a page months ago\nstill resolves. The answer is 200 with the document in the body\n(``Content-Disposition: inline``, so a browser shows it in place).\n``redirect=true`` instead 302s to a presigned storage URL minted per request.\n\n``format=pdf`` (default) is **public** — the PDF is the exchange's own\npublished document, and the link has to work in an end user's browser with no\nkey. ``format=markdown`` returns our markitdown extraction and is key-gated\nlike the rest of the paid data.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"accession_number","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","default":"pdf"},"description":"pdf | markdown"},{"name":"redirect","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"true: 302 to a short-lived signed storage URL instead of returning the file"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/financials":{"get":{"operationId":"companies-ticker-financials","summary":"Get Company Financials","description":"Get financial statements for a company.\n\n- ``?period=ttm`` returns a single trailing-twelve-month aggregate (sum of\n  the last 4 standalone quarters for flows; latest quarter for balance-sheet\n  instants).\n- Quarterly rows carry a ``cash_flow_basis`` flag (standalone / cumulative /\n  unknown). Pass ``?cash_flow=standalone`` to de-cumulate SEC year-to-date\n  cash flow into true per-quarter values.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"period_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by period type (FY, Q1-Q4)"},{"name":"period","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Special aggregate period. Use 'ttm' for trailing twelve months."},{"name":"cash_flow","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Cash-flow basis for quarterly rows. 'standalone' de-cumulates SEC year-to-date cash flow into true per-quarter values."},{"name":"quarters_only","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Return only quarterly data (exclude FY/annual)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100},"description":"Number of periods to return"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.050","price_micro":50000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/holdings":{"get":{"operationId":"companies-ticker-holdings","summary":"Get Etf Holdings","description":"Published constituents and sector allocation for an ETF.\n\nSources publish a top-N snapshot rather than the full book, so\n``holdings_weight_total`` reports how much of the fund the listed positions\nactually account for — for a broad index fund that is well under 1.0.\n\nAn empty ``holdings`` list with ``publishes_no_holdings: true`` is a real\nanswer, not a gap: a spot-commodity ETP (IBIT, GBTC) holds a single asset\nand publishes no breakdown.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"minimum":1,"maximum":500},"description":"Max constituents to return"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/logo":{"get":{"operationId":"companies-ticker-logo","summary":"Company Logo","description":"Company logo bytes, cached in R2.\n\nPUBLIC (no API key) so it can be embedded directly in an ``<img src>``. A real\nlogo is cached for a week; a placeholder only briefly (see below). This is what\n``CompanyDetail.logo_url`` points to. Serves a generic placeholder when we have\nno domain for the company (or the ticker is unknown), so the URL is always safe\nto render.\n\n``theme``/``format`` are honoured by Logo.dev; if no Logo.dev token is\nconfigured we fall back to scraped favicons, which have no variants — the\nrequest still succeeds, it just returns the default artwork.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"theme","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Colour variant for your background: auto, light, or dark."},{"name":"format","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Image format: png, webp, or jpg. png/webp carry transparency."},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":604800,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/metrics":{"get":{"operationId":"companies-ticker-metrics","summary":"Get Company Metrics","description":"Get calculated metrics for a company.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"period_end","in":"query","required":false,"schema":{"type":["string","null"],"format":"date"},"description":"Specific period end date"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.050","price_micro":50000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/metrics/history":{"get":{"operationId":"companies-ticker-metrics-history","summary":"Get Company Metrics History","description":"Per-period metrics over time + rolling averages.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"periods","in":"query","required":false,"schema":{"type":"integer","default":5,"minimum":1,"maximum":20},"description":"Number of FY periods to return"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/metrics/summary":{"get":{"operationId":"companies-ticker-metrics-summary","summary":"Get Company Metrics Summary","description":"Get summary of key metrics for a company.\n\nIncludes 5-year averages for dividend yield, EBITDA margin, and ROE\nwhen historical FY data is available — Fred McNaught's framework\nrelies on these averages over single-year snapshots.\n\nPass ``?period=ttm`` to value the company off trailing-twelve-month\nearnings instead of the latest fiscal year — important for fast growers\nwhose FY P/E understates the current run-rate.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Reporting basis. Default is latest FY; use 'ttm' for a trailing-twelve-month basis (valuation ratios off the latest 4 quarters)."},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.030","price_micro":30000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/news":{"get":{"operationId":"companies-ticker-news","summary":"Get Company News","description":"Get news articles and press releases for a company.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100},"description":"Max articles to return"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"minimum":0},"description":"Offset for pagination"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/prices":{"get":{"operationId":"companies-ticker-prices","summary":"Get Company Prices","description":"Historical OHLC price series for charts.\n\nWe hold **daily** OHLCV, so intervals are ``1d`` (default) or ``1wk``\n(resampled from daily) — open to every tier. ``range=1D`` (``interval=15m``)\nis real intraday data for **S&P 500 + ASX 200 only**, gated to paid tiers\n(free-tier keys get a 403 upsell); every other ticker returns an honest\nempty series, not an error. The window is anchored to the most recent\navailable bar/session (not wall-clock now) so series stay correct when the\nlatest data is a few days stale, or when a market is currently closed.\n\n**Price basis** (see ``adjustment`` in the response):\n\n- ``open`` / ``high`` / ``low`` / ``close`` are **adjusted for splits and\n  dividends**.\n- ``close_split_adjusted`` is the close **adjusted for splits only**. It is\n  on the same basis as ``price`` and ``prev_close`` from\n  ``/companies/quotes``.\n- A split rescales every earlier bar of both closes; a dividend lowers\n  every earlier ``close`` and leaves ``close_split_adjusted`` unchanged.\n  When either happens, the whole series is refetched and replaced, so the\n  history is always on one basis.\n- ``volume`` is split-adjusted. Intraday (``range=1D``) bars are as traded.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"1M"},"description":"Time range: 1W, 1M, 3M, 6M, 1Y, 5Y, MAX"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"1d"},"description":"Bar interval: 1d or 1wk"},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":300,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/sector-stats":{"get":{"operationId":"companies-ticker-sector-stats","summary":"Get Company Sector Stats","description":"Where a company sits within its sector for each aggregated metric.\n\nFor every metric we return the company's own value, the sector median, and\nits rank/percentile among peers that have the metric populated. Replaces\nclient-side \"vs peer median\" estimation. Rank is ascending (1 = lowest\nvalue); interpret direction per metric (low P/E vs high ROE).","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/companies/{ticker}/technicals":{"get":{"operationId":"companies-ticker-technicals","summary":"Get Company Technicals","description":"Technical indicators (RSI, MACD, SMAs, EMA-20, ATR) from daily prices.\n\nEverything here is derived from our own daily price history — no new data\nsource. Indicators that need more history than we hold (e.g. SMA-200 with\n< 200 bars) come back null rather than fabricated. ``beta`` is passed\nthrough from the company profile snapshot when available.","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string"}},{"name":"exchange","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Exchange of the listing (e.g. ASX, NYSE). Only needed when the same code trades on several exchanges; also accepted as ASX:CAT or CAT.AX."}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":300,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/data-issues":{"get":{"operationId":"data-issues","summary":"List Data Issues","description":"List data quality issues across the dataset, newest first.","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by status (open, retrying, fixing, resolved, wont_fix)"},{"name":"issue_type","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by issue type (e.g. source_divergence)"},{"name":"severity","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by severity (critical, warning, info)"},{"name":"ticker","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter to a single ticker"},{"name":"since","in":"query","required":false,"schema":{"type":["string","null"],"format":"date"},"description":"Only return issues created on/after this date"},{"name":"until","in":"query","required":false,"schema":{"type":["string","null"],"format":"date"},"description":"Only return issues created on/before this date"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"minimum":1}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":100}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_data-issues","responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/formulas":{"get":{"operationId":"formulas","summary":"List Formulas","description":"List all formula definitions.","parameters":[{"name":"category","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by category"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_formulas","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/formulas/categories":{"get":{"operationId":"formulas-categories","summary":"List Categories","description":"List all formula categories.","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_formulas-categories","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/formulas/{name}":{"get":{"operationId":"formulas-name","summary":"Get Formula By Name","description":"Get a specific formula definition by name.\n\nReturns the complete formula documentation including:\n- Display name and category\n- Formula expression\n- Description of what it measures\n- Required input fields\n- XBRL tags used for data extraction\n- Special handling notes\n- Example interpretation","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/fx/rates":{"get":{"operationId":"fx-rates","summary":"Get Fx Rate","description":"Latest stored FX rate (rate = quote ccy per 1 base ccy; AUDUSD = USD per AUD).\n\nFRED (Fed noon buying rate) preferred over the market-data fallback — the same\nrate the ``currency=AUD`` commodity conversions use, exposed so consumers\ncan convert anything else themselves.","parameters":[{"name":"pair","in":"query","required":false,"schema":{"type":"string","default":"AUDUSD"},"description":"Currency pair (base+quote, e.g. AUDUSD)"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_fx-rates","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/fx/rates/history":{"get":{"operationId":"fx-rates-history","summary":"Get Fx Rate History","description":"Daily FX history — one observation per date, fred preferred on collisions.","parameters":[{"name":"pair","in":"query","required":false,"schema":{"type":"string","default":"AUDUSD"},"description":"Currency pair (base+quote, e.g. AUDUSD)"},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"1Y"},"description":"Time range: 1W, 1M, 3M, 6M, 1Y, 5Y, MAX"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_fx-rates-history","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/indices":{"get":{"operationId":"indices","summary":"List Indices","description":"List all available market indices with member counts.","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_indices","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/indices/catalog":{"get":{"operationId":"indices-catalog","summary":"Get Index Catalog","description":"List the benchmark symbols we serve levels for (use these with /quotes).\n\nAnswers \"which index symbols should we use?\" — e.g. ``SPX``, ``IXIC``,\n``DJI``, ``VIX``, ``ASX200``, ``US10Y``. The /quotes endpoint also accepts\ncommon aliases (``^GSPC``, ``SP500``, ``^TNX`` …).","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_indices-catalog","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/indices/quotes":{"get":{"operationId":"indices-quotes","summary":"Get Index Quotes","description":"Batch benchmark levels with day change — one call for the index strip.\n\nDelayed / end-of-day (``is_delayed: true``). Accepts canonical symbols and\naliases (``^GSPC``→SPX, ``^TNX``→US10Y, …). Unknown symbols, or ones with no\nlevel history yet, are returned in ``not_found``.","parameters":[{"name":"symbols","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated index symbols"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_indices-quotes","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/indices/{index_name}":{"get":{"operationId":"indices-index-name","summary":"Get Index Members","description":"List all companies in a given market index (e.g., sp500).","parameters":[{"name":"index_name","in":"path","required":true,"schema":{"type":"string"}},{"name":"sector","in":"query","required":false,"schema":{"type":["string","null"]},"description":"Filter by sector"}],"x-price":{"price":"$0.020","price_micro":20000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/indices/{symbol}/prices":{"get":{"operationId":"indices-symbol-prices","summary":"Get Index Prices","description":"Historical level series for one benchmark (for sparklines / charts).\n\nSame windowing as ``/companies/{ticker}/prices``: daily bars, ``1d`` or\n``1wk`` (weekly resampled), no intraday. For a yield series (US10Y) only the\n``close`` is populated (OHLC are null).","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string"}},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"1M"},"description":"Time range: 1W, 1M, 3M, 6M, 1Y, 5Y, MAX"},{"name":"interval","in":"query","required":false,"schema":{"type":"string","default":"1d"},"description":"Bar interval: 1d or 1wk"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/news":{"get":{"operationId":"news","summary":"Get Bulk News","description":"Cached, source-consolidated news for a bulk list of tickers.\n\nOn-demand: a cold ticker is whitelisted and fetched in the background, so its\nfirst response may carry no articles (it appears in ``refreshing`` with a\n``202``). Once cached, duplicate reports of the same story across sources are\nmerged into a single item that lists every source.","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":"string"},"description":"Comma-separated ticker symbols (max 50)"},{"name":"symbols","in":"query","required":false,"schema":{"type":"string"},"description":"Alias for `tickers` (accepted for consumer convenience)."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"minimum":1,"maximum":50},"description":"Max consolidated stories per ticker"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_news","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/news/brand-image/{source}/{category}":{"get":{"operationId":"news-brand-image-source-category","summary":"Brand Image","description":"Branded feature image for a document-only news source, by category.\n\nPublic (no API key) so it can be embedded straight into an ``<img src>``;\ncached for a week. This is what `articles[].image_url` points to when\n`image_type == \"source_brand\"` — i.e. a source like ASX announcements, whose\nstories are PDFs and can never carry a scraped image of their own.","parameters":[{"name":"source","in":"path","required":true,"schema":{"type":"string"}},{"name":"category","in":"path","required":true,"schema":{"type":"string"}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":604800,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/news/feed":{"get":{"operationId":"news-feed","summary":"Get Market Feed","description":"Market-wide news feed — freshest stories across the whole collected universe.\n\nUnlike the ticker-scoped ``/news``, this isn't limited to a caller's list: it\nreturns the company stories we hold, each tagged with the ``sectors``\n(trending-theme ids) its ticker belongs to. Coverage spans every sector\nbecause the daily refresh keeps all trending-sector stocks collected.\n\nBy default the All feed is **sector-balanced** (round-robin across sectors) so\none busy sector can't crowd out the rest; pass ``sort=newest`` for strict\nreverse-chronological. Pass ``sector=<id>`` to get just one theme's stories in\na single call (no need to enumerate members). Same delayed/EOD posture and\nstory shape as ``/news``.","parameters":[{"name":"sector","in":"query","required":false,"schema":{"type":"string"},"description":"Narrow to one trending sector (theme id, e.g. `ai`, `energy`)."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"balanced"},"description":"`balanced` (default) rotates stories across sectors so the All feed isn't dominated by whichever sector published most recently; `newest` is strict reverse-chronological. Ignored when `sector` is set."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":50},"description":"Max stories"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_news-feed","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/news/market":{"get":{"operationId":"news-market","summary":"Get Market News","description":"Market-level commentary — stories that belong to the market, not a ticker.\n\nCurrently sourced from curated YouTube playlists (Bloomberg's *Wall Street\nWeek*), ingested daily. Items are videos: ``url`` opens the video,\n``image_url`` is its thumbnail, ``source`` records provenance. Same delayed\n/EOD posture as the rest of the API.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":50},"description":"Max items, newest first"}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_news-market","x-cache-ttl-s":900,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/news/source-icon/{domain}":{"get":{"operationId":"news-source-icon-domain","summary":"Source Icon","description":"Favicon for a news source domain — cached in R2, generic placeholder on miss.\n\nPublic (no API key) so it can be embedded directly in an ``<img src>``. A real\nicon is cached for a week, a placeholder for a minute. This is what\n`articles[].image_url` points to when a story has no thumbnail of its own.\nOnly domains our stored news links to are ever fetched; anything else gets\nthe placeholder without touching storage or the network.","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string"}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":604800,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/sectors":{"get":{"operationId":"sectors","summary":"List Sectors","description":"List sectors with the count of active companies in each.\n\nSectors are the canonical GICS names (e.g. ``Information Technology``,\n``Health Care``). ``/sectors/{sector}/stats`` also accepts provider-style or\naliased inputs (``Technology``, ``Healthcare``, ``Financial Services``) — they\ncanonicalize to the stored name — but these are the exact strings we store.","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_sectors","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/sectors/trending":{"get":{"operationId":"sectors-trending","summary":"Get Trending Themes","description":"Curated thematic baskets (AI, Semiconductors, EV & Battery…) ranked by\ntoday's move, each with its leading names.\n\nThemes are **curated editorial groupings**, not GICS sectors — a company can\nbelong to several, and membership lives in ``theme_registry`` tagged\n``source: \"curated\"``. For each theme we aggregate the *delayed / end-of-day*\nquotes of the members we cover:\n\n- ``change_pct`` — the basket's combined move. Cap-weighted when every covered\n  constituent has a market cap, otherwise equal-weighted; ``weighting`` says\n  which. (Weights may mix listing currencies for a cross-listed theme — an\n  accepted approximation; the moves themselves are currency-agnostic.)\n- ``change_pct_1m`` / ``change_pct_1y`` — the same cap-weighted basket over\n  1-month and 1-year windows (close-to-close, anchored to the latest data\n  date); ``null`` when a window can't be computed.\n- ``count`` vs ``members_total`` — covered constituents with a move vs the\n  curated registry size, so the coverage gap is visible, not hidden.\n- ``members`` — the FULL covered roster (every ``count`` constituent),\n  best-24h-move first; ``top_movers`` is the same list capped at the leaders.\n  Each row carries its own ``exchange``/``currency`` so ASX names render in A$,\n  plus ``tags`` — a curated, many-to-many sub-category *within* the theme\n  (e.g. \"Chips\" vs \"Labs\" within ``ai``; \"Gold\" vs \"Bitcoin\" within\n  ``store-of-value``). Only themes with a taxonomy defined populate it; ``[]``\n  elsewhere is an honest \"not curated yet\", not a per-row omission.\n\nThe list key is ``sectors`` to match the shape ALFRED's ``/api/sectors`` proxy\nalready consumes.","x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_sectors-trending","x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/sectors/{sector}/stats":{"get":{"operationId":"sectors-sector-stats","summary":"Get Sector Stats","description":"Per-metric distributions (min/p25/median/p75/max/mean) for a sector.\n\n``company_count`` is the sector's active-company count; each metric's\n``count`` is how many of those actually have that metric populated — a\ncompleteness signal, not a financial judgement.","parameters":[{"name":"sector","in":"path","required":true,"schema":{"type":"string"}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-cache-ttl-s":3600,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/stats/top-companies":{"get":{"operationId":"stats-top-companies","summary":"Top companies by market cap (live, cached 10 min)","description":"Return the top companies by market cap, server-cached for ~10 minutes.\n\nUses a curated mega-cap universe (Apple, Microsoft, NVIDIA, etc.) and\nreads the worker's last successful price and market-cap snapshot. Sorted by market cap desc.\nA cold cache returns an empty list while a refresh is queued.\nThe ``cache`` block exposes age/freshness so callers can decide whether\nto retry — aligns with the project's provenance mission.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"minimum":1,"maximum":40}}],"x-price":{"price":"$0.010","price_micro":10000,"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"x-mcp-tool":"stockmarket_stats-top-companies","x-cache-ttl-s":300,"responses":{"200":{"description":"Successful response (passed through from the provider).","headers":{"PAYMENT-RESPONSE":{"$ref":"#/components/headers/PaymentResponse"},"X-RTAPI-Price":{"$ref":"#/components/headers/Price"},"X-RTAPI-Cache":{"$ref":"#/components/headers/Cache"},"X-RTAPI-Cache-Layer":{"$ref":"#/components/headers/CacheLayer"},"X-RTAPI-Cache-TTL":{"$ref":"#/components/headers/CacheTtl"},"X-RTAPI-Data-Age":{"$ref":"#/components/headers/DataAge"},"X-RTAPI-Cached-At":{"$ref":"#/components/headers/CachedAt"},"X-RTAPI-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/Remaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"X-RTAPI-Quota-Source":{"$ref":"#/components/headers/QuotaSource"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"},"X-RTAPI-Gateway-Ms":{"$ref":"#/components/headers/GatewayMs"}},"content":{"application/json":{"schema":{}}}},"402":{"$ref":"#/components/responses/PaymentRequired"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}}},"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"BearerKey":{"type":"http","scheme":"bearer","description":"`rta_live_...` platform key"}},"headers":{"PaymentRequired":{"description":"Base64-encoded JSON x402 payment requirements (same as the body).","schema":{"type":"string"}},"PaymentResponse":{"description":"Base64-encoded JSON x402 settlement receipt (paid requests only).","schema":{"type":"string"}},"Price":{"description":"Per-request price of this endpoint, e.g. `$0.010` (charged only on a paid 2xx; covered by the key in API-key mode).","schema":{"type":"string"}},"Cache":{"description":"`HIT` or `MISS`.","schema":{"type":"string","enum":["HIT","MISS"]}},"CacheLayer":{"description":"On a hit: `edge` (this data centre's cache) or `global` (the quality probe's copy).","schema":{"type":"string","enum":["edge","global"]}},"CacheTtl":{"description":"The endpoint's cache TTL in seconds (cacheable endpoints only).","schema":{"type":"integer"}},"DataAge":{"description":"Seconds since the gateway took its copy from the provider (0 when the answer is live). The data's own timestamp, if any, is in the body.","schema":{"type":"integer"}},"CachedAt":{"description":"Unix milliseconds the gateway's copy was taken from the provider (hits only).","schema":{"type":"integer"}},"Remaining":{"description":"API-key mode: calls left in the key's current period (also `X-RateLimit-Remaining`).","schema":{"type":"integer"}},"RateLimitLimit":{"description":"API-key mode: the key's calls per period.","schema":{"type":"integer"}},"RateLimitReset":{"description":"API-key mode: unix seconds the period resets.","schema":{"type":"integer"}},"QuotaSource":{"description":"API-key mode: `do` when the quota figures are the counter's exact answer, `memo` when a cached answer was served ahead of the count (figures then approximate by a few calls; a 429 is always exact).","schema":{"type":"string","enum":["do","memo"]}},"ServerTiming":{"description":"One entry per phase the request ran (`kv`, `auth`, `quota`, `cache`, `upstream`, `settle`) and `total`, the gateway's time to first byte; `desc` names the source (`cache;dur=3;desc=\"edge\"`).","schema":{"type":"string"}},"GatewayMs":{"description":"The gateway's own time to first byte: `total` minus `upstream` and `settle`.","schema":{"type":"integer"}}},"responses":{"PaymentRequired":{"description":"Payment required. Retry with an x402 `PAYMENT-SIGNATURE` (or `X-PAYMENT`) header for one of `accepts`, or with an API key.","headers":{"PAYMENT-REQUIRED":{"$ref":"#/components/headers/PaymentRequired"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"Error":{"description":"Error envelope.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"PaymentRequirements":{"type":"object","required":["scheme","network","payTo","asset"],"properties":{"scheme":{"type":"string","const":"exact"},"network":{"type":"string","examples":["eip155:8453"]},"payTo":{"type":"string"},"price":{"type":"string","examples":["$0.010"]},"asset":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"resource":{"type":"string","format":"uri"},"description":{"type":"string"},"mimeType":{"type":"string"}}},"PaymentRequired":{"type":"object","required":["x402Version","accepts","error"],"properties":{"x402Version":{"type":"integer","const":2},"accepts":{"type":"array","items":{"$ref":"#/components/schemas/PaymentRequirements"}},"error":{"type":"string"},"alternatives":{"type":"object","properties":{"api_key_purchase":{"type":"string","format":"uri"},"docs":{"type":"string","format":"uri"}}}}},"Error":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"}}}}},"x-x402":{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"externalDocs":{"url":"https://realtimeapi.ai/feeds/stockmarket"}}