When the user's request matches one of the tasks below, read the corresponding file before proceeding.
File
When to read
examples/hyperliquid-copy-trading.md
User wants to find traders to follow / copy trade on Hyperliquid
examples/blave-alpha-screening.md
User wants to screen or find high-conviction / small-cap tokens
examples/backtest-holder-concentration.md
User wants to backtest a strategy using Blave alpha signals
examples/truth-social-trump-monitor.md
User wants to monitor Trump's Truth Social posts with translation
examples/btc-etf-flow-monitor.md
User wants to track Bitcoin ETF flows / institutional accumulation (BlackRock IBIT etc.)
examples/bitfinex-auto-lending.md
User wants to auto-lend on Bitfinex (rate-adaptive period + ladder offers)
Output Rule — Chart Auto-Send
Whenever you generate a chart or visualization, send it through the user's notification channel (e.g., Telegram) if and only if the user has explicitly configured one in their environment. Only send to the channel the user themselves set up — never infer or guess an endpoint. If no channel is configured, display the chart inline as usual.
PART 1: Blave Market Data
Setup
No API key or 401/403 → guide user to:
Subscribe:
https://blave.org/landing/en/pricing
— $629/year, 14-day free trial
Create key:
https://blave.org/landing/en/api?tab=blave
Add to
.env
:
blave_api_key=...
and
blave_secret_key=...
Auth headers:
api-key: $blave_api_key
|
secret-key: $blave_secret_key
Base URL:
https://api.blave.org
|
Support:
info@blave.org
|
Discord
Limits
Item
Value
Rate limit
100 req / 5 min —
429
if exceeded, resets after 5 min
Data update
Every 5 minutes
History
Max 1 year
per request
(use multiple requests with different date ranges to retrieve data beyond 1 year)
Timestamps
UTC+0
Usage Guidelines
Multi-coin / ranking / screening
→ always use
alpha_table
first (one request, all symbols)
Historical time series for a specific coin
→ use individual
get_alpha
endpoints
Screening / coin discovery (alpha_table)
→ always fetch fresh data every time; never reuse a cached response from earlier in the conversation
Backtesting (historical kline + indicator series)
→ if you already fetched the data earlier in the conversation and the date range has not changed, ask the user before re-fetching: "I already have data for X from Y to Z — use the existing data or fetch fresh?"
— Blave 頂尖交易員 Top Trader Exposure (BTC only, no symbol param)
period
✓,
start_date
,
end_date
→
{data: {alpha, timestamp}}
GET /sector_rotation/get_history_data
— 板塊輪動 Sector Rotation, no params
All
get_alpha
responses include
stat
:
up_prob
,
exp_value
,
avg_up_return
,
avg_down_return
,
return_ratio
,
is_data_sufficient
Each indicator also has a
get_symbols
endpoint to list available symbols.
Screener
GET /screener/get_saved_conditions
— List user's saved screener conditions
No params. Returns
{data: {: {filters: [...], ...}}}
— a map of condition IDs to their filter configs.
GET /screener/get_saved_condition_result
— Run a saved screener condition
condition_id
✓ (integer) →
{data: []}
Returns 400 if
condition_id
is missing or not an integer; 404 if condition not found for user.
Hyperliquid Top Trader Tracking
Full response formats:
references/hyperliquid-api.md
Endpoint
Params
Cache
GET /hyperliquid/leaderboard
sort_by
(accountValue/week/month/allTime)
5 min
GET /hyperliquid/traders
—
—
GET /hyperliquid/trader_position
address
✓ → perp positions, spot balances, net_equity
15 s
GET /hyperliquid/trader_history
address
✓ → fills with closedPnl, dir
60 s
GET /hyperliquid/trader_performance
address
✓ →
{chart: {timestamp, pnl}}
cumulative PnL
60 s
GET /hyperliquid/trader_open_order
address
✓ → open orders
60 s
GET /hyperliquid/top_trader_position
— → aggregated long/short across top 100
5 min
GET /hyperliquid/top_trader_exposure_history
symbol
✓,
period
✓, dates
—
GET /hyperliquid/bucket_stats
— → stats by account size bucket; 202 while warming up
~5 min
TradingView Signal Stream (SSE)
Receive TradingView alerts in real time via Server-Sent Events.
Endpoint:
GET /sse/tradingview/stream?channel=&last_id=
Event format:
data:
id
— pass as
last_id
on reconnect to resume without losing signals
Default (
last_id=$
) — only new signals; omit on first connect
keepalive
sent every 15 s — ignore
Buffer: last 1000 messages in Redis — short disconnections lose no data
Full Python example with reconnect loop:
references/tradingview-stream.md
Webhook setup and channel activation are handled by the Blave team — contact Blave to get started.
Python examples:
references/blave-api.md
Indicator interpretation:
references/blave-indicator-guide.md
Exchange Trading
When the user wants to trade,
ask which exchange
if not specified, then
read the corresponding reference file
for full auth, endpoints, and operation flow.
Exchange
.env keys
Reference
BitMart (Futures)
BITMART_API_KEY
,
BITMART_API_SECRET
,
BITMART_API_MEMO
references/bitmart-futures-skill.md
BitMart (Spot)
same as above
references/bitmart-spot-skill.md
OKX
OKX_API_KEY
,
OKX_SECRET_KEY
,
OKX_PASSPHRASE
references/okx-skill.md
Bybit
BYBIT_API_KEY
,
BYBIT_API_SECRET
references/bybit-skill.md
BingX
BINGX_API_KEY
,
BINGX_SECRET_KEY
references/bingx-skill.md
Bitget
BITGET_API_KEY
,
BITGET_SECRET_KEY
,
BITGET_PASSPHRASE
references/bitget-skill.md
Binance
BINANCE_API_KEY
,
BINANCE_SECRET_KEY
references/binance-skill.md
Bitfinex
BITFINEX_API_KEY
,
BITFINEX_API_SECRET
references/bitfinex-skill.md
Workflow for all exchanges:
Verify credentials from
.env
— if missing,
STOP
READ → call, parse, display
WRITE → present summary → ask
"CONFIRM"
→ execute
After order → verify status