X402 · Regime Scan
Use for: a ranked shortlist of liquid US stocks and ETFs (dynamic universe: all US listings from the last completed session, price ≥ $5, volume ≥ 500k, dollar volume ≥ $25M, top ~400 by dollar volume — no fixed watchlist) where the regime gate (ADX(14) + Choppiness(14)) and one indicator from each of 8 families agree: EMA21/50, SuperTrend(10,3)+DMI, RSI(14)+MACD, ATR/Bollinger-width rank/BB-inside-Keltner squeeze, OBV+CMF(20)+relative volume, prior 20-day Donchian + 52-week range, CHOP/ER(20)/Z(20)/20-day relative strength vs SPY, and universe breadth. Each ticker: setup (TREND_CONTINUATION, TREND_PULLBACK, BREAKOUT, SQUEEZE_COIL, RANGE_STRETCH), bias, score 0–100, tier, trigger, invalidation, next level, reward-to-risk, RVOL, ATR%, a one-line why, the setup type's measured history on the scanned tickers (5/10-day forward move, +1R-before-invalidation rate, samples) and live price vs levels during market hours. Answer-first JSON. Completed daily bars only; nothing repaints. Don't use when: you need raw bars/quotes, intraday timeframes, crypto spot, or execution. Not buy/sell instructions. Pay 0.05 USDC on Base using the fresh PAYMENT-REQUIRED challenge and caller-authorized PAYMENT-SIGNATURE.
Live 402 challenge
Hits the real endpoint without paying and shows exactly what it demands. Nothing is charged.
Pay from your agent
import { wrapFetchWithPayment } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const signer = privateKeyToAccount(process.env.BUYER_PRIVATE_KEY);
const pay = wrapFetchWithPayment(fetch, { schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(signer) }] });
const res = await pay("https://mcp-x402.onrender.com/x402/regime-scan", { method: "GET" });
console.log(await res.json(), res.headers.get("PAYMENT-RESPONSE"));Example input
{
"bias": "bullish",
"setup": "TREND_CONTINUATION"
}