# PolySignals.net > Live crypto direction readings (Buy / Sell / Hold with a 0-100 confidence) for every coin listed on Polymarket, Kalshi, Limitless and Gemini prediction markets and Binance, Deribit, Bybit and OKX options, on 5m to 1d windows, plus a daily trend (regime) call per coin and a live backtest. The score mostly restates the move since the window opened: a readout, not a forecast. Free JSON API and MCP server, no key. Operated by Cryptohopper. Not financial advice. ## For agents - Fastest route to a current reading: `GET https://polysignals.net/api/v1/live/BTC.md` (markdown, one coin, replace BTC with any coin) or `GET https://polysignals.net/api/v1/live/index.md` (every coin), or call the MCP server below. The web pages load their numbers with JavaScript; these files and the JSON carry the same numbers without it. - Live crypto direction signals from prediction markets (Polymarket, Kalshi, Limitless, Gemini) and options exchanges (Binance, Deribit, Bybit and OKX options). One combined reading per coin per timeframe (5m, 15m, 1h, 4h, 1d), for every coin the venues list, for example BTC, ETH, SOL, XRP, DOGE, HYPE and BNB, with the live list in meta.json: implied probability of "up", a -100 to +100 score, a direction shown as Buy / Sell / Hold, and an explainable 0-100 confidence (depth × agreement × timing), plus each venue's own reading. The score mostly restates how far the coin has moved since the current window opened: it is a readout, not a forecast. Operated by Cryptohopper (https://www.cryptohopper.com/). Free JSON API, no key, CORS open, no uptime guarantee. Not financial advice; not affiliated with any venue. - Quick start for agents: `GET https://polysignals.net/api/v1/combined.json` (refreshed once a minute, cache 30 s) for the blended signal, or `GET https://polysignals.net/api/v1/signals.json` (refreshed every `tick_seconds`, cache 10 s) for everything including per-venue readings. Read `coins.{COIN}.timeframes.{TF}.combined.current`: `score` (-100 to +100) and `direction` (`up`/`strong_up` shown as Buy, `down`/`strong_down` as Sell, `neutral` as Hold) describe the crowd's price for Up in the window running now, which after the open mostly restates the move since the open scaled by the time left. It is not a forecast and not a trading signal: before the live backtest restarted, following the calls made 25 to 41 round trips a day per coin and lost about 98% of capital to fees in two weeks (see Results). `confidence.score` (0-100; `label` high ≥ 70, medium ≥ 40) says how well-sourced the reading is; `confidence.sources` is the venue count blended, `confidence.independent_sources` the count once a window's options venues are merged into one (listed in `merged_options`), `confidence.qualifying_sources` how many independent sources clear the quality bar (0.2), `divergence` how far the qualifying sources disagree (null with fewer than two) and `raw_divergence` the same across every priced venue. Per-venue readings carry `volume_usd` and `depth_usd` (resting size near the mid; null where the venue gives no book) and `source_type`: `prediction_market` (Polymarket, Kalshi, Limitless, Gemini) or `options` (Binance, Deribit, Bybit and OKX options: daily readings implied from call prices, 08:00 UTC windows, never blended with prediction-market windows, merged into one source per window; they add AVAX, TRX and MNT). A per-venue reading with `flags` (`outlier`, `degenerate_curve`) is published but never blended. Treat a snapshot older than 3 × `tick_seconds` as delayed. `time_left` is the fraction of the window remaining, `reference_price` the window's price at the open and `move_since_open` the move since it. Readings with `late_window: true` are halved in confidence and left out of the overall, which reads the 1h, 4h and 1d cells only. Per-venue readings carry `derived: true` when interpolated from a strike ladder and `stale: true` when carried over. ## MCP server - Endpoint: `https://polysignals.net/api/mcp` (Streamable HTTP, read-only, no sign-in). Tools: get_overview, get_coin_signal, get_regime, get_results, get_history, list_coins_and_venues, get_trend_changes, get_signal_markets, get_news, get_methodology. get_trend_changes lists the coins whose daily trend call recently turned long or flat (the signals sent to Cryptohopper) and how many coins were long over the last 90 closes, or for one coin its calls over those closes; get_signal_markets lists the exchange markets on Cryptohopper those signals go to, per exchange or per coin (for example SOL on Kraken). get_news returns the latest CoinArticle headlines with the live call of each coin they name. - [Setup for every client](https://polysignals.net/mcp/): Claude (claude.ai, Desktop, Code, API), ChatGPT and the OpenAI API, Cursor, VS Code / GitHub Copilot, Windsurf, Gemini CLI, Codex CLI, Zed, Cline, LM Studio, Copilot Studio, Mistral Le Chat, and the mcp-remote bridge for clients that only run local servers - [Server card](https://polysignals.net/api/mcp/server-card): machine-readable description of the server - Listed in the official MCP Registry as `net.polysignals/polysignals` (remote, streamable HTTP): https://registry.modelcontextprotocol.io/v0.1/servers?search=net.polysignals/polysignals ## Live plain text - [All coins](https://polysignals.net/api/v1/live/index.md): every coin's overall call, its daily regime state and links to the per-coin files, refreshed every 30 s - [One coin](https://polysignals.net/api/v1/live/BTC.md): current and next window per timeframe, per-venue readings, the daily regime call, the Cryptohopper markets that get its signals with its latest delivery, the live backtest, and the newest headlines that name it (replace BTC with any coin from meta.json) - [Signal markets](https://polysignals.net/api/v1/markets.json): JSON of every market on Cryptohopper's exchanges that receives the daily trend signals, per exchange and coin (the Follow on Cryptohopper page explores it) - [Signal deliveries](https://polysignals.net/api/v1/deliveries.json): JSON of the signaler's recent daily trend signals, newest first, each with how many Cryptohopper markets accepted, refused or let it expire, the exchanges it reached, and while a decision is still sending, how many markets it has yet to reach (`queued`) (shown on the Follow on Cryptohopper page) - [Trend history](https://polysignals.net/api/v1/trend-history.json): JSON of every coin's daily trend call over the latest 90 closes, one letter a day (L long, F flat, - no close) against `days` (UTC dates, oldest first), rewritten after each 00:05 UTC decision; the Trend changes page draws it as a map - [Signal markets as markdown](https://polysignals.net/api/v1/live/markets.md): the same lists as one markdown file: every exchange with its coin and market counts, then each exchange's markets per coin in its own format (BTCUSDT, XBT/EUR, BTC-USD) - [One exchange's signal markets](https://polysignals.net/api/v1/live/markets/kraken2.md): the same for one exchange, by its Cryptohopper key (replace kraken2 with binance, coinbase, bybit, okex, kucoin, crypto, binanceus, bitvavo, huobi or bingx); each exchange page links its own - [Trend changes](https://polysignals.net/api/v1/live/trend.md): the coins whose daily trend call turned long (a buy sent to Cryptohopper) or flat (a sell) at each 00:05 UTC decision, newest first, and the next decision time, with the trend breadth (coins long) over the last 90 closes - [One coin's trend feed](https://polysignals.net/api/v1/live/trend/BTC.xml): Atom feed of one coin's daily trend changes (replace BTC with any ticker), one entry each time its call turns long or flat; every coin page links its own ## Limits - Up to 50 requests per 10 seconds per IP across `/api/` (JSON, live markdown and the MCP server together); above that the API answers `429` for 10 seconds. The JSON files are cached at the edge for as long as their Cache-Control says, and query strings are ignored, so polling faster than the Cache column returns the same file. For a coin's history, read `history/{coin}.json` every 5 minutes, not every tick. ## API - [OpenAPI 3.1](https://polysignals.net/api/v1/openapi.json): machine-readable description of every endpoint and field - [combined.json](https://polysignals.net/api/v1/combined.json): blended reading per coin × timeframe, current and next window, once a minute - [signals.json](https://polysignals.net/api/v1/signals.json): everything, combined plus per-venue readings, every tick - [venues/{venue}.json](https://polysignals.net/api/v1/venues/kalshi.json): one venue's readings (polymarket, kalshi, limitless, gemini, binance_options, deribit_options, bybit_options, okx_options), once a minute - [history/{coin}.json](https://polysignals.net/api/v1/history/BTC.json): last 48 h, combined at 1-minute and per venue at 5-minute resolution (replace BTC with any coin) - [results.json](https://polysignals.net/api/v1/results.json): live backtest per coin and strategy (following the calls on Coinbase USD vs buy and hold: net and gross return, fills, trades, win rate, drawdown), once a minute - [results/{coin}.json](https://polysignals.net/api/v1/results/BTC.json): one coin's backtest with its recent trades and equity curve (net and fee-free), every 5 minutes - [meta.json](https://polysignals.net/api/v1/meta.json): coins, timeframes, venues with coverage, thresholds, methodology version - [Full reference (markdown)](https://polysignals.net/llms-full.txt): field reference, methodology and examples in one file ## Pages - [Live signals](https://polysignals.net/signals/): every coin × timeframe as Buy / Sell / Hold, combined and per venue - [Coin pages](https://polysignals.net/btc/): per-coin detail with current and next window, per-venue readings and 48 h history, one page per coin (for example btc, eth, sol; the full list is in meta.json) - [Results](https://polysignals.net/results/): the live backtest, per coin and strategy (eight: five windows, the overall call, the daily regime call and its four-hour paper variant): what following the calls on Coinbase USD returns versus buy and hold, filled one minute after each call at the Coinbase Exchange bid or ask (Bybit's USDT bid or ask for TRON and Mantle), with gross, fees, net at 0.6% and at 0.1% a fill and fills a day side by side, trades and an equity curve; restarted from scratch at results version 2, earlier numbers dropped - [Daily regime board](https://polysignals.net/results/): every coin's daily regime state after the latest UTC close (long or flat, close, distance from the 50-day average in sigmas, days in the state, the close at which the call changes, next decision time), read from `regime` in signals.json; a signal goes to Cryptohopper only when a state changes, so expect weeks between signals per coin - [Daily regime strategy](https://polysignals.net/methodology/#daily-regime-strategy): the Results page's default strategy and the one relayed to Cryptohopper; uses no market data: long once the Coinbase daily close is more than one 20-day sigma above its 50-day average, flat once more than one below, decided once a day at 00:05 UTC, about five round trips a year per coin, published per coin as `regime` in signals.json (`null` with fewer than 200 daily closes); covers every tracked coin with a Coinbase USD market plus TRON and Mantle, which use Bybit's USDT market (the Coins section below marks the coins no venue lists), so signals.json also lists coins no venue quotes, with empty `timeframes` and only the `regime` block; a bet on a trend premium, not a proven edge. A four-hour paper variant (strategy `regime_4h`, published as `regime.intraday`: the live Coinbase price checked against the same band every four hours, starting from the daily call) is measured on the Results page and never relayed - [Methodology](https://polysignals.net/methodology/): what the score is (a readout of the move since the window opened, not a forecast), quality, window matching, independent sources, quarantine, derived ladder readings, options-implied readings, the confidence formula, the late-window caveat, the live backtest, the daily regime strategy and the Cryptohopper signaler (fills of the daily regime strategy, sent as buy/sell signals to every market of the coin against a USD-pegged quote such as USD, USDT or USDC or a fiat currency such as EUR, GBP, TRY, JPY, BRL, AUD or AED, on every Cryptohopper exchange, listed with their count in markets.json) - [Venues](https://polysignals.net/venues/): the four prediction markets and four options exchanges, and which venue covers which coin and timeframe - [API docs (HTML)](https://polysignals.net/api-docs/): same contract, human-readable - [MCP server setup](https://polysignals.net/mcp/): how to add the MCP server to Claude, ChatGPT, Cursor, VS Code, Gemini CLI, Codex and other clients - [News](https://polysignals.net/news/): the latest crypto headlines from CoinArticle (https://www.coinarticle.com) with the live call for each coin a story names; machine-readable at https://polysignals.net/api/v1/live/news.json (title, url, summary, published_at, categories, image, coins), refreshed every 5 minutes - [Widgets](https://polysignals.net/widgets/): fifteen free embeddable iframes with live readings, configured by query string: coin card (`w=coin`), ticker strip (`w=ticker`), daily trend list (`w=regime`), a one-line daily trend badge for one coin (`w=badge`, 52 px tall), market pulse (`w=pulse`, Buy/Sell/Hold counted across every coin and window), news (`w=news`), a coin's 48-hour score history (`w=history`) the latest daily trend changes, the coins that turned long or flat (`w=changes`), and a coin's track record, the daily trend strategy's net return next to buy & hold in the live backtest (`w=track`), and a coin's six-month daily trend chart with the 50-day average, its band and the long periods (`w=chart`), and the whole market's trend breadth, long and flat counts with every coin's call (`w=breadth`), and how many coins were long after each daily close over the last 90 days (`w=trendmap`), and one Cryptohopper exchange's signal markets, quote currencies and long coins (`w=exchange&ex=kraken`, any slug from the exchange pages), the coins closest to a change of daily trend call at the next decision (`w=watch`), and the latest signals delivered to Cryptohopper with the markets that accepted each (`w=delivered`); e.g. `