Read-only crypto research skills that check a price, RSI and ATR against independent sources.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Token symbol, e.g. BTC
Price to read the ladder at (default: Binance spot, which is what Polymarket's crypto ladders resolve on)
1 to 14 (default 7)
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.
| Argument | Type | Description |
|---|---|---|
| spot | number | Price to read the ladder at (default: Binance spot, which is what Polymarket's crypto ladders resolve on) |
| symbol* | string | Token symbol, e.g. BTC |
| horizon_days | integer | 1 to 14 (default 7) |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Token symbol, e.g. SOL |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"description": "Token symbol, e.g. SOL"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| k | number | Distance in ATRs (default 1) |
| as_of | string | YYYY-MM-DD: use only candles closed before this day (scoring a past call) |
| event | string | Default touch |
| symbol* | string | Token symbol, e.g. SOL |
| direction | string | Default up |
| atr_14_pct | number | RYO's ATR(14) as % of price (analyze_token or deep_analysis) |
| horizon_days | integer | 1 to 14 (default 3) |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| hours | integer | Look-back window in hours (default 24) |
| tokens | array | Symbols to track; default = every cashtag, ticker or name of a known major found |
| voices* | array | Up to 20 ids like tg:WatcherGuru, bs:handle.bsky.social or x:handle |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| claim* | string | The story to verify, in one sentence |
| symbol | string | Token symbol to attach market evidence for |
| max_results | integer | Search results to inspect (default 6, max 20) |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Token symbol, e.g. SOL |
| atr_stop_pct | number | 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 | array | 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 | number | Latest BTC funding from RYO monitor_market_sentiment_shift (evidence.funding.latest_bps) |
| reference_derivatives | object | RYO deep_analysis data.derivatives for this symbol; fetched from RYO when omitted and a RYO key is set |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Token symbol, e.g. SOL |
| reference_path | string | Where the reference price came from |
| reference_price | number | Price to compare against, e.g. RYO deep_analysis price |
| reference_fear_greed | number | A Fear & Greed value to compare with alternative.me |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| days | integer | lookback for performance, 7..90 (indicators always use 200 closed daily candles) |
| symbol* | string | Token symbol, e.g. SOL |
| reference_atr_14 | number | ATR(14) in USD to compare against |
| reference_rsi_14 | number | RSI(14) to compare against |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| symbol | string | Token symbol, e.g. SOL; omit for every token |
| horizon_hours | integer | 24 (default) or 72 |
{
"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
}