Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "research_opportunities" and "research_trade_plan"
⟨40 unchanged words⟩ chase is the point.","properties":{"breakEvenWinRatePct":{"description":"Win rate at which the setup breaks even net of those fees, in percent; null when a win doesn't cover its fees","type":["number","null"]},"entryGapAtr":{"description":"How far live price ⟨85 unchanged words⟩ merged market price the entry was checked against","type":"number"},"netRewardRisk":{"description":"Reward:risk net of base-tier fees (Binance: maker entry and target, taker stop). What the geometry pays; research_trade_plan adds carry and slippage.","type":"number"},"rewardRisk":{ ⟨711 unchanged words⟩
⟨151 unchanged words⟩ and target, reward:risk under 2:1, costs that pull a 2:1 plan under it, leverage over 10x, and an entry far from live. Costs: fees per fill (a venue's base tier, Binance by default; override with venue, fee_bps, maker_fee_bps), funding carry over hold_hours at the current rate with the rate's 1y percentile, and, when sized, the slippage of a market exit of the whole size at the stop against today's visible book; they give a net reward:risk, the break-even win rate, and the stop, target and liquidation outcomes in R (and USD and % of account when sized). Everything reads in R and % without an ⟨158 unchanged words⟩
⟨31 unchanged words⟩ entry price","type":"number"},"fee_bps":{"description":"Optional taker fee per fill in bps of notional (e.g. 4.5), when the user states their own fee tier. Overrides the venue's.","type":"number"},"hold_hours":{"description":"Optional expected holding time in hours, e.g. 72 for three days: prices the funding carry over the hold into the net reward:risk.","type":"number"},"leverage":{"description":"Optional leverage the position ⟨23 unchanged words⟩ unless given.","type":"number"},"maker_fee_bps":{"description":"Optional maker fee per fill in bps (negative for a rebate). Overrides the venue's.","type":"number"},"order_type":{"description":"How the entry was ⟨75 unchanged words⟩
Added "market_history"; removed "risk_position_size"; changed the definition of "derivatives_liquidations", "derivatives_open_interest", "funding_current" and 3 more
⟨85 unchanged words⟩ can hide heavy liquidations that new positions replaced. A 1y baseline ranks the trailing ~24h of longs and shorts against a year of daily totals (percentile, 'largest since' date, median day, the year's three largest days per side), so a figure can be called big or routine for this coin.
{"properties":{"baseline1y":{"description":"The trailing ~24h (newest six 4h buckets) ranked against a year of CoinGlass daily totals over the same venues","properties":{"available":{"type":"boolean"},"days":{"description":"Settled days ranked against","type":["integer","null"]},"largestLongDays":{"items":{"properties":{"timeMs":{"type":"integer"},"usd":{"type":"number"}},"type":"object"},"type":"array"},"largestShortDays":{"items":{"properties":{"timeMs":{"type":"integer"},"usd":{"type":"number"}},"type":"object"},"type":"array"},"longs":{"properties":{"largestSinceMs":{"description":"Newest day at or above this total, set only from the 75th percentile up; null there means above every day of the year","type":["integer","null"]},"medianDayUsd":{"type":"number"},"percentile":{"description":"Rank among the year's settled daily totals, 0-100","type":"number"},"usd":{"description":"Trailing-window total","type":"number"}},"type":["object","null"]},"note":{"description":"Why the baseline is missing","type":["string","null"]},"shorts":{"properties":{"largestSinceMs":{"description":"Newest day at or above this total, set only from the 75th percentile up; null there means above every day of the year","type":["integer","null"]},"medianDayUsd":{"type":"number"},"percentile":{"description":"Rank among the year's settled daily totals, 0-100","type":"number"},"usd":{"description":"Trailing-window total","type":"number"}},"type":["object","null"]},"trailingFromMs":{"description":"Start of the trailing window (20-24h back)","type":["integer","null"]}},"type":"object"},"Changed the definition of "research_trade_plan"
⟨80 unchanged words⟩ through the entry. market: filled at placement.AskOmit it when the userwhenhasn'tansaid: if the entryabovewas through the market(long)atorplacement,belowoneit
Authorization required, Bearer, issuer https://www.f1ow.com
Changed the definition of "research_trade_plan" and "risk_position_size"
Trade Plan Check & ReplayChecksCheck,onereviewconcreteor replay a perp trade plan (entry, stop, target, account, risk %), before it is placed or after:givethe tool for 'check this plan', 'is this trade good' and 'how did my trade do'. Renders an interactive trade ticket. Give
Added "research_trade_plan" (33 tools before, 34 now)
Trade Plan Check — Checks one concrete perp trade before it is placed: give the coin, entry, stop, optional target, account size and risk percent (and optionally leverage). Returns the fixed-fractional size, notional, margin at the leverage (default: the smallest whole leverage that carries the notional), the isolated liquidation price (first-tier 0.5% maintenance margin, so the optimistic case), the funding the position pays or receives per day at the current rate, the 4h ATR, the perp levels around the plan (from flow_levels: volume nodes, value area, liquidation clusters, entries, walls), and named checks: l…
Authorization required, Bearer, issuer https://www.f1ow.com
Changed the definition of "market_candles" and "ta_technicals"
⟨49 unchanged words⟩ perpetual marks), or 'auto' (default: spotpreferred,preferred; perpfallbackwhen spot fails, or when spot's history is shorter than the request and than 210 candles while perp's is materially longer — e.g. a coin whose spot pair listed recently). spot/perp are hard constraints and error rather ⟨26 unchanged words⟩
⟨56 unchanged words⟩ trades, perpetual-futures marks, or auto (spotpreferred,preferred; perpfallbackwhen spot fails or its history is too short). Default auto.","enum":["spot"
Changed the definition of "catalysts_calendar" and "ta_technicals"
⟨7 unchanged words⟩ next 7 days. Optionally filter by comma-separated coinIDssymbols (e.g.'bitcoin'sol,ethereum'eth').
{"properties":{"coins":{"description":"Comma-separated coinIDssymbols, e.g.'bitcoin'sol,ethereum'.eth'. Omit for all coins.","type":"string
Changed the definition of "research_positioning"
⟨163 unchanged words⟩ :"object"},"type":"array"},"skippedAxes":{"description":"Axes attempted but not computed; the stance is over the computed ones only","items":{"properties":{"name":{"type":"string"},"reason":{"description":"The feed that was offline, or what the coin lacks","type":"string"}},"type":"object"},"type":"array"},"stance":{"description":"Overall positioning-fragility label", ⟨89 unchanged words⟩
Changed the definition of "flow_levels"
⟨387 unchanged words⟩ "number"}},"type":"object"},"window":{"description":"The window at a glance: price from the venue that traded most, OI from the flow venue, volume in the band, liquidations in the sample","properties":{"liquidatedUsd":{"type":"number"},"oiChangePct":{"type":"number"},"oiEndUsd":{"type":"number"},"oiStartUsd":{"type":"number"},"oiVenue":{"type":"string"},"priceChangePct":{"type":"number"},"priceEnd":{"type":"number"},"priceStart":{"type":"number"},"priceVenue":{"type":"string"},"volumeUsd":{"type":"number"}},"type":"object"},"windowHours":{"type":"integer"}},"required ⟨4 unchanged words⟩
Authorization required, Bearer, issuer https://www.f1ow.com
Added "flow_levels"; changed the definition of "derivatives_flow" (32 tools before, 33 now)
Perp Flow (BinanceOI × Taker, Binance or Bybit)
BinanceUSDT-margined perpetual flow for one coin on a 5m/15m/1h grid, from one venue:openBinance, or Bybit for coins Binance doesn't list (e.g. WAVES). Open interest (USD) at every bucket edge joined ⟨21 unchanged words⟩ (OI direction × the aggressive side). Bybit publishes the taker split only for its last ~1000 trades, so older Bybit buckets are read from OI against price direction instead, and every read states its basis (taker or price). Reports the window, the open-interest swings of 1%
Added "derivatives_flow" and "derivatives_liquidations"; changed the definition of "flow_orderbook" (30 tools before, 32 now)
⟨10 unchanged words⟩ bps, top-of-book depth (USD) per side,andbid/ask depthimbalance.imbalance, and the cost vs mid of $10k and $100k market orders against the visible levels. Positive imbalance means more bid depth. Single-venue by ⟨10 unchanged words⟩ doesn't list; the response names the venue thatanswered.answered and how far its visible book reaches.
⟨46 unchanged words⟩ depth, USD","type":"number"},"fillCosts":{"description":"Cost vs mid of a market order of each size against the visible levels","items":{"properties":{"buyBps":{"description":"Average buy fill vs mid in bps; absent when the visible asks can't fill the size","type":"number"},"sellBps":{"description":"Average sell fill vs mid in bps (positive = cost); absent when the visible bids can't fill the size","type":"number"},"sizeUsd":{"type":"number"}},"required":["sizeUsd"],"type":"object"},"type":"array"},"
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Changed the definition of "sentiment_twitter"
Searchesrecentpublic X Posts fromatheserver-curatedlastset7ofdaystrustedusing Xaccounts.searchCallerssyntaxmay(keywords,narrow
Changed the definition of "sentiment_twitter"
SearchesTwitter/X and returnsrecentmatchingPoststweetsfromwithaengagementserver-curated(likes,setretweets,ofreplies,trustedviews)Xandaccounts.
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Certificate changed, valid to 2026-12-23
Certificate changed, valid to 2026-12-23
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Changed the definition of "news_search" and "research_token_view"
Searchesthe webfornews andrecentarticlesnews on a topicfrom—thearticles,lastmarket-moving7postsdaysand(webexchangeresultsannouncements,
Authorization required, Bearer, issuer https://www.f1ow.com
Authorization required, Bearer, issuer https://www.f1ow.com
Certificate recorded, valid to 2026-10-25
Authorization required, Bearer, issuer https://www.f1ow.com
Certificate recorded, valid to 2026-10-25
Authorization not required
First tool surface recorded: 30 tools (server version 0.1.0)
Showing the latest 37 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨91 unchanged words⟩ be judged against where it has actually been. A 1y line ranks the level and today's 24h change against a year of daily closes (percentile, range with dates); the change rank is the better read, since the USD level mostly tracks price. Falls back to a single-venue figure if the ⟨21 unchanged words⟩
⟨102 unchanged words⟩ has actually been rather than an absolute threshold. A 1y line ranks the current rate against a year of daily closes (percentile, low/median/high with dates), so 'high' means high for this coin, not just for the week. Set 'points' to trim the series (omit for ⟨9 unchanged words⟩
⟨259 unchanged words⟩ first structural level — priced so it feedsrisk_position_sizeresearch_trade_plan directly. 'tier' filters major/medium/all; 'limit' caps the ranked ⟨111 unchanged words⟩
⟨17 unchanged words⟩ :{"description":"ATR-and-structure prices, ready forrisk_position_size.research_trade_plan. Absent for a setup with no priceable side ⟨827 unchanged words⟩
Check, review or replay a perp tradeplansetup (entry, stop,target, account, riskoptional%target), before it is placed or after: the tool for 'check thisplan'setup', 'is this trade good' and 'how did my trade do'. Renders an interactive trade ticket. Give the coin, entry,stop, optional target, account sizeandrisk percent (andstop; optionally target, leverage, order typeand, placed_at). Returns,theandfixed-fractionalaccount size,notional, marginwithatriskthepercent.leverageReturns(defaultreward:risk, thesmalleststop'swholedistanceleverageinthat%carriesandthe4hnotional)ATR, the isolated liquidation price at the leverage (first-tier 0.5% maintenance margin, so the optimistic case),thefundingthe position pays or receivesper day at the current rate (in % of notional,theand4hinATRUSD when sized), the perp levels around theplansetup (from flow_levels: volume nodes, value area, ⟨4 unchanged words⟩ and named checks: liquidation before the stop,margin above the account,price already through the stop, a stop inside ⟨30 unchanged words⟩ 10x, and an entry far from live. Everything reads in R and % without an account; give account_size and risk_percent (both or neither) to add the fixed-fractional size, notional and margin. Pass placed_at (when the order was placed) to replay theplansetup since then from public candles, filling the ⟨105 unchanged words⟩ it after research_opportunities or flow_levels has suggested asetup, and before sizing with risk_position_size alone;setup; it is a check of theplansetup, not a signal.
{"properties":{"account_size":{"description":"AccountOptional account equity in USD, with risk_percent: adds the position size, notional and margin. Leave both out when the user didn't give them.","type":"number"},"entry":{ ⟨8 unchanged words⟩ "Optional leverage the position is opened at,1–200.1–200, for the liquidation price. Default when sized: the smallest whole leverage that carries thenotional.notional; unsized: no liquidation price unless given.","type":"number"},"order_type":{ ⟨165 unchanged words⟩ :"string"},"risk_percent":{"description":"PercentOptional percent of the account lost if the stop is hit, e.g.11; only with account_size","type":"number"},"stop":{ ⟨29 unchanged words⟩ ,"required":["symbol","entry","stop","account_size","risk_percent"],"type":"object"}
⟨33 unchanged words⟩ ATR(14) with 2xATR stop suggestions (feedrisk_position_sizeresearch_trade_plan), Bollinger(20,2) with %B and ⟨106 unchanged words⟩
Market History — Bulk history for one coin, one metric per call, in pages: 'price' (OHLCV candles, spot or perp), 'open_interest' (market-wide aggregate USD), 'funding' (OI-weighted rate, %/8h and annualized) or 'liquidations' (market-wide long/short USD per bucket). Returns up to 'limit' rows (default 200, max 1000) at or before 'end' (default now), oldest first, as compact columns + rows; pass the returned nextEndMs as 'end' to fetch the page before it, and 'start' to stop there. Reach: price is full venue history (Binance spot from 2017, futures from 2019) at 1m–1w; derivatives come from CoinGlass at 4h (a…
Position Sizing — Fixed-fractional position sizing — a local calculation, not a data-provider lookup. Given account_size, risk_percent, entry and stop, returns position size in units, notional, implied leverage, stop distance, and — if a target is given — the reward:risk ratio. Direction (long/short) is inferred from the stop's side of entry. Deterministic: same inputs always give the same result. Arithmetic only: to check a plan against the market (levels, liquidation, funding) or to see how a trade already placed played out, use research_trade_plan, which includes this sizing.
⟨33 unchanged words⟩ the notional.","type":"number"},"order_type":{"description":"How the entry was placed, for the replay. limit (default): fills when price comes to the entry, or at once if the entry was already on the far side of the market. stop: a breakout trigger that fills when price comes through the entry. market: filled at placement. Ask the user when an entry above the market (long) or below it (short) could be either.","enum":["limit","stop","market"],"type":"string"},"placed_at":{"description":"Optional: when the order was placed, as ISO 8601 (e.g. 2026-10-14T12:00:00Z) or unix time, up to 90 days back. Replays the plan since then.","type":"string"},"risk_percent":{"description":"Percent of the account ⟨48 unchanged words⟩
⟨49 unchanged words⟩ Deterministic: same inputs always give the same result. Arithmetic only: to check a plan against the market (levels, liquidation, funding) or to see how a trade already placed played out, use research_trade_plan, which includes this sizing.
⟨81 unchanged words⟩ routes candles (spot|perp|auto, default auto: spotpreferred,preferred; perpfallbackwhen spot fails or a recent spot listing has too little history for the indicators). Support/resistance comes from the same candles: ⟨42 unchanged words⟩
⟨35 unchanged words⟩ 'spot', 'perp', or 'auto' (default: spotpreferred,preferred; perpfallbackwhen spot fails or its history is too short)","type":"string"},"symbol": ⟨13 unchanged words⟩
⟨84 unchanged words⟩ default auto: spot preferred, perp fallback).AltFINSSupport/resistancevendorcomessupport/resistancefrom the same candles: daily swing highs/lows over the last year, clustered within half a daily ATR, nearest 3 on each side with distance, swing count and last touch, plus the year's range. For levelsarefromappendedexecutedwhenperpthatflowfeed(volumeisatup.price, liquidations, OI), use flow_levels.
{"properties":{"altFinsfailedIntervals":{"description":"VendorIntervalslevelsthatenrichment;couldomittednotwhenbe analyzed, with reasons","items":{"type":"string"},"type":"array"},"lastPriceUsd":{"description":"Newest close of theAltFINSfinestfeedanalyzedistimeframe","type":"number"},"levels":{"description":"Dailydownswing support/resistance; omitted when unavailable (see levelsUnavailable)","properties":{"longTermTrendinterval":{"type":"string"},"mediumTermTrendmeasuredFromUsd":{"description":"Price the levels are split around and distances measured from (the headline lastPriceUsd)","
⟨27 unchanged words⟩ Aggressors pushed one way, price went the other (taker basis only)","type":"boolean"},"endMs":{ ⟨20 unchanged words⟩ ,"read":{"type":"string"},"readBasis":{"enum":["taker","price"],"type":"string"},"startMs":{"type":"integer"},"takerBuyPct" ⟨2 unchanged words⟩ ,"takerBuyUsd":{"type":"number"},"takerCoveragePct":{"type":"number"},"takerSellUsd":{"type":"number"}},"type ⟨18 unchanged words⟩ ,"read":{"type":"string"},"readBasis":{"enum":["taker","price"],"type":"string"},"takerBuyPct":{"type":"number"},"timeMs" ⟨12 unchanged words⟩ ,"symbol":{"type":"string"},"takerSplitFromMs":{"description":"When the venue covers only part of the window: the first bucket with a taker split","type":"integer"},"venue":{"type":"string"},"window":{" ⟨27 unchanged words⟩ ,"oi_flat"],"type":"string"},"readBasis":{"enum":["taker","price"],"type":"string"},"takerBuyPct":{"type":"number"},"takerBuyUsd":{"type":"number"},"takerCoveragePct":{"description":"Share of volume whose taker split is known","type":"number"},"takerSellUsd":{"type ⟨11 unchanged words⟩
Perp Levels (volume, OI, liquidations, walls) — Perp price levels for one coin, from what printed rather than from a chart: executed volume at price on every venue that lists it (Binance, Bybit, BingX, Hyperliquid), with the value area (70% of volume around the POC), high-volume nodes and thin zones (prices crossed without trading, where moves tend to run); open-interest changes at price split into long and short entries; realized liquidations at price (OKX/Gate sample); and resting walls from deep books on several venues, counted only when a second snapshot 2 s later still shows them. Every level is graded by evidence — traded (volume, li…
Perp Flow (Binance OI × Taker) — Binance USDT-margined perpetual flow for one coin on a 5m/15m/1h grid: open interest (USD) at every bucket edge joined to taker buy and sell volume (USD), with each stretch read as new longs, new shorts, short covering or long unwind (OI direction × the aggressive side). Reports the window, the open-interest swings of 1% or more with the price and taker flow inside them (flagging aggressors absorbed by passive orders), and the buckets where OI moved most. One venue, the largest by perp volume on the majors; not the market-wide aggregate. Use it to say whether a move was positions opening or c…
Liquidation History — Liquidation history for one coin's perpetuals: market-wide long/short liquidations (USD) in 4h buckets and the 24h split by venue, plus a minute-level timing sample of individual liquidation orders from venues that publish them (OKX, Gate) with detected cascades (time, side, size, order count, price range) and the largest orders. The sample is a share of the market, stated per bucket, never scaled up. Use it to say WHEN and WHICH SIDE was forced out, instead of inferring liquidations from price and open interest: flat OI can hide heavy liquidations that new positions replaced.
{"properties":{"accounts":{"description":"Optional subset of the server's trusted X accounts. Untrusted handles are rejected.","items":{"type":"string"},"type":"array"},"latest":{"description":"Return the newest Posts ⟨36 unchanged words⟩ :"integer"},"query":{"description":"SearchX recent-search query (keywords,$cashtagphrases, hashtags, cashtags, or#hashtagoperators), e.g. \"$BTC\", \"bitcoin ETF\", or \"bitcoinfrom:handleetf\BTC\". Self-serve query limit: 512 characters.","type":"string"}},"required": ⟨3 unchanged words⟩
{"properties":{"tweets":{"items":{"properties":{"author":{"description":"Author handle without @","type":"string"},"createdAt":{"description":"ISO 8601","type ⟨12 unchanged words⟩ :"string"},"url":{"description":"CanonicalX PostURLpermalink","type":"string"},"views":{ ⟨8 unchanged words⟩
{"properties":{"accounts":{"description":"Optional subset of the server's trusted X accounts. Untrusted handles are rejected.","items":{"type":"string"},"type":"array"},"latest":{"description":"Return the newesttweetsPosts instead oftop-relevance.top relevance. Defaults to false.","type":"boolean"},"limit":{"description":"MaxtweetsPosts to return (1-501-10). Defaults to10.5.","type":"integer"},"minLikes":{"description":"OnlytweetsPosts with at least this many likes.Useful for cutting spam in top-relevance mode; avoid combining with latest=true (brand-new tweets have no likes yet, so it returns nothing).Defaults to 0.","type":"integer"} ⟨21 unchanged words⟩
⟨3 unchanged words⟩ properties":{"author":{"description":"Authorscreen namehandle(without @)","type":"string"},"authorFollowerscreatedAt":{"typedescription":"numberISO 8601"},"authorName":{"type":"string"},"authorVerifiedlikes":{"type":"booleannumber"},"createdAtreplies":{"description":"ISO 8601; empty when the venue omits it","type":"stringnumber"},"likesretweets":{"type":"number"},"repliestext":{"type":"numberstring"},"retweetsurl":{"typedescription":"numberCanonical X Post URL"},"text":{"type":"string"},"views":{"type ⟨7 unchanged words⟩
⟨194 unchanged words⟩ "news":{"items":{"properties":{"coins":{"description":"Coin symbols the feed tagged on the item, e.g. [\"BTC\",\"ETH\"]","items":{"type":"string"},"type":"array"},"date":{"description":"Publish date; omitted when unknown","type":"string"},"impact":{"description":"Measured price move after the headline broke; omitted when not measured","properties":{"coin":{"type":"string"},"down":{"description":"Worst move reached in the window, percentage points","type":"number"},"pct":{"description":"Net move over the window, percentage points, e.g. 1.9","type":"number"},"up":{"description":"Best move reached in the window, percentage points","type":"number"},"windowMs":{"description":"Measurement window in milliseconds, e.g. 3600000","type":"number"}},"type":"object"},"kind":{"description":"Item type: article, tweet or exchange (announcement); empty when the feed doesn't say","type":"string"},"snippet":{ ⟨265 unchanged words⟩