{"uid":"cap_3G8IndfMe8oM18S62EI1v","slug":"macropulse-forex-sentiment-16c8c661","name":"MacroPulse Forex Sentiment","description":"Real-time directional sentiment for any forex pair or gold — retail crowd positioning, COT institutional alignment, and a clear contrarian bias call. Built for FX trading and advisor agents.","url":"https://macropulse-alpha.vercel.app/api/sentiment","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"type":"object","properties":{"pair":{"type":"string","description":"EURUSD | GBPUSD | USDJPY | AUDUSD | USDCAD | XAUUSD | USOIL"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"errors":{"type":"object","description":"Documented error responses, keyed by HTTP status code","additionalProperties":{"type":"object","required":["description"],"properties":{"example":{"type":"object"},"description":{"type":"string"}}}},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"pair":"EURUSD","signal":"contrarian LONG — crowd is heavily short","strength":"strong","cot_alignment":true,"retail_long_pct":38,"retail_short_pct":62}},"example":{"request":{"pair":"EURUSD","event":"NFP"},"response":{"meta":{"news_items":0},"pair":"EURUSD","score":50,"narrative":"With no live news flow feeding this brief, EURUSD enters the Friday Asia-to-early-London session in a data-vacuum holding pattern. The pair sits at a macro crossroads: the Fed's higher-for-longer posture has kept USD supported on dips, while the ECB's cautious easing path limits aggressive EUR selling. Technically, the pair is consolidating near mid-range with no clear directional catalyst to break the stalemate. Thin early-Friday liquidity amplifies the risk of a false break, so price action around key levels should be treated with skepticism until European and New York sessions add volume.","sentiment":"neutral","components":{"momentum":"stable","news_tone":"neutral","technical_bias":"neutral","risk_environment":"neutral"},"conviction":"low","disclaimer":"For informational purposes only. Not financial advice.","agent_action":"On EURUSD, stand aside from new directional positions; set a conditional buy limit at 1.0782 (just above the 1.0780 demand zone) with a stop at 1.0748 and target 1.0850, activating only on a clear rejection wick and bullish close on the 1H chart during the London open window (07:00–09:00 UTC).","generated_at":"2026-06-12T04:25:43.676Z","timestamp_utc":"2026-06-12T04:25:28Z","key_level_watch":"1.0850 — sustained break above opens path to 1.0920 resistance cluster; failure and close below targets 1.0780 demand zone","options_context":{"implied_vol":"1-week implied vol estimated in the 6.0–7.0% annualized range typical for a pre-weekend, post-ECB/Fed repricing period — neither elevated enough to signal an imminent breakout nor compressed enough to suggest pure complacency; event-driven spikes remain possible on any surprise Fed commentary.","fx_options_skew":"Risk reversals near neutral with a slight negative skew (puts marginally bid), reflecting residual USD demand for hedging into weekend event risk — no strong institutional directional lean detectable without live flow data."},"catalyst_next_24h":"Friday's University of Michigan Consumer Sentiment (June preliminary) and any Fed speaker remarks into the weekend close could reprice USD direction and shift EURUSD off current equilibrium."}},"exampleRequest":{"pair":"EURUSD","event":"NFP"},"tags":["x402"],"displayCostAmount":"0.05","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.05/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.05","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_jXvHlEX9IR2sGGwbvvGC5","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.05","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Returns real-time directional sentiment signal for a specified forex currency pair","exampleAgentPrompt":"What's the current directional sentiment on EUR/USD — is the market leaning bullish, bearish, or neutral right now?","exampleUseCases":null,"resultDescription":"Returns a real-time directional sentiment signal for the requested forex pair, likely including a bullish/bearish/neutral classification and a sentiment score or confidence indicator reflecting current market bias.","failureModes":["Invalid or unsupported forex pair symbol returns an error","Payment of $0.05 USDC not provided or fails — returns 402 Payment Required","Service unavailable or data feed delay may return 503 or stale signal","Malformed request parameters return 400 Bad Request"],"whenToPreferThis":"Use this endpoint when you need real-time directional sentiment for a specific forex pair and want a pre-synthesized signal rather than raw news or positioning data. Ideal for trading assistants, dashboards, or agents needing a quick bullish/bearish/neutral read on a currency pair without parsing multiple data sources. Prefer over COT or macro regime endpoints when the specific output needed is sentiment direction for a single pair.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T12:31:41.543Z","isFirstParty":false}