{"ok":true,"providers":[{"id":"finnhub","configured":true,"freeTier":"60 calls/min, 30 calls/sec burst. PERSONAL USE ONLY - see notes.","notes":"Realtime quotes + un-gated /calendar/earnings. NOT candles, NOT dividends. LICENCE: their ToS applies personal-use to every plan, paid ones included, and bars business use 'even internally without a written approval' plus any redistribution. Un-gated on a free key is not the same as licensed - the calendar does NOT use this.","envVar":"FINNHUB_API_KEY"},{"id":"twelvedata","configured":false,"freeTier":"8 credits/min, 800/day.","notes":"The only free tier with genuine realtime US equities + OHLC. Owns candles.","envVar":"TWELVE_DATA_API_KEY"},{"id":"alphavantage","configured":true,"freeTier":"25 requests/DAY. Cache aggressively.","notes":"DIVIDENDS/SPLITS verified free. NEWS_SENTIMENT free (limit up to 1000/call).","envVar":"ALPHAVANTAGE_API_KEY"},{"id":"massive","configured":false,"freeTier":"5 calls/min, EOD only, 2yr history.","notes":"Ex-Polygon.io. Dividends included on all Stocks plans. EOD - cannot drive live quotes.","envVar":"MASSIVE_API_KEY"},{"id":"marketaux","configured":false,"freeTier":"100 requests/day, 3 articles per request, snippets only.","notes":"Finance-native news with per-entity sentiment scores.","envVar":"MARKETAUX_API_KEY"},{"id":"coingecko","configured":false,"freeTier":"100 calls/min, 10k credits/month.","notes":"Demo key uses header x-cg-demo-api-key on api.coingecko.com. Pro is a DIFFERENT host. Attribution required.","envVar":"COINGECKO_API_KEY"},{"id":"blockscout","configured":true,"freeTier":"Keyless: 3 requests/MINUTE, by IP. Tight - cache everything.","notes":"Official Robinhood Chain explorer; Etherscan-compatible /api, REST /api/v2, JSON-RPC at /api/eth-rpc. Note module=proxy is unsupported here - use the RPC for eth_call. WARNING: Blockscout docs carry a 'per-instance API will be deprecated July 1' notice, so this baseUrl has a shelf life. Successor is the PRO API (https://api.blockscout.com/v2/api?chain_id=4663), but chain 4663 is not yet in its published supported-chains list - verify with a key before migrating.","envVar":null},{"id":"alchemy","configured":true,"freeTier":"Unverified - confirm the CU/month allowance on alchemy.com/pricing.","notes":"Robinhood's officially recommended node provider. Use this for production reads/writes: the public rpc.mainnet.chain.robinhood.com endpoint is rate-limited and Robinhood's own docs say it is not for production.","envVar":"ALCHEMY_API_KEY"},{"id":"geckoterminal","configured":true,"freeTier":"30 calls/min, no key.","notes":"Onchain DEX pools/prices - useful for tokenized-stock pool pricing.","envVar":null},{"id":"nasdaq","configured":true,"freeTier":"Keyless. No published limit; none observed. Unofficial, so assume nothing.","notes":"Backs the calendar. Chosen because it is the only source that is BOTH keyless AND not barred from commercial use by a free-tier licence - see the licence trap above. Covers earnings/economicevents/dividends/splits/ipo from one origin. TRAPS: (1) it is UNDOCUMENTED - no SLA, no published API terms, and the shape can change without notice, so all parsing is isolated in providers/calendar.ts and every failure falls back to MOCK_CALENDAR rather than 500ing. (2) A default fetch/curl User-Agent gets an EMPTY response - a browser UA is required. (3) Values arrive carrying literal '&nbsp;' entities. (4) Akamai fronts it and commonly blocks datacenter IPs, so it can work locally and fail on Railway - /api/health reports which way it went. Get legal sign-off before commercial launch.","envVar":null}]}