{"openapi":"3.1.0","info":{"title":"Maatsii Real-time Chart Frames API for Claude.ai (Canonical c1..c200, Zero-Cache, Full Chartmap)","version":"8.0.0-claude-ai","description":"Maatsii serves real-time annotated chart frames (JPEG, 720x1280) for 200 financial charts.\n\nOPTIMIZED FOR CLAUDE.AI (Anthropic):\n- Claude.ai may cache image URLs in its internal processing.\n- Even with Cloudflare configured for zero-cache, Claude may reuse images unless the URL changes.\n- CRITICAL: The ONLY reliable way to guarantee fresh frames is making each URL unique per request.\n\nMANDATORY REALTIME REQUIREMENTS:\n- Chart frames update continuously with live market data\n- Every request MUST fetch the absolute latest frame\n- All caching MUST be bypassed end-to-end\n\nE2E ZERO-CACHE PROTOCOL (STRICTLY REQUIRED):\n1) ALWAYS append a unique cachebuster query parameter: ?cb={unique}\n   - Generate a fresh UUID, random string, or incrementing counter for EVERY request\n   - NEVER reuse cb values across requests\n   - Recommended format: claude-{uuid} or claude-{timestamp}-{random}\n2) Include anti-cache headers (best-effort, as some LLM environments may not pass headers):\n   - Cache-Control: no-cache, no-store, max-age=0\n   - Pragma: no-cache\n3) Do NOT rely on CDN headers for freshness validation\n4) PREFERRED freshness verification: Visually inspect the chart's embedded timestamp/watermark\n\nCANONICAL IDENTIFIER RULES:\n- Use ONLY lowercase c1 through c200\n- Ticker symbol aliases are excluded to prevent mapping errors\n- Enforce strict canonical naming\n\nDiscovery endpoints:\n- Human documentation: https://api.maatsii.com/llms.txt\n- Machine schema: https://api.maatsii.com/openapi.json","contact":{"name":"Maatsii API Support","url":"https://api.maatsii.com","email":"api@maatsii.com"},"x-logo":{"url":"https://api.maatsii.com/logo.png"},"x-related-documentation":{"aiAgentDiscovery":"https://api.maatsii.com/llms.txt","humanReadable":"https://api.maatsii.com/llm.txt","canonicalSchema":"https://api.maatsii.com/openapi.json"}},"servers":[{"url":"https://api.maatsii.com","description":"Production endpoint (Cloudflare CDN with zero-cache headers; Claude MUST still use unique cb per request)"}],"tags":[{"name":"Frames","description":"Realtime JPEG chart frames (primary endpoint for Claude.ai)"}],"paths":{"/{id}.jpg":{"get":{"tags":["Frames"],"summary":"Fetch realtime chart frame (binary JPEG) — Claude.ai canonical endpoint","description":"Returns the absolute latest annotated chart frame as binary JPEG image.\n\nCLAUDE.AI USAGE REQUIREMENTS:\n- id parameter MUST use canonical format: c1 to c200 (lowercase only)\n- cb query parameter is MANDATORY and MUST be unique for every single request\n- Do NOT reuse cb values under any circumstances\n- Best-effort: Send no-cache headers (some LLM fetchers may not honor headers)\n- Verify freshness by examining the chart's visible timestamp/annotation\n\nClaude should ALWAYS generate a new unique cb value for each request to guarantee realtime data.\n\nIMPORTANT: Always append ?raw=1 to get direct binary JPEG. Without ?raw=1, browsers receive an HTML dashboard page with chart viewer, refresh button, and documentation links.","operationId":"getRealtimeChartFrameJpeg","parameters":[{"name":"id","in":"path","required":true,"description":"Canonical chart identifier: c1, c2, ... c200 (lowercase only). Do not use ticker symbols.","schema":{"type":"string","pattern":"^c([1-9]|[1-9][0-9]|1[0-9]{2}|200)$"},"examples":{"nq_futures":{"value":"c1","summary":"NQ futures 100-tick chart"},"nvda_stock":{"value":"c175","summary":"NVIDIA 1H chart"},"high_beta_etf":{"value":"c200","summary":"CRWV 1H chart"}}},{"name":"cb","in":"query","required":true,"description":"Cachebuster parameter. MUST be unique per request. Generate UUID, random string, or timestamp-based value. NEVER reuse values. This is the primary cache-busting mechanism for Claude.ai.","schema":{"type":"string","minLength":8},"examples":{"uuid_format":{"value":"claude-7f9c2e2d-3a2b-4d53-a1c1-9d1f0c0b2a11","summary":"UUID-based (recommended)"},"timestamp_random":{"value":"claude-1707513234-r9KQ2","summary":"Timestamp + random suffix"},"counter_format":{"value":"claude-req-0000001234","summary":"Incrementing counter"},"simple_random":{"value":"claude-X8mQ2pL9","summary":"Simple random string"}}},{"name":"Cache-Control","in":"header","required":false,"description":"Anti-cache directive (best-effort; cb parameter is the primary mechanism). Some LLM request handlers may not pass headers through.","schema":{"type":"string","default":"no-cache, no-store, max-age=0, must-revalidate"}},{"name":"Pragma","in":"header","required":false,"description":"Legacy HTTP/1.0 no-cache directive (best-effort).","schema":{"type":"string","default":"no-cache"}},{"name":"raw","in":"query","required":false,"description":"Set to 1 to get direct binary JPEG. Without this, browsers receive an HTML dashboard page. AI agents and chatbots MUST use ?raw=1 for direct image data.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"Success: Realtime JPEG chart frame returned as binary image data. The frame contains the absolute latest market data and technical annotations. Freshness can be verified by examining the timestamp visible in the chart image.","headers":{"Content-Type":{"description":"Image MIME type (always image/jpeg for chart frames)","schema":{"type":"string","example":"image/jpeg"}},"Content-Disposition":{"description":"Suggested filename for browser/client handling","schema":{"type":"string","example":"inline; filename=\"c175.jpg\""}},"Cache-Control":{"description":"Server-side cache directives (typically no-store, no-cache). Client MUST still use unique cb parameter.","schema":{"type":"string","example":"no-store, no-cache, must-revalidate, max-age=0"}},"Pragma":{"description":"Legacy no-cache directive","schema":{"type":"string","example":"no-cache"}}},"content":{"image/jpeg":{"schema":{"type":"string","format":"binary","description":"Binary JPEG image data (720x1280 pixels, annotated TradingView chart)"}}}},"400":{"description":"Bad request: Invalid chart ID format or missing required cb parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Invalid chart ID format","hint":"Use canonical format c1..c200 (lowercase)"}}}},"404":{"description":"Not found: Chart ID does not exist (must be c1 through c200)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Chart not found","hint":"Valid range is c1 to c200"}}}},"503":{"description":"Service temporarily unavailable: Frame generation backend is temporarily offline or overloaded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"Frame temporarily unavailable","hint":"Retry after brief delay"}}}}},"x-openai-isConsequential":false,"x-claude-notes":{"cache_busting":"Claude MUST generate a unique cb value for EVERY request. Reusing cb values will result in stale cached images even if Cloudflare is configured for zero-cache.","freshness_verification":"The most reliable freshness indicator is the timestamp/annotation visible within the chart image itself. Visual inspection is recommended.","url_generation":"Always construct the full URL with both canonical ID and unique cb parameter before making the request.","example_workflow":"1) User asks for chart c175. 2) Claude generates unique cb (e.g., UUID). 3) Claude constructs URL with cb parameter. 4) Claude fetches image. 5) Claude presents image to user."}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message"},"hint":{"type":"string","description":"Optional suggestion for resolving the error"},"code":{"type":"string","description":"Optional machine-readable error code"}}}}},"x-asset_groups":{"description":"33 organized asset groups covering all major financial markets","count":33,"groups":[{"id":"01","name":"NQ","description":"NASDAQ-100 Futures (E-mini)"},{"id":"02","name":"ES","description":"S&P 500 Futures (E-mini)"},{"id":"03","name":"YM","description":"Dow Jones Futures (E-mini)"},{"id":"04","name":"RTY","description":"Russell 2000 Futures (E-mini)"},{"id":"05","name":"Treasuries","description":"US Treasury Futures (ZN, ZB, ZF, UB)"},{"id":"06","name":"Rates & Futures","description":"Interest Rate Futures"},{"id":"07","name":"Rates & Futures 2","description":"Additional Interest Rate Products"},{"id":"08","name":"Fixed Income","description":"Fixed Income Securities"},{"id":"09","name":"Fixed Income 2","description":"Additional Fixed Income"},{"id":"10","name":"Curve","description":"Yield Curve Analysis (US02Y, US10Y, US30Y)"},{"id":"11","name":"Credit","description":"Credit Markets (HYG, LQD, JNK)"},{"id":"12","name":"Dollar","description":"US Dollar Index (DXY)"},{"id":"13","name":"FX Majors","description":"Major Currency Pairs (EUR, JPY, GBP, AUD)"},{"id":"14","name":"FX Crosses","description":"Currency Cross Pairs"},{"id":"15","name":"FX Macro","description":"Macro FX Analysis"},{"id":"16","name":"Crypto","description":"Cryptocurrency (BTC, ETH, SOL)"},{"id":"17","name":"Crypto Breadth","description":"Crypto Market Breadth Indicators"},{"id":"18","name":"CL","description":"Crude Oil Futures (WTI)"},{"id":"19","name":"Energy","description":"Energy Commodities (Brent, Nat Gas, RBOB)"},{"id":"20","name":"Metals","description":"Precious & Industrial Metals (Gold, Silver, Copper)"},{"id":"21","name":"Metals Spreads","description":"Metal Spread Analysis"},{"id":"22","name":"Agriculture","description":"Agricultural Futures (Corn, Soybeans, Wheat)"},{"id":"23","name":"Macro","description":"Macro Market Analysis & Correlations"},{"id":"24","name":"Macro Breadth","description":"Macro Breadth Indicators"},{"id":"25","name":"Global","description":"Global Equity Indices (DAX, FTSE, Nikkei)"},{"id":"26","name":"Global Breadth","description":"Global Market Breadth"},{"id":"27","name":"ETF Rotation","description":"ETF Rotation Analysis (SPY, QQQ, IWM)"},{"id":"28","name":"ETF Risk","description":"ETF Risk Indicators"},{"id":"29","name":"Semis","description":"Semiconductor Stocks & ETFs (NVDA, AMD, SOXX)"},{"id":"30","name":"MegaCap","description":"Mega-Cap Tech Stocks (AAPL, MSFT, GOOGL)"},{"id":"31","name":"AI","description":"AI & ML Stocks (NVDA, PLTR, SMCI)"},{"id":"32","name":"High-Beta","description":"High-Beta Momentum Stocks"},{"id":"33","name":"Volatility","description":"Volatility Indices (VIX, VVIX, MOVE)"}]},"x-chartmap":{"description":"Static chart-map for Claude cold-start. 200 charts across 25 asset groups. Symbols use TradingView format. Intervals: T=ticks, S=seconds, M=minutes, H=hours, D=days, W=weeks, MO=months.","total":200,"groups":["01 NQ","02 ES","03 YM","04 RTY & Index Spreads","05 FI Short-Term","06 FI 10-Year","07 FI Long-Term","08 Yield Curve & Credit","09 Dollar & DXY","10 FX EUR & GBP","11 FX JPY & Other","12 FX Crosses","13 Crypto BTC","14 Crypto ETH","15 Crypto Market & Alts","16 Gold","17 Energy","18 Metals & Agriculture","19 ETFs & Rotation","20 Semiconductors","21 Mega-Cap Tech","22 High-Beta & Speculative","23 Volatility","24 Market Breadth","25 Global & Macro"],"charts":{"c1":{"symbol":"NQ1!","interval":"100T","group":"01 NQ","url":"https://api.maatsii.com/c1.jpg"},"c2":{"symbol":"NQ1!","interval":"1000T","group":"01 NQ","url":"https://api.maatsii.com/c2.jpg"},"c3":{"symbol":"NQ1!","interval":"1M","group":"01 NQ","url":"https://api.maatsii.com/c3.jpg"},"c4":{"symbol":"NQ1!","interval":"15M","group":"01 NQ","url":"https://api.maatsii.com/c4.jpg"},"c5":{"symbol":"NQ1!","interval":"1H","group":"01 NQ","url":"https://api.maatsii.com/c5.jpg"},"c6":{"symbol":"NQ1!","interval":"4H","group":"01 NQ","url":"https://api.maatsii.com/c6.jpg"},"c7":{"symbol":"ES1!","interval":"100T","group":"02 ES","url":"https://api.maatsii.com/c7.jpg"},"c8":{"symbol":"ES1!","interval":"1000T","group":"02 ES","url":"https://api.maatsii.com/c8.jpg"},"c9":{"symbol":"ES1!","interval":"1M","group":"02 ES","url":"https://api.maatsii.com/c9.jpg"},"c10":{"symbol":"ES1!","interval":"15M","group":"02 ES","url":"https://api.maatsii.com/c10.jpg"},"c11":{"symbol":"ES1!","interval":"1H","group":"02 ES","url":"https://api.maatsii.com/c11.jpg"},"c12":{"symbol":"ES1!","interval":"4H","group":"02 ES","url":"https://api.maatsii.com/c12.jpg"},"c13":{"symbol":"GC1!","interval":"15M","group":"16 Gold","url":"https://api.maatsii.com/c13.jpg"},"c14":{"symbol":"GC1!","interval":"1H","group":"16 Gold","url":"https://api.maatsii.com/c14.jpg"},"c15":{"symbol":"CL1!","interval":"1M","group":"17 Energy","url":"https://api.maatsii.com/c15.jpg"},"c16":{"symbol":"CL1!","interval":"15M","group":"17 Energy","url":"https://api.maatsii.com/c16.jpg"},"c17":{"symbol":"CL1!","interval":"30M","group":"17 Energy","url":"https://api.maatsii.com/c17.jpg"},"c18":{"symbol":"CL1!","interval":"1H","group":"17 Energy","url":"https://api.maatsii.com/c18.jpg"},"c19":{"symbol":"CL1!","interval":"4H","group":"17 Energy","url":"https://api.maatsii.com/c19.jpg"},"c20":{"symbol":"CL1!","interval":"6H","group":"17 Energy","url":"https://api.maatsii.com/c20.jpg"},"c21":{"symbol":"CL1!","interval":"1D","group":"17 Energy","url":"https://api.maatsii.com/c21.jpg"},"c22":{"symbol":"TIP/US10Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c22.jpg"},"c23":{"symbol":"TLT/LQD","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c23.jpg"},"c24":{"symbol":"GC1!","interval":"1M","group":"16 Gold","url":"https://api.maatsii.com/c24.jpg"},"c25":{"symbol":"MOVE","interval":"1D","group":"23 Volatility","url":"https://api.maatsii.com/c25.jpg"},"c26":{"symbol":"EWG/DAX","interval":"10M","group":"25 Global & Macro","url":"https://api.maatsii.com/c26.jpg"},"c27":{"symbol":"FXI/BTCUSD","interval":"15M","group":"25 Global & Macro","url":"https://api.maatsii.com/c27.jpg"},"c28":{"symbol":"TIP/DXY","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c28.jpg"},"c29":{"symbol":"VIX","interval":"4H","group":"23 Volatility","url":"https://api.maatsii.com/c29.jpg"},"c30":{"symbol":"TNX","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c30.jpg"},"c31":{"symbol":"XLK","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c31.jpg"},"c32":{"symbol":"SOXX/SMH","interval":"1H","group":"20 Semiconductors","url":"https://api.maatsii.com/c32.jpg"},"c33":{"symbol":"VIX","interval":"15M","group":"23 Volatility","url":"https://api.maatsii.com/c33.jpg"},"c34":{"symbol":"SPYG/SPYV","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c34.jpg"},"c35":{"symbol":"LQD/IEF","interval":"10M","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c35.jpg"},"c36":{"symbol":"USDJPY","interval":"1000T","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c36.jpg"},"c37":{"symbol":"HYG","interval":"4H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c37.jpg"},"c38":{"symbol":"ZB1!","interval":"1H","group":"07 FI Long-Term","url":"https://api.maatsii.com/c38.jpg"},"c39":{"symbol":"NVDA/NQ1","interval":"3M","group":"20 Semiconductors","url":"https://api.maatsii.com/c39.jpg"},"c40":{"symbol":"JNK/HYG","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c40.jpg"},"c41":{"symbol":"NVDA/ES1","interval":"30M","group":"20 Semiconductors","url":"https://api.maatsii.com/c41.jpg"},"c42":{"symbol":"SOFR/US02Y","interval":"5M","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c42.jpg"},"c43":{"symbol":"XLC/XLK/XLV","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c43.jpg"},"c44":{"symbol":"SMCI/NVDA/TSM","interval":"15M","group":"20 Semiconductors","url":"https://api.maatsii.com/c44.jpg"},"c45":{"symbol":"GS/JPM/XLF","interval":"4H","group":"24 Market Breadth","url":"https://api.maatsii.com/c45.jpg"},"c46":{"symbol":"MOVE/US02Y/US10Y","interval":"1H","group":"25 Global & Macro","url":"https://api.maatsii.com/c46.jpg"},"c47":{"symbol":"HYG/TLT/US02Y","interval":"15M","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c47.jpg"},"c48":{"symbol":"RSP/SPY/IWM","interval":"30M","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c48.jpg"},"c49":{"symbol":"YM1!","interval":"100T","group":"03 YM","url":"https://api.maatsii.com/c49.jpg"},"c50":{"symbol":"YM1!","interval":"1000T","group":"03 YM","url":"https://api.maatsii.com/c50.jpg"},"c51":{"symbol":"YM1!","interval":"15M","group":"03 YM","url":"https://api.maatsii.com/c51.jpg"},"c52":{"symbol":"YM1!","interval":"1H","group":"03 YM","url":"https://api.maatsii.com/c52.jpg"},"c53":{"symbol":"RTY1!","interval":"100T","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c53.jpg"},"c54":{"symbol":"RTY1!","interval":"1000T","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c54.jpg"},"c55":{"symbol":"RTY1!","interval":"15M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c55.jpg"},"c56":{"symbol":"RTY1!","interval":"1H","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c56.jpg"},"c57":{"symbol":"ZB1!","interval":"15M","group":"07 FI Long-Term","url":"https://api.maatsii.com/c57.jpg"},"c58":{"symbol":"GC1!","interval":"100T","group":"16 Gold","url":"https://api.maatsii.com/c58.jpg"},"c59":{"symbol":"ZB1!","interval":"4H","group":"07 FI Long-Term","url":"https://api.maatsii.com/c59.jpg"},"c60":{"symbol":"ZN1!","interval":"15M","group":"06 FI 10-Year","url":"https://api.maatsii.com/c60.jpg"},"c61":{"symbol":"ZN1!","interval":"1H","group":"06 FI 10-Year","url":"https://api.maatsii.com/c61.jpg"},"c62":{"symbol":"ZN1!","interval":"4H","group":"06 FI 10-Year","url":"https://api.maatsii.com/c62.jpg"},"c63":{"symbol":"ZF1!","interval":"15M","group":"05 FI Short-Term","url":"https://api.maatsii.com/c63.jpg"},"c64":{"symbol":"ZF1!","interval":"1H","group":"05 FI Short-Term","url":"https://api.maatsii.com/c64.jpg"},"c65":{"symbol":"UB1!","interval":"1H","group":"07 FI Long-Term","url":"https://api.maatsii.com/c65.jpg"},"c66":{"symbol":"UB1!","interval":"4H","group":"07 FI Long-Term","url":"https://api.maatsii.com/c66.jpg"},"c67":{"symbol":"BTCUSD","interval":"1M","group":"13 Crypto BTC","url":"https://api.maatsii.com/c67.jpg"},"c68":{"symbol":"BTCUSD","interval":"5M","group":"13 Crypto BTC","url":"https://api.maatsii.com/c68.jpg"},"c69":{"symbol":"BTCUSD","interval":"1H","group":"13 Crypto BTC","url":"https://api.maatsii.com/c69.jpg"},"c70":{"symbol":"BTCUSD","interval":"4H","group":"13 Crypto BTC","url":"https://api.maatsii.com/c70.jpg"},"c71":{"symbol":"BTCUSD","interval":"1D","group":"13 Crypto BTC","url":"https://api.maatsii.com/c71.jpg"},"c72":{"symbol":"ETHUSD","interval":"1M","group":"14 Crypto ETH","url":"https://api.maatsii.com/c72.jpg"},"c73":{"symbol":"ETHUSD","interval":"5M","group":"14 Crypto ETH","url":"https://api.maatsii.com/c73.jpg"},"c74":{"symbol":"ETHUSD","interval":"1H","group":"14 Crypto ETH","url":"https://api.maatsii.com/c74.jpg"},"c75":{"symbol":"ETHUSD","interval":"4H","group":"14 Crypto ETH","url":"https://api.maatsii.com/c75.jpg"},"c76":{"symbol":"ETHUSD","interval":"1D","group":"14 Crypto ETH","url":"https://api.maatsii.com/c76.jpg"},"c77":{"symbol":"DXY","interval":"15M","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c77.jpg"},"c78":{"symbol":"DXY","interval":"1H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c78.jpg"},"c79":{"symbol":"DXY","interval":"1D","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c79.jpg"},"c80":{"symbol":"DX1!","interval":"15M","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c80.jpg"},"c81":{"symbol":"DX1!","interval":"1H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c81.jpg"},"c82":{"symbol":"6E1","interval":"15M","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c82.jpg"},"c83":{"symbol":"6E1","interval":"1H","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c83.jpg"},"c84":{"symbol":"6E1","interval":"1D","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c84.jpg"},"c85":{"symbol":"6B1","interval":"15M","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c85.jpg"},"c86":{"symbol":"6B1","interval":"1H","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c86.jpg"},"c87":{"symbol":"6J1","interval":"15M","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c87.jpg"},"c88":{"symbol":"6J1","interval":"1H","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c88.jpg"},"c89":{"symbol":"6A1","interval":"15M","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c89.jpg"},"c90":{"symbol":"6A1","interval":"1H","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c90.jpg"},"c91":{"symbol":"EURUSD","interval":"5M","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c91.jpg"},"c92":{"symbol":"EURUSD","interval":"1H","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c92.jpg"},"c93":{"symbol":"GBPUSD","interval":"5M","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c93.jpg"},"c94":{"symbol":"GBPUSD","interval":"1H","group":"10 FX EUR & GBP","url":"https://api.maatsii.com/c94.jpg"},"c95":{"symbol":"AUDUSD","interval":"5M","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c95.jpg"},"c96":{"symbol":"AUDUSD","interval":"1H","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c96.jpg"},"c97":{"symbol":"USDJPY","interval":"5M","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c97.jpg"},"c98":{"symbol":"ETHBTC","interval":"15M","group":"14 Crypto ETH","url":"https://api.maatsii.com/c98.jpg"},"c99":{"symbol":"RTY1!/ES1","interval":"15M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c99.jpg"},"c100":{"symbol":"YM1!/ES1","interval":"15M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c100.jpg"},"c101":{"symbol":"ZN1!/UB1","interval":"1H","group":"06 FI 10-Year","url":"https://api.maatsii.com/c101.jpg"},"c102":{"symbol":"DXY/ES1","interval":"30M","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c102.jpg"},"c103":{"symbol":"DXY/NQ1","interval":"30M","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c103.jpg"},"c104":{"symbol":"DXY/6E1/6J1/6B1/6A1","interval":"1D","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c104.jpg"},"c105":{"symbol":"YM1!","interval":"1M","group":"03 YM","url":"https://api.maatsii.com/c105.jpg"},"c106":{"symbol":"YM1!","interval":"4H","group":"03 YM","url":"https://api.maatsii.com/c106.jpg"},"c107":{"symbol":"RTY1!","interval":"1M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c107.jpg"},"c108":{"symbol":"RTY1!","interval":"4H","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c108.jpg"},"c109":{"symbol":"UB1!","interval":"15M","group":"07 FI Long-Term","url":"https://api.maatsii.com/c109.jpg"},"c110":{"symbol":"ZN1!","interval":"1D","group":"06 FI 10-Year","url":"https://api.maatsii.com/c110.jpg"},"c111":{"symbol":"ZB1!","interval":"1D","group":"07 FI Long-Term","url":"https://api.maatsii.com/c111.jpg"},"c112":{"symbol":"ZF1!","interval":"4H","group":"05 FI Short-Term","url":"https://api.maatsii.com/c112.jpg"},"c113":{"symbol":"ZF1!","interval":"4H","group":"05 FI Short-Term","url":"https://api.maatsii.com/c113.jpg"},"c114":{"symbol":"US10Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c114.jpg"},"c115":{"symbol":"6C1","interval":"1H","group":"11 FX JPY & Other","url":"https://api.maatsii.com/c115.jpg"},"c116":{"symbol":"6S1","interval":"1H","group":"12 FX Crosses","url":"https://api.maatsii.com/c116.jpg"},"c117":{"symbol":"USDCAD","interval":"1H","group":"12 FX Crosses","url":"https://api.maatsii.com/c117.jpg"},"c118":{"symbol":"USDCHF","interval":"1H","group":"12 FX Crosses","url":"https://api.maatsii.com/c118.jpg"},"c119":{"symbol":"BTCUSD","interval":"1000T","group":"13 Crypto BTC","url":"https://api.maatsii.com/c119.jpg"},"c120":{"symbol":"ETHUSD","interval":"1000T","group":"14 Crypto ETH","url":"https://api.maatsii.com/c120.jpg"},"c121":{"symbol":"BTC.D","interval":"1H","group":"13 Crypto BTC","url":"https://api.maatsii.com/c121.jpg"},"c122":{"symbol":"DXY1!","interval":"4H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c122.jpg"},"c123":{"symbol":"GC1!","interval":"1000T","group":"16 Gold","url":"https://api.maatsii.com/c123.jpg"},"c124":{"symbol":"GC1!","interval":"1000T","group":"16 Gold","url":"https://api.maatsii.com/c124.jpg"},"c125":{"symbol":"SPY/IWM","interval":"5M","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c125.jpg"},"c126":{"symbol":"SPY/QQQ","interval":"5M","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c126.jpg"},"c127":{"symbol":"SPY/RSP","interval":"5M","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c127.jpg"},"c128":{"symbol":"SPY/XLP","interval":"5M","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c128.jpg"},"c129":{"symbol":"SPY/SMH","interval":"5M","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c129.jpg"},"c130":{"symbol":"SPLV/SPHB","interval":"1H","group":"24 Market Breadth","url":"https://api.maatsii.com/c130.jpg"},"c131":{"symbol":"XLF/XLK","interval":"1H","group":"24 Market Breadth","url":"https://api.maatsii.com/c131.jpg"},"c132":{"symbol":"SPY/XLE","interval":"1H","group":"24 Market Breadth","url":"https://api.maatsii.com/c132.jpg"},"c133":{"symbol":"HYG/TLT","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c133.jpg"},"c134":{"symbol":"HYG/IEF","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c134.jpg"},"c135":{"symbol":"VIX/VIX3M","interval":"5M","group":"23 Volatility","url":"https://api.maatsii.com/c135.jpg"},"c136":{"symbol":"VIX9D/VIX","interval":"5M","group":"23 Volatility","url":"https://api.maatsii.com/c136.jpg"},"c137":{"symbol":"VVIX/VIX","interval":"1H","group":"23 Volatility","url":"https://api.maatsii.com/c137.jpg"},"c138":{"symbol":"UVXY/SVIX","interval":"1H","group":"23 Volatility","url":"https://api.maatsii.com/c138.jpg"},"c139":{"symbol":"US02Y/US10Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c139.jpg"},"c140":{"symbol":"US03M/US10Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c140.jpg"},"c141":{"symbol":"US10Y/US30Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c141.jpg"},"c142":{"symbol":"US10Y/US30Y","interval":"1D","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c142.jpg"},"c143":{"symbol":"TLT/IEF","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c143.jpg"},"c144":{"symbol":"HYG/LQD","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c144.jpg"},"c145":{"symbol":"DXY/CL1","interval":"1H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c145.jpg"},"c146":{"symbol":"DXY/GC1","interval":"1H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c146.jpg"},"c147":{"symbol":"DXY/EEM","interval":"1D","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c147.jpg"},"c148":{"symbol":"DXY/BTCUSD","interval":"1H","group":"09 Dollar & DXY","url":"https://api.maatsii.com/c148.jpg"},"c149":{"symbol":"RB1!/CL1","interval":"1H","group":"17 Energy","url":"https://api.maatsii.com/c149.jpg"},"c150":{"symbol":"HO1!/CL1!","interval":"1H","group":"17 Energy","url":"https://api.maatsii.com/c150.jpg"},"c151":{"symbol":"HO1!/CL1","interval":"1H","group":"17 Energy","url":"https://api.maatsii.com/c151.jpg"},"c152":{"symbol":"NG1!/CL1","interval":"1H","group":"17 Energy","url":"https://api.maatsii.com/c152.jpg"},"c153":{"symbol":"GC1!/SI1","interval":"1D","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c153.jpg"},"c154":{"symbol":"HG1!/GC1","interval":"1H","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c154.jpg"},"c155":{"symbol":"ZS1!/ZC1","interval":"1D","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c155.jpg"},"c156":{"symbol":"ZC1!/ZC2!","interval":"1H","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c156.jpg"},"c157":{"symbol":"ZS1!/ZS2!","interval":"1H","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c157.jpg"},"c158":{"symbol":"DEU40/SPX500USD","interval":"1H","group":"25 Global & Macro","url":"https://api.maatsii.com/c158.jpg"},"c159":{"symbol":"UK100GBP/SPX500USD","interval":"1D","group":"25 Global & Macro","url":"https://api.maatsii.com/c159.jpg"},"c160":{"symbol":"JPN225/SPX500USD","interval":"1H","group":"25 Global & Macro","url":"https://api.maatsii.com/c160.jpg"},"c161":{"symbol":"HK50/SPX500USD","interval":"1D","group":"25 Global & Macro","url":"https://api.maatsii.com/c161.jpg"},"c162":{"symbol":"ES1!/YM1","interval":"5M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c162.jpg"},"c163":{"symbol":"YM1!/RTY1","interval":"5M","group":"04 RTY & Index Spreads","url":"https://api.maatsii.com/c163.jpg"},"c164":{"symbol":"IWF/IWD","interval":"1D","group":"25 Global & Macro","url":"https://api.maatsii.com/c164.jpg"},"c165":{"symbol":"SOXX/QQQ","interval":"5M","group":"20 Semiconductors","url":"https://api.maatsii.com/c165.jpg"},"c166":{"symbol":"AUDJPY","interval":"5M","group":"12 FX Crosses","url":"https://api.maatsii.com/c166.jpg"},"c167":{"symbol":"EURJPY/USDJPY","interval":"1H","group":"12 FX Crosses","url":"https://api.maatsii.com/c167.jpg"},"c168":{"symbol":"USDJPY/US10Y","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c168.jpg"},"c169":{"symbol":"ETHBTC","interval":"5M","group":"14 Crypto ETH","url":"https://api.maatsii.com/c169.jpg"},"c170":{"symbol":"SOL/BTC","interval":"5M","group":"15 Crypto Market & Alts","url":"https://api.maatsii.com/c170.jpg"},"c171":{"symbol":"TOTAL3/TOTAL2","interval":"1D","group":"15 Crypto Market & Alts","url":"https://api.maatsii.com/c171.jpg"},"c172":{"symbol":"TOTAL2/TOTAL","interval":"1D","group":"15 Crypto Market & Alts","url":"https://api.maatsii.com/c172.jpg"},"c173":{"symbol":"BTC.D/TOTAL","interval":"1D","group":"13 Crypto BTC","url":"https://api.maatsii.com/c173.jpg"},"c174":{"symbol":"HG1!/ALI1","interval":"1H","group":"18 Metals & Agriculture","url":"https://api.maatsii.com/c174.jpg"},"c175":{"symbol":"NVDA","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c175.jpg"},"c176":{"symbol":"AAPL","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c176.jpg"},"c177":{"symbol":"AMZN","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c177.jpg"},"c178":{"symbol":"INTC","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c178.jpg"},"c179":{"symbol":"PLTR","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c179.jpg"},"c180":{"symbol":"MSTR","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c180.jpg"},"c181":{"symbol":"SOFI","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c181.jpg"},"c182":{"symbol":"GOOGL","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c182.jpg"},"c183":{"symbol":"META","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c183.jpg"},"c184":{"symbol":"AMD","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c184.jpg"},"c185":{"symbol":"PDD","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c185.jpg"},"c186":{"symbol":"VIX/VVIX","interval":"1H","group":"23 Volatility","url":"https://api.maatsii.com/c186.jpg"},"c187":{"symbol":"RGTI","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c187.jpg"},"c188":{"symbol":"TNX/FVX.P","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c188.jpg"},"c189":{"symbol":"TNX/FVX.P","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c189.jpg"},"c190":{"symbol":"FVX.P/IRX.P","interval":"1H","group":"08 Yield Curve & Credit","url":"https://api.maatsii.com/c190.jpg"},"c191":{"symbol":"SMCI","interval":"1H","group":"20 Semiconductors","url":"https://api.maatsii.com/c191.jpg"},"c192":{"symbol":"QQQ/IWM","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c192.jpg"},"c193":{"symbol":"HOOD","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c193.jpg"},"c194":{"symbol":"OPEN","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c194.jpg"},"c195":{"symbol":"MSFT","interval":"1H","group":"21 Mega-Cap Tech","url":"https://api.maatsii.com/c195.jpg"},"c196":{"symbol":"SPY","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c196.jpg"},"c197":{"symbol":"QQQ","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c197.jpg"},"c198":{"symbol":"IWM","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c198.jpg"},"c199":{"symbol":"XBI","interval":"1H","group":"19 ETFs & Rotation","url":"https://api.maatsii.com/c199.jpg"},"c200":{"symbol":"CRWV","interval":"1H","group":"22 High-Beta & Speculative","url":"https://api.maatsii.com/c200.jpg"}}},"x-claude-implementation-notes":{"cache_busting_strategy":"Claude MUST generate a unique cb parameter for every request. The recommended approach is using UUID v4 format with 'claude-' prefix.","example_uuid_generation":"claude-{uuid4} where uuid4 is a randomly generated UUID","freshness_verification":"Claude should inform users that chart freshness can be verified by examining the timestamp/annotation visible within the chart image itself","typical_usage_pattern":"User asks for chart -> Claude generates unique cb -> Claude constructs full URL -> Claude fetches image -> Claude presents to user","error_handling":"If a fetch fails, Claude should retry with a new unique cb value before reporting failure","multi_chart_requests":"When user requests multiple charts, each chart MUST have its own unique cb parameter"}}