MCP Server

Nota

io.github.PugarHuda/nota
Crypto & Web3 Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Provides independent cryptocurrency market research covering prices, technical indicators, liquidity, derivatives positioning, news, sentiment, and historical scenarios.

crowd_odds
Crowd Odds
Prediction-market implied probability that a token trades higher than now at a horizon: the Polymarket 'above $K on <date>' ladder (Kalshi's KX<coin>D ladder as fallback) expiring within a day of now + horizon, liquid strikes only, made monotone and interpolated at spot. BTC, ETH, SOL, XRP (and DOGE on Kalshi); null when no market.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'spot': {'type': 'number', 'description': "Price to read the ladder at (default: Binance spot, which is what Polymarket's crypto ladders resolve on)"}, 'symbol': {'type': 'string', 'description': 'Token symbol, e.g. BTC'}, 'horizon_days': {'type': 'integer', 'description': '1 to 14 (default 7)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
liquidity_check
Liquidity Check
Macro liquidity from DefiLlama (no key): 7-day and 30-day change of the total USD stablecoin supply, and of DeFi TVL on the token's own chain (ETH, SOL, BNB, AVAX and other L1/L2 tokens). Each leg reports its own as_of and availability; a token without a chain of its own gets no TVL rather than a borrowed one.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
move_base_rate
Move Base Rate
Empirical probability that a token moves k ATRs (up or down, touched or closed beyond) within h days, counted from ~400 days of OKX daily candles on days in the same ATR tercile as today, with a time-split holdout. Pass RYO's atr_14_pct to measure the distance in RYO's ATR; k=0 with event=close gives the plain 'higher after h days' rate.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'k': {'type': 'number', 'description': 'Distance in ATRs (default 1)'}, 'as_of': {'type': 'string', 'description': 'YYYY-MM-DD: use only candles closed before this day (scoring a past call)'}, 'event': {'enum': ['touch', 'close'], 'type': 'string', 'description': 'Default touch'}, 'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL'}, 'direction': {'enum': ['up', 'down'], 'type': 'string', 'description': 'Default up'}, 'atr_14_pct': {'type': 'number', 'description': "RYO's ATR(14) as % of price (analyze_token or deep_analysis)"}, 'horizon_days': {'type': 'integer', 'description': '1 to 14 (default 3)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
narrative_convergence
Narrative Convergence
Monitor up to 20 user-selected voices (Telegram public channels, Bluesky and X handles) and report which tokens they mention, lexicon-scored sentiment per token, conviction and urgency, and whether the voices converge: at least two voices carry a non-zero net sentiment on the token and every one of them has the same sign.
Read only Open world
Input schema
{'type': 'object', 'required': ['voices'], 'properties': {'hours': {'type': 'integer', 'description': 'Look-back window in hours (default 24)'}, 'tokens': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Symbols to track; default = every cashtag, ticker or name of a known major found'}, 'voices': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 20 ids like tg:WatcherGuru, bs:handle.bsky.social or x:handle'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
news_verify
News Verify
Verify a crypto news claim: count independent domains reporting it (four outlets' RSS headlines plus Tavily or Venice web search), count those whose headline leans the opposite way, and attach the token's RYO analyze_token evidence so the story and the market read sit side by side.
Read only Open world
Input schema
{'type': 'object', 'required': ['claim'], 'properties': {'claim': {'type': 'string', 'description': 'The story to verify, in one sentence'}, 'symbol': {'type': 'string', 'description': 'Token symbol to attach market evidence for'}, 'max_results': {'type': 'integer', 'description': 'Search results to inspect (default 6, max 20)'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
positioning_check
Positioning Check
Decide, field by field, whether RYO's deep_analysis derivatives block can be cited as evidence about this token (identical values across other tokens, sign conflicts with OKX coin-terms open interest), and report OKX perp positioning: premium over spot on OKX and Hyperliquid, 24 h open-interest change in coins, long/short account ratio and its 100-hour percentile, and for BTC/ETH Deribit's DVOL implied 7-day move as a check on stop distance.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL'}, 'atr_stop_pct': {'type': 'number', 'description': "Stop distance in % of price (e.g. RYO's 1.5 x atr_14_pct), checked against the DVOL implied 7-day move"}, 'peer_derivatives': {'type': 'array', 'items': {'type': 'object'}, 'description': "Same-day RYO derivatives blocks for other symbols: [{symbol, funding_rate_bps, open_interest_change_24h_pct}]; taken from the day's scorecard locks when omitted"}, 'ryo_btc_funding_bps': {'type': 'number', 'description': 'Latest BTC funding from RYO monitor_market_sentiment_shift (evidence.funding.latest_bps)'}, 'reference_derivatives': {'type': 'object', 'description': 'RYO deep_analysis data.derivatives for this symbol; fetched from RYO when omitted and a RYO key is set'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
price_crosscheck
Price Crosscheck
Fetch independent USD spot prices for a symbol from CoinGecko, Coinbase, Kraken, Binance and DefiLlama (no keys), drop a source that disagrees with the rest as an outlier, report median and spread, and flag how far a reference price (e.g. RYO's) deviates from them.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL'}, 'reference_path': {'type': 'string', 'description': 'Where the reference price came from'}, 'reference_price': {'type': 'number', 'description': 'Price to compare against, e.g. RYO deep_analysis price'}, 'reference_fear_greed': {'type': 'number', 'description': 'A Fear & Greed value to compare with alternative.me'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
technicals_crosscheck
Technicals Crosscheck
Recompute RSI(14) and ATR(14) (Wilder smoothing) from 200 closed UTC-day candles (OKX, else Binance, else CoinGecko 4h OHLC aggregated to days) plus 1d/7d/30d performance, and report how far reference values (e.g. RYO's) deviate from the independent calculation.
Read only Open world
Input schema
{'type': 'object', 'required': ['symbol'], 'properties': {'days': {'type': 'integer', 'description': 'lookback for performance, 7..90 (indicators always use 200 closed daily candles)'}, 'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL'}, 'reference_atr_14': {'type': 'number', 'description': 'ATR(14) in USD to compare against'}, 'reference_rsi_14': {'type': 'number', 'description': 'RSI(14) to compare against'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
verdict_track_record
Verdict Track Record
How RYO's own deep_analysis plans have fared: locked daily for 25 majors and settled on OKX hourly candles (stop or +1R target first, 24 h or 72 h). Returns counts by verdict and by confluence state, plans whose verdict leans against their own direction, and the latest locked verdict. Omit the symbol for all tokens.
Read only
Input schema
{'type': 'object', 'required': [], 'properties': {'symbol': {'type': 'string', 'description': 'Token symbol, e.g. SOL; omit for every token'}, 'horizon_hours': {'enum': [24, 72], 'type': 'integer', 'description': '24 (default) or 72'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$defs': {'Summary': {'type': 'object', 'title': 'Summary', 'properties': {'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'key_points': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Key Points'}}, 'additionalProperties': True}}, 'title': 'Envelope', 'required': ['tool', 'status'], 'properties': {'data': {'type': 'object', 'title': 'Data', 'additionalProperties': True}, 'tool': {'type': 'string', 'title': 'Tool'}, 'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'status': {'enum': ['ok', 'partial', 'unavailable'], 'type': 'string', 'title': 'Status'}, 'request': {'type': 'object', 'title': 'Request', 'additionalProperties': True}, 'summary': {'$ref': '#/$defs/Summary'}, 'trace_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Trace Id', 'default': None}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Warnings'}, 'data_mode': {'enum': ['live', 'mixed', 'simulated', 'unknown'], 'type': 'string', 'title': 'Data Mode', 'default': 'unknown'}, 'availability': {'type': 'object', 'title': 'Availability', 'additionalProperties': True}, 'schema_version': {'anyOf': [{'type': 'string'}, {'type': 'integer'}, {'type': 'null'}], 'title': 'Schema Version', 'default': None}}, 'additionalProperties': True}
Added
crowd_odds
Sept. 21, 2026, 2:54 a.m.
Added
liquidity_check
Sept. 21, 2026, 2:54 a.m.
Changed
verdict_track_record
Sept. 21, 2026, 2:54 a.m.
Changed
move_base_rate
Sept. 21, 2026, 2:54 a.m.
Changed
positioning_check
Sept. 21, 2026, 2:54 a.m.
Changed
technicals_crosscheck
Sept. 21, 2026, 2:54 a.m.
Changed
price_crosscheck
Sept. 21, 2026, 2:54 a.m.
Changed
news_verify
Sept. 21, 2026, 2:54 a.m.
Changed
narrative_convergence
Sept. 21, 2026, 2:54 a.m.
Added
verdict_track_record
Sept. 19, 2026, 2:45 a.m.
Added
move_base_rate
Sept. 19, 2026, 2:45 a.m.
Added
positioning_check
Sept. 19, 2026, 2:45 a.m.
Added
technicals_crosscheck
Sept. 17, 2026, 12:49 p.m.
Added
price_crosscheck
Sept. 17, 2026, 12:49 p.m.
Added
news_verify
Sept. 17, 2026, 12:49 p.m.
Added
narrative_convergence
Sept. 17, 2026, 12:49 p.m.