mcpbeat Sign in

Dr. NoVo MCP Server

by novo-options Your server? Claim it
not responding

Dr. NoVo is listed as active in the registry but did not answer our last check. It exposes 40 tools.

Dealer gamma maps for SPY, QQQ, IWM and 90+ cryptos, plus NoVo's own session record. 20 free tools.

Uptime history 30 days of history · worst day 0%
30 days agonow
0.0%
Uptime 24h
0 of 91 checks
40
Tools
read from the server
309 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 19

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 14 October 2026. No other catalogue keeps this.

15 Oct 6 tool descriptions were rewritten create_alert, get_base_rates, get_crypto_coin and 3 more
14 Oct 11 tool descriptions were rewritten13 times that day ask_novo, get_dealer_levels, get_futures_positioning and 8 more
and 2 more, back to 14 October 2026

Dr. NoVo does not always answer

Over the last week it answered 0.0% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 2 min ago.

run in your terminal
claude mcp add dr-novo --transport http https://novo-options.trade/api/mcp
Settings → Connectors → Add custom connector, then paste this address
https://novo-options.trade/api/mcp
~/.codex/config.toml
[mcp_servers.dr-novo]
url = "https://novo-options.trade/api/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "dr-novo": {
      "url": "https://novo-options.trade/api/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "dr-novo": {
      "type": "http",
      "url": "https://novo-options.trade/api/mcp"
    }
  }
}

Available tools 40

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

crypto
get_crypto_breadth
THE CRYPTO BOOK AS ONE MARKET: how many coins are mapped, the MEDIAN round-trip cost across them, which coin is cheapest and which is priciest to trade, where the largest open interest sits, and the 24-hour liquidation table. Use this for 'what is crypto doing'; use get_crypto_screen for 'which coin'. ⚠ Cost figures are a venue's OWN DISCLOSED MARKUP, not our estimate. ⚠ Liquidations are FORCED FLOW, not positioning - reading them as positioning says traders chose those sides when they were closed out of them. A quiet collector answers 503, never a zeroed book. Requires a live NoVo MCP & API subscription.
get_crypto_coin
One coin's FREE crypto read, the same data the free coin page serves: per-venue funding (rate + annualized, never blended), per-venue open interest and 24h volume, total OI, 24h long/short liquidations, and the free BTC/ETH gamma summary where the coin has one. The response's `paid` key names what the Crypto Market Map withholds from this feed — gamma by strike, the flip and walls, the block tape, the on-chain map — so never report a gated field as zero or missing; it is withheld, not absent. A coin outside the mapped set answers 200 with covered:false and says what the paid map covers — a non-200 means the request itself failed, never a coverage verdict.
get_crypto_depth
ONE PAID CRYPTO LAYER for one coin, with the shape named so you do not have to probe for it. layer=surface - the implied-volatility surface: {expiries:[{days, iv:[...]}], moneyness:[...]}. moneyness is a FRACTION of spot running about -0.20 to +0.20 and indexes into each expiry's iv array; iv values are percentage points; days can be fractional for same-week expiries. ⚠ A NULL CELL IS A GAP IN THE BOOK, NOT A ZERO - it means no contract is priced at that strike for that expiry, and averaging over it fabricates a quote. layer=etf_flows - the US-listed spot funds' book: {ticker, cumulative_usd, days:[{date, net_usd}]}, daily net creations and redemptions. This is the ISSUERS' book, a different book from the offshore options chain, and the two are never summed. layer=history - this coin's funding and open interest ranked against ITS OWN sample history, with the sample size n carried alongside every percentile. A percentile without its n is the number people quote when they mean 'high'. A coin that does not carry a layer answers 200 with available:false and a reason, never an empty object: empty would read as 'there were no flows today', which is a claim about the market rather than about our coverage. Requires a live NoVo MCP & API subscription.
get_crypto_map
THE PAID CRYPTO MARKET MAP - the full dealer read the Crypto Market Map holds: gamma by strike with the flip and walls on every coin with a real options book, per-venue funding and open interest across ~90 coins, 24h liquidations, the block tape, and the on-chain liquidity map. Requires an API key whose email holds a live NoVo MCP & API subscription: send it as Authorization: Bearer novo_... or the x-novo-api-key header. Keys are free at /api/key; the API subscription is the entitlement. A dashboard plan does NOT open this door and an API plan is not a dashboard seat - they are separate products. Without both this answers with exactly what is missing - it never serves a sample or a teaser payload.
get_crypto_screen
RANK THE WHOLE CRYPTO BOOK on one measure, in one call - ~90 coins measured the same way at the same instant. Axes: funding_spread (max minus min annualised funding ACROSS VENUES, the crowding read - a blended rate cannot produce this number), funding_max, open_interest, net_gex (band A only, coins with a real options book), liq_skew (24h liquidations, +1 all longs stopped out, -1 all shorts), true_cost (round-trip retail cost, cheapest first), change_24h. NOTHING IS ZERO-FILLED: a coin that cannot be measured on the chosen axis is excluded and counted, never ranked at 0, and every response states `n` plus an `excluded` breakdown. Percentiles are over the MEASURED set, which the payload names in `percentile_population` - do not restate them as universe percentiles. Requires an API key whose email holds a live NoVo MCP & API subscription (Authorization: Bearer novo_..., keys at /api/key).
get_crypto_sweep
The free crypto sweep across the mapped coins: price, 24-hour change and a sparkline. The paid Crypto Market Map adds dealer gamma by strike, the block tape and the on-chain liquidity map; none of that is in this response. Per-venue funding, open interest and 24-hour liquidations are FREE per coin — see get_crypto_coin.
read_crypto_regime
ONE COIN'S DEALER MAP AS A READ, not a payload: where spot sits against the flip and both walls as percentages, what the gamma sign implies for VOLATILITY, how crowded funding is across venues, which way liquidations ran, and one plain-English sentence assembling all of it. ⚠ MAGNITUDE, NEVER DIRECTION: dealer gamma describes the SIZE of moves and the LOCATION of levels - positive gamma means ranges hold and breaks fail more often, NOT 'bullish'. The response carries not_a_signal saying exactly that, and an `unavailable` list naming what could not be read rather than returning zeros for it. Requires a live NoVo MCP & API subscription.
alert
create_alert
ARM A STANDING WATCH on a level. kind is one of equity_level, equity_flow (every option sweep or block on SPY, QQQ, IWM or ANY over min_usd of premium -- floor $50,000 -- narrowed by `print` sweep/block and `side` call/put; recurring, each fire carries the prints as data), vix_level, crypto_level, crypto_block, prediction_prob (one prediction market's yes probability, in percent, above/below a level; pass `market` from get_prediction_markets), prediction_level (an event's implied median above/below a number in its own units; pass `event`) or prediction_whale (a fill over min_usd on one `event` or ANY on a `desk`; recurring). Equity and VIX kinds need the full API rung; the Crypto API opens the crypto and prediction kinds and the refusal names which. Give ticker OR coin OR market/event, a level, and a direction (above/below). Evaluated on every publish -- roughly 60s -- and delivered to your registered webhook, signed HMAC-SHA256. Register that webhook over REST first; without one the alert still arms and fires nowhere. Capped per account. Paid.
alerts
get_alerts
WHAT THIS KEY IS WATCHING, and where a fire would go. Returns every standing alert on the account plus whether a delivery webhook is registered. An alert with no webhook is armed and has nowhere to arrive -- the payload says so rather than implying delivery. Paid.
ask
ask_novo
ASK NOVO HIMSELF - the Financial Markets Super Intelligence, not a data endpoint. Put a market question in plain English ('is volatility actually high right now?', 'what does the dealer setup on SPY mean?', 'is the dealer setup on SPY unusual?') and get his read, in his voice, grounded in what your key can see and naming the feed each figure came from. WITH NO KEY: the free layer only - delayed dealer levels (call/put wall, gamma regime; the flip and expected move are NOT in the free feed), the volatility record with percentiles, market pulse and the economic calendar with each release's print; four questions an hour per address. WITH A PAID KEY (Agents, Agents Live, Crypto API, API, API Live): he also reads the books that plan holds - the crypto market map on every paid plan, the undelayed equity dealer map on SPY, QQQ and IWM on Agents Live, API and API Live - 5 a day on Agents, 20 on Agents Live, 75 on Crypto API, 150 on API, 450 on API Live, 25 an hour. He tells you what he cannot see rather than guess it, and does not make directional calls or give trade advice. Keep questions substantive.
base
get_base_rates
CONDITIONAL BASE RATES over NoVo's own logged dealer history - 'given this dealer state, here is what has actually happened next, and how many times we have seen it'. AGGREGATE HISTORY, NOT A FORECAST: every cell carries n, sessions and a precomputed `usable` flag, and a cell drawn from one afternoon reads authoritative while being noise - branch on `usable` before you quote a rate. The table is computed over the paid dealer map's own history, so it cannot be reconstructed from a third-party option chain. Response states `age_seconds`; the engine aggregates on its own schedule, so read the age rather than assuming a cadence. Requires an API key whose email holds a live NoVo MCP & API subscription (Authorization: Bearer novo_..., keys at /api/key). A dashboard plan does NOT open this door.
cancel
cancel_alert
CANCEL ONE STANDING WATCH by its id. Ids come from get_alerts. Cancelling something already gone is reported as such rather than invented. Paid.
congress
get_congress_trades
US congressional stock disclosures: the House (the Clerk's Periodic Transaction Reports) and the Senate (its Electronic Financial Disclosure system), every row carrying its chamber. ⚠ THESE ARE DISCLOSURES, NOT TRADES IN REAL TIME: members have up to 45 days to file under the STOCK Act, and amounts are usually a RANGE rather than an exact figure - the response carries its own `lag` and `disclaimer`, and quoting a row without them overstates what it is. No signal is computed and no ranking by 'conviction' is invented; it serves what was filed. Filter with ticker, side (buy/sell) and limit. Also reports `unreadable_filings`, because a filing we could not parse is a gap we name rather than a row we drop silently.
crowd
get_crowd_sentiment
The public bull/bear poll on novo-options.trade - today's tally, one vote per IP per UTC day. ⚠ THIS IS A READER POLL, NOT A MARKET MEASUREMENT: it counts opinions of people on one site, so it is a crowd reading and nothing more. It is not positioning, it is not flow, and it should never be quoted as either.
daily
get_daily_strike
The Daily Strike: NoVo's published market read. format=json returns the recent stories as data; format=index returns the COMPLETE archive of every published piece with its url, slug and publishedAt, uncapped - use index when you need the whole record rather than the latest few, because json, rss and the news feed are each capped at a different number. Pass a slug with format=json for one specific story. WITHOUT format this path serves a rendered HTML page, not data.
dealer
get_dealer_levels
Options dealer positioning for SPY, QQQ and IWM: spot, call wall, put wall and the gamma regime (long or short gamma). DELAYED, and the gamma flip and expected move are withheld from this free feed — the response lists them under `gated`, so do not report them as zero or missing data. The live, undelayed map is the paid NoVo Trader product. TWO SUB-RESOURCES, each returning a DIFFERENT shape: pass `history` with a ticker for that ticker's delayed level history as {points:[...]} — the same delay, so it exposes nothing the live call does not — or `iv` with a ticker for that ticker's IV rank and percentile against its own logged range as {ivRank, ivPercentile, days}. Pass neither for the normal three-ticker payload, and never both: `history` wins and `iv` is ignored.
earnings
get_earnings_dates
The next earnings date for any symbol, from NASDAQ'S OWN PUBLISHED ANALYST CALENDAR. ⚠ THIS IS THIRD-PARTY PUBLIC DATA PASSED THROUGH, NOT A NOVO MEASUREMENT, and the response says so. An upstream failure answers 502 naming the upstream rather than 'no earnings date' - the latter would be reported as 'this company has no earnings scheduled', which is a claim about the company rather than about a fetch. Free, no key.
economic
get_economic_calendar
Scheduled US economic releases and the options expiries (monthly, quad witching, VIX) — the dates and times that reprice volatility.
equity
get_equity_map
THE PAID EQUITY DEALER MAP on SPY, QQQ and IWM - the same undelayed object the paid dashboard renders, on the publish cycle (~60s on weekdays 04:00-20:00 ET, slower otherwise), NOT the 15-30 minute delayed public feed get_dealer_levels serves. Carries spot against the gamma flip, the call and put walls, gravity, the expected move, the gamma/delta/vanna/charm strike ladder, the session read and the hourly structural audit, the SIGNED-FLOW read (signed_flow: the shares dealers have had to buy (+) or sell (-) to stay hedged this session as customers traded options, its 0DTE part, the last 15 minutes, the contracts driving it and the share of official option volume it could sign) - plus, per ticker, BASE RATES for the current setup (base_rate: next 15 min, next hour, into the close; base_rate_daily: next session - each with its n and a usable flag) and SESSION ANALOGUES (analogues_by: the closest logged past sessions by similarity, each with what followed at 15 min, 60 min and into the close). History, not a forecast. Every response states its own updated_at and age_seconds - branch on those rather than assuming a cadence. Requires an API key whose email holds a live NoVo MCP & API subscription (Authorization: Bearer novo_..., keys at /api/key). The API Live rung adds the tape-speed WebSocket stream; the response names the upgrade path rather than hiding it. A dashboard plan does not open this door - they are separate products.
eye
get_eye_readings
THE EYE'S LIVE READINGS - what NoVo's structural scan is flagging right now, optionally scoped to one ticker. ⚠ ABSENT IS NOT EMPTY AND THE PAYLOAD DISTINGUISHES THEM: a missing publication means the Eye has not published in six hours (the TTL is a dead-engine detector), while an empty list means it looked and nothing cleared the bar. Reporting the first as the second renders a quiet market over a dead publisher. Pass crypto=1 for the Daily Crypto Rundown, which rides this same door. Requires a live NoVo MCP & API subscription.
futures
get_futures_positioning
Weekly CFTC Commitments of Traders positioning: speculative and commercial net positions and open interest, with history, for the major index futures. Weekly and lagged by the CFTC's own publication schedule — the `asof` date is the authority, not today.
gamma
get_gamma_profile
HOW DEALER GAMMA BUILT TODAY on SPY, QQQ or IWM - the same strike ladder sampled through the session rather than a single snapshot. Returns `movers` (open-to-close change per strike, biggest absolute shift first - the answer to 'where did gamma build or drain today'), `series` (the session downsampled to about a dozen columns, each carrying its three heaviest strikes, stamped in Eastern time), plus the span and column count. Without lookback_minutes the window is the WHOLE Eastern trading day, which is deliberate: a rolling two-hour default asked after the close used to drop the morning entirely. Before a session's first pass it answers 200 with banked:false and says so - that is 'nothing banked yet', NOT 'gamma was flat'. ⚠ Gamma describes the SIZE of moves and the LOCATION of levels, never direction. Requires a live NoVo MCP & API subscription.
implied
get_implied_open
WHERE THE INDEXES STAND WHILE THE STOCK MARKET IS SHUT: how far the S&P 500 perp (for SPY) and the Nasdaq 100 perp (for QQQ) have moved since the last regular cash close, measured against each perp's OWN price at the bell, with funding and open interest beside it. `megacaps` is the same measure for NVDA, AAPL, MSFT, AMZN, GOOGL, META and TSLA, largest move first: it says WHICH names are carrying the index, unweighted. Use for 'where is SPY opening Monday', 'what moved over the weekend'. ⚠ It is a market price on another venue, never a forecast of the open. ⚠ IWM has no perp: say so, never borrow the S&P. ⚠ If a perp had no print at the bell there is no figure for it - `anchor_missing` says so. While `session.cash_open` is true the cash market is trading and this is a move since the prior close. Requires a live NoVo MCP & API subscription.
journal
search_journal
SEARCH EVERYTHING NOVO HAS PUBLISHED - every word of 1,400+ Journal articles on market mechanics, the Daily Strike, the desk-note archive and every page on the site, in one call. Use it to ground an answer in our own writing: 'why does price pin at a strike', 'what is the gamma flip', 'how does funding work'. Returns url, title, description and a snippet showing where the words appear, ranked (pages whose title carries the words first), with the FULL match count beside the page so a narrow query is distinguishable from a truncated one; offset pages through the rest. `all_words` of the `total` carry every word; when few pages do, pages carrying at least half of them follow with match 'partial' -- report all_words, not total, as the number of pages that match. A misspelt word is corrected to the nearest word the site uses and `corrected` says so. ⚠ It matches WORDS, NOT MEANING: if a query returns nothing, retry with the terms an article would actually use rather than concluding the topic is uncovered. Free, no key.
market
get_market_pulse
The NoVo Market Pulse: a 0-100 composite fear/greed score with the factors behind it (volatility, put/call, breadth, momentum) and each factor's weight, so the score can be explained rather than just quoted.
movers
get_movers
Today's biggest movers across a curated universe of recognisable, high-volume names, ranked by absolute percent change. Deliberately NOT a search-spike list: ranking by what people are looking up surfaces obscure tickers and reads as market activity, which is why this ranks on the move itself. Public data, cached about five minutes.
perp
get_perp_history
ONE PERP, HOUR BY HOUR: open interest in dollars, funding as a yearly rate and premium to the oracle for a single stock, index or commodity perp, one point per hour, from NoVo's OWN record. The venue serves no open-interest history, so this series exists nowhere else. Pass `market` (dex:SYMBOL, as get_perps returns it) or `symbol` (the deepest book under that ticker is used and named in the answer). Call it with no arguments to list every market that has a record. Use for 'has open interest on the S&P perp grown this weekend', 'when did funding on TSLA flip'. ⚠ The record began 2026-10-04 and covers the largest markets by open interest: `span_hours` is how much there is, and a market outside the record answers found:false, not an empty series. ⚠ A missing hour is a pass the collector did not complete, never a zero. Requires a live NoVo MCP & API subscription.
perps
get_perps
THE FULL PERP BOARD: every stock, index, commodity and FX perp on Hyperliquid's builder dexes, open all week including weekends. Per market: mark, oracle, premium to the oracle, 24h change, funding now (hourly and as a yearly rate - positive means longs pay shorts), average funding and open-interest change from NoVo's OWN hourly record, open interest, 24h volume and maximum leverage. RANK IT with `sort`: open_interest (default), volume, funding_high, funding_low, premium, change, oi_change. Filter with `symbol` (SPY is answered by the S&P 500 perp, QQQ by the Nasdaq 100 perp) or `dex`. Use for 'which stock perp has the most negative funding', 'where is open interest building', 'what is the NVDA perp trading at on Sunday'. ⚠ A perp is dex:SYMBOL - one ticker can list on several dexes with SEPARATE books; never add them together. ⚠ `history.span_hours` says how long NoVo's record is (it began 2026-10-04): never call a short record a 7-day figure. ⚠ IWM and the Russell 2000 have NO perp. Positioning and price on one venue, never a direction call. A venue outage answers 503, never an empty board. Requires a live NoVo MCP & API subscription.
prediction
get_prediction_markets
PREDICTION MARKETS, both venues as one: Kalshi (the exchange Robinhood routes most of its event contracts to) and Polymarket. `desk` trader: the S&P 500 and Nasdaq-100 by the hour and at the close, the Fed funds ladder for the next meetings, rate cuts, CPI, payrolls, GDP, recession, yields, gold, oil, and Polymarket's macro and stocks events by volume. `desk` crypto: BTC, ETH, SOL, XRP, DOGE and HYPE ranges by the hour and the day, the year's high and low, and Polymarket's crypto events. Every market carries its yes price as the implied probability with bid, ask and spread; price ladders carry `implied` - the market-implied median, 25th/75th and 10th/90th percentiles and the half-band in percent, the number to hold against the dealer expected move. `view`: movers, unusual (turnover far above open interest or liquidity), closing (inside 24h), whales (large fills: Polymarket with the wallet, its name and its open position and P&L; Kalshi by size, it publishes no identity), history (24h of implied medians and leaders, 5-minute steps). `event` for one event in full; `query` searches both venues live. ⚠ A yes price is a probability only while someone is quoting (`priced`, `tight`). ⚠ `stale` true means the watch has not refreshed in five minutes. Read from the venues' public market data, never from inside the Robinhood app. Nothing here is a recommendation. Requires a live NoVo MCP & API subscription.
quotes
get_quotes
Delayed quotes for the free ticker strip, keyed by display name: SPY, VIX, the 10-year yield, the dollar index, BTC, and futures. ⚠ The rows named "S&P 500", "Nasdaq", "Russell" and "Dow" are front-month FUTURES (ES, NQ, RTY, YM), not the cash indices - "Nasdaq" is the Nasdaq-100 future, never the Composite - and Gold, Crude (WTI) and Brent are futures too. `futures_rows` names each row's contract; allow for basis before comparing one with a cash print, and never quote one as the index it is named after. `row_as_of` stamps each row (the 10-year holds Friday's close all weekend while BTC prints live), and `rows_missing` names any row that did not come back.
retail
get_retail_chatter
What retail is SAYING about one symbol on StockTwits - the bullish/bearish tags users put on their OWN posts, counted. Pass symbol=NVDA; crypto is accepted bare (BTC) and mapped to the coin stream. ⚠ THE DENOMINATOR IS THE STORY: only a fraction of posts carry a tag and that fraction varies several-fold by symbol, so self_tagged ships beside every count and BELOW EIGHT TAGGED POSTS NO PERCENTAGE IS RETURNED AT ALL - ratio_withheld_reason says why. A crowd reading of one venue: never positioning, never flow, never a direction.
robinhood
get_robinhood_trending
WHAT ROBINHOOD USERS ARE BEING SHOWN: the Robinhood Chain trending list (the one on the Robinhood Wallet's home screen), read every minute - rank, market cap, 24h change, volume, pool depth and pool age, keyed by token CONTRACT because one ticker routinely covers several different tokens. `new_on_trending` is every coin whose contract appeared on that list for the first time, with when. `launches` is Robinhood Chain tokens under 7 days old holding $100K or more in the pool. `listings` is what Robinhood itself added. ⚠ Read from the public Robinhood Chain trending feed, which matched the Wallet's own list when checked 2026-10-04 - it is NOT read from inside the Wallet app, so say 'trending on Robinhood Chain'. ⚠ These are thin, new tokens: pool depth is how much can actually be sold, most launches never reach the list, and nothing here is a recommendation. A stopped watch answers 503, never an empty list. Requires a live NoVo MCP & API subscription.
sector
get_sector_heatmap
Today's move by sector, the data behind the free sector heatmap.
session
get_session_history
WHAT THIS TICKER'S SESSIONS HAVE ACTUALLY LOOKED LIKE across every session NoVo has logged - counts and medians by section, scoped to SPY, QQQ or IWM, with the market-wide sections (coverage, the whole listed options market) carried alongside because they are equally true of every ticker. ⚠ IT DESCRIBES, IT DOES NOT PREDICT: a median over logged sessions is what happened, not what happens next, and the response carries not_a_forecast saying so. With no sessions logged for a ticker it answers 200 with logged:false - a statement about OUR RECORD, not about that ticker's sessions. Computed over our own logged history, so it cannot be rebuilt from a third-party feed. Requires a live NoVo MCP & API subscription.
short
get_short_volume
FINRA off-exchange short volume for ONE ticker, ranked against that ticker's own recent history — pass `ticker` for any name we carry, or omit it for the whole published set alongside index-mover earnings, the VIX term structure and options volume. A ticker we do not carry is REFUSED BY NAME with the covered list, never answered with another instrument's number. ⚠ READ SHORT VOLUME AS ONE-SIDEDNESS, NOT AS A BEARISH VOTE: most off-exchange short prints are market makers hedging, so a high reading says the tape was one-sided, not that anyone is positioned for a fall. The rank is a percentile over that ticker's last 120 sessions; under 20 samples it reports `rank: null` rather than a number computed off five points. Free; FINRA's file lands once a day after the close, and a ticker that stopped printing is marked `stale` with its own date rather than passed off as today's.
stock
get_stock_tokens
EVERY ROBINHOOD STOCK TOKEN on Robinhood Chain: shares that exist on-chain (the contract's own supply), tokenized value, mint and redeem flow over a day and over a week with the window each was measured over, Robinhood's own mint/burn figure for today, the quote with its spread, a halt flag, and the on-chain pool price against the quote where a pool exists. RANK IT with `sort`: tokenized (default), flow, flow_week, mint_burn, onchain_premium, spread. Pass `symbol` for one token and its day-by-day supply record. Use for 'which stock tokens are being minted', 'how much SPY is tokenized', 'which token trades away from its quote'. ⚠ `price_basis` other than 'quote' means the price is approximate: outside market hours Robinhood's quote goes wide and its midpoint is not a price. ⚠ Positive flow is minting, negative is redeeming; it is supply change, not buying or selling pressure. ⚠ IWM has no stock token. Requires a live NoVo MCP & API subscription.
stocks
get_stocks_onchain
STOCKS THAT TRADE ON-CHAIN, in two forms. PERPS: every stock, index, commodity and FX perp on Hyperliquid's builder dexes, live and open all week including weekends - mark, 24h change, funding as a yearly rate (positive means longs pay shorts), open interest, volume and premium to the oracle, plus open-interest change and average funding from NoVo's OWN hourly record. ⚠ That record began 2026-10-04 and `history.span_hours` says how long it is - never call a short record a 7-day figure. `implied_open` is each index perp's move since the last cash close: the S&P 500 perp for SPY, the Nasdaq 100 perp for QQQ. ⚠ There is NO liquid small-cap perp, so IWM has none - say so, never borrow the S&P. STOCK TOKENS: Robinhood's tokenized stocks on Robinhood Chain - shares that exist on-chain, tokenized value, mint and redeem flow with the window it was measured over, and the on-chain pool price against the quote. ⚠ `price_basis` other than 'quote' means the token's price is approximate: outside market hours Robinhood's quote goes wide and its midpoint is not a price. Pass `symbol` for one name (SPY and QQQ are answered by their index perp and their token); omit it for the largest of each. Measurements of size and positioning, never a direction call. Requires a live NoVo MCP & API subscription.
ticker
get_ticker_brief
EVERYTHING THE FREE SURFACE CARRIES FOR ONE SINGLE NAME, IN ONE CALL - pass symbol=NVDA. Four sections: FINRA off-exchange short volume (if the name is in the covered universe, ranked against its own history), the next earnings date (Nasdaq's calendar passed through), US House and Senate disclosures for the name (with the filing lag), and StockTwits self-tagged chatter. ⚠ THIS IS NOT THE DEALER MAP: the map covers SPY, QQQ and IWM only, and `dealer_map.covered` is false for every other name - there is no gamma flip, no walls and no net GEX for it on any NoVo surface, free or paid. Say so rather than substituting an index. Each section keeps its own as_of and as_of_kind; the top-level stamp is the OLDEST and WEAKEST of them. A section that cannot answer is `carried: false` with a reason - 'no filings for this name' and 'the feed did not answer' are different facts and the payload keeps them apart. Not positioning, not flow, not advice.
volatility
get_volatility_record
VIX, VXN and RVX ranked against their OWN history back to 1990 — last value, percentile against the whole series and against the last two years, min/median/max, plus term structure, VVIX and SKEW. Use this to answer 'is volatility actually high' with a percentile and the window it is measured over instead of an impression.
wire
get_wire_news
The market news wire NoVo polls, newest first: headline, publisher, timestamp and the tickers each story is tagged to. It reports `symbols_polled` and `more_in_window` so an agent can tell a quiet tape from a truncated read - a short list here is not automatically a quiet market.

Endpoints

URLTransportStateLatencyChecked
https://novo-options.trade/api/mcp streamable-http answering 309 ms 2 min ago

Alternatives to Dr. NoVo

same job, measured the same way
Sharpnel Trading — Dealer Gamma Levels
by sharpnel-trading

Free dealer-gamma call walls, put walls and gamma flip for ES, NQ, SPX and QQQ, graded daily.

5 tools answering
Spraay X402 MCP
by plagtech

MCP server for Spraay x402 Gateway. 60 tools for crypto payments, DeFi, and AI on Base.

69 installs/wk local only
BackQuant
by backquant

Crypto options dealer gamma, IV, flow and trade tape for BTC, ETH, SOL and HYPE.

answering
SDK
by marginpad

Free crypto-futures paper trading and live market data for AI agents. 29 tools; no key for data.

31 tools answering
MyCryptoParadise
by mycryptoparadise

Search MyCryptoParadise crypto trading education and news, and find its free market tools

5 tools answering
API Hub
by gadgethumans-api

300+ free MCP tools: weather, crypto, DNS, QR, colors, SEO, UUIDs, and more.

local only
Agent Einstein — Crypto & Market Intelligence
by emc2ai

AI price forecasts, whale flows, market sentiment and prediction signals. 18 tools free, no account.

40 tools answering
AkTools MCP Server
by aahl

MCP Server for stock and crypto

282 installs/wk local only

Dr. NoVo — questions

Answers built from our own checks of this server.

What can Dr. NoVo do?
It exposes 40 tools, read directly from the server on our last check. Among them: ask_novo, cancel_alert, create_alert, get_alerts, get_base_rates, get_congress_trades and 34 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Dr. NoVo working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 0 of 91 checks got a reply (0.0%), average response time 309 ms. The bar chart above shows every period we have measured.
The registry lists Dr. NoVo as active — why does it not respond?
The official MCP registry stores what the author submitted; it does not verify that the server still runs. We check the endpoint ourselves, and this one does not answer. Catalogues that copy the registry without checking will show it as working.
How do I connect Dr. NoVo?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Dr. NoVo need an API key?
No. Dr. NoVo completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 40 of them are readable on this page. This is what we observed, not what the docs claim.