Back to Browse

Whalescope MCP Server

Developer ToolsUse Caution4.2MCP RegistryLocalRemote
Free

Server data from the Official MCP Registry

Binance Futures market intelligence: funding, OI, order book, klines, cross-exchange comparison.

About

Binance Futures market intelligence: funding, OI, order book, klines, cross-exchange comparison.

Remote endpoints: streamable-http: https://whalescope-mcp.jaringan.dev/mcp

Security Report

4.2
Use Caution4.2High Risk

WhaleScope MCP is a well-documented, read-only Binance market data aggregator with appropriate authentication and permissions for its purpose. The server properly handles credentials via environment variables, enforces input validation on symbol parameters, and implements caching/rate-limiting. Minor concerns include best-effort rate limiting (not hard guarantees), some heuristic-based detection with acknowledged limitations, and lack of automated test coverage, but these do not pose significant security risks given the read-only nature and transparent documentation of limitations. Supply chain analysis found 5 known vulnerabilities in dependencies (0 critical, 5 high severity).

4 files analyzed ยท 11 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

system_info

Check that this permission is expected for this type of plugin.

database

Check that this permission is expected for this type of plugin.

How to Install & Connect

Available as Local & Remote

This plugin can run on your machine or connect to a hosted endpoint. during install.

Documentation

View on GitHub

From the project's GitHub README.

WhaleScope MCP โ€” Binance Futures Market Intelligence

๐Ÿ‡ฎ๐Ÿ‡ฉ Bahasa Indonesia | ๐Ÿ‡ฌ๐Ÿ‡ง English

MCP server yang menyediakan data publik Binance USDS-M Futures (funding rate, open interest, long/short ratio, taker volume, candlestick, order book, volatility) plus pembanding Binance Spot (harga, order book, candlestick, CVD) sebagai tools yang bisa dipanggil Claude. Semua data yang disajikan bersifat publik read-only โ€” tidak ada order/trading, tidak ada akses ke data akun pribadi.

Quick Deploy

Deploy to Cloudflare

Tombol ini clone repo + bikin Worker di akun Cloudflare kamu sendiri, termasuk provision KV namespace & D1 database baru otomatis (Cloudflare generate id/database_id baru buat akun kamu, gak perlu bikin manual). Bukan zero-touch sepenuhnya โ€” biar jujur soal apa yang masih manual: setelah klik, kamu TETAP perlu set secret (Cloudflare gak bisa nebak value dari layanan eksternal) โ€” lihat .dev.vars.example di repo ini buat daftar lengkap, atau Setup Proxy Vercel di bawah. PROXY_URL/PROXY_SECRET WAJIB (semua 46 tool butuh).

Tujuan

Menyediakan gambaran positioning pasar Binance Futures โ€” bukan cuma harga, tapi juga siapa yang lagi buka posisi apa (retail vs top trader), seberapa crowded leverage-nya, dan di harga berapa likuiditas menumpuk โ€” langsung dalam percakapan dengan Claude, tanpa perlu buka dashboard exchange terpisah.

Manfaat

  • Satu pintu buat banyak sinyal. Funding rate, open interest, order book, dan order flow โ€” semua lewat satu MCP connector, bukan gonta-ganti tab.
  • Bisa bedain retail vs whale. binance_get_top_trader_ratio kasih breakdown murni top-trader (terpisah dari binance_get_long_short_ratio yang blended) โ€” berguna buat lihat kalau posisi retail dan whale lagi divergen.
  • Native Binance di mana itu penting. Harga, funding rate, klines, order book โ€” semua lewat jalur native Binance (bukan derivasi pihak ketiga), supaya presisi terjaga terutama untuk pair kecil/kurang likuid.
  • Gratis buat pemakaian personal โ€” lihat bagian Biaya.

Kelebihan

  • 29 tools mencakup lima sudut analisis: bias arah pasar, area harga kunci (order book), konfirmasi eksekusi (order flow/aggressor), pembanding Futures-vs-Spot (leverage-driven vs demand riil), dan market-wide scan (funding rate ekstrem lintas semua pair, atau bandingkan metrik across beberapa pair) โ€” plus tool composite (binance_analyze_pair) buat overview cepat tanpa banyak tool call, dan config/histori (threshold per-pair, basis time-series) yang tersimpan di Workers KV.
  • Read-only terhadap data pasar Binance โ€” tidak ada order/trading. Satu- satunya tool yang menulis state (binance_set_pair_threshold) cuma nyimpen preferensi threshold kamu sendiri di Workers KV, tidak menyentuh akun Binance/data pihak luar sama sekali.
  • Transparan soal keterbatasan tiap tool (lihat bagian di bawah), bukan dibungkus seolah semua data sempurna.
  • Infrastruktur cukup dengan free tier (Cloudflare Workers + Vercel Hobby) untuk pemakaian personal โ€” 100% Binance-native, tidak ada dependensi agregator pihak ketiga lagi.

Kekurangan

  • Sebagian besar tool request/response. Funding/OI/klines/order book/ratio semua snapshot atau histori periodik. Data streaming yang ada terbatas: binance_get_realtime_liquidations + binance_get_contract_events (via stream gateway VPS, lihat di bawah) โ€” tidak ada push tick-by-tick untuk harga / order book.
  • Liquidation: SAMPLED, bukan lengkap. Sejak 2026-08-28 ada binance_get_realtime_liquidations โ€” WebSocket !forceOrder@arr (dstream.binance.com) di-buffer always-on di VPS Oracle Singapore (stream-gateway/, di luar Cloudflare โ€” worker Cloudflare sendiri masih di-WAF-block dari Binance). Binance men-throttle stream ini maks 1 event/symbol/detik, jadi ini SAMPEL likuidasi, bukan tiap satu. Tetap cukup buat konfirmasi cluster stop-hunt di binance_detect_mm_activity (proxy ke-3, price-anchored & sisi-hunt). Tidak ada histori liquidation jauh ke belakang (buffer 24 jam).
  • Setup awal butuh proxy Vercel (wajib) โ€” bukan pasang-langsung-jalan, ada langkah konfigurasi manual sekali di awal.
  • Tidak ada data wallet on-chain atau data dari exchange selain Binance Futures USDS-M.

Sumber data: satu jalur, 100% Binance native.

  • Binance native, lewat proxy relay Vercel. Domain Binance (fapi.binance.com) memblokir traffic dari Cloudflare Workers di level WAF (403, company-wide โ€” sudah dites langsung dari worker ini, bukan asumsi). Vercel pakai IP pool berbeda, jadi tidak kena block yang sama. Worker Cloudflare relay lewat proxy kecil di proxy/ (project Vercel terpisah, lihat proxy/README.md). Ini jalur untuk funding rate (current & histori), klines/OHLCV, bias multi-timeframe, realized volatility, statistik 24 jam, order book depth, aggregate trades, open interest (current & histori), long/short ratio (blended & top-trader), taker buy/sell volume ratio, dan harga spot (proxy juga relay ke Binance Spot API api.binance.com lewat parameter market=spot, lihat proxy/README.md).

Konsekuensinya, worker ini butuh PROXY_URL/PROXY_SECRET (proxy Vercel, wajib buat semua 46 tool) โ€” lihat bagian Setup di bawah.

Caching & state, tanpa kredensial tambahan. Response upstream (funding rate, klines, OI, dll โ€” kecuali order book & aggregate trades yang butuh freshness ketat) di-cache bertingkat (5 detik-1 jam tergantung endpoint) lewat Cache API bawaan Cloudflare Workers, tidak perlu setup apapun. Threshold custom per-pair tersimpan di Workers KV (binding CONFIG_KV). Time-series (basis+funding+OI, dan 6 skor sinyal binance_detect_mm_activity) tersimpan di D1 (binding DB) โ€” diisi otomatis oleh Cron Trigger tiap 5 menit untuk watchlist tetap 50 pair (SNAPSHOT_WATCHLIST di src/shared.ts, diurutkan market cap, mis. BTCUSDT, ETHUSDT, SOLUSDT, BNBUSDT, XRPUSDT, dst).

Cross-exchange, tanpa proxy tambahan. whalescope_compare_funding_across_exchanges akses Bybit/OKX/Hyperliquid LANGSUNG dari worker (dites dari edge Cloudflare beneran, gak kena WAF/geo-block kayak Binance) โ€” gak ada kredensial atau setup tambahan buat 3 exchange itu.

Yang disediakan

ToolFungsiSumber
binance_get_funding_rateFunding rate terkini + basis (deviasi mark vs index price)Binance native
binance_get_funding_rate_historyTren funding rate dari waktu ke waktuBinance native
binance_get_spot_priceHarga spot Binance + basis riil vs mark price futures (beda dari basis di atas yang vs index price). Error jelas kalau pair futures-only (tidak listed di Spot)Binance native (Spot)
binance_scan_funding_extremesScan funding rate SEMUA pair Futures sekaligus (1 call bulk), kembalikan top pair paling crowded long/shortBinance native
binance_get_open_interestOI snapshot terkiniBinance native
binance_get_open_interest_historyTren OI naik/turunBinance native
binance_get_long_short_ratioRasio long vs short agregat (blended, semua trader) + trenBinance native
binance_get_top_trader_ratioRasio long/short KHUSUS top trader (breakdown murni, akun atau size posisi)Binance native
binance_get_order_book_depthSnapshot order book (bid/ask), spread, wall terbesarBinance native
binance_get_order_book_imbalanceImbalance volume bid vs ask di depth 5/10/20, dengan label bias (BULLISH/BEARISH/SEIMBANG)Binance native
binance_get_agg_tradesTrade individual granular (buy/sell aggressor) untuk deteksi absorptionBinance native
binance_get_taker_volume_ratioTekanan beli/jual agresif (taker volume), statistik resmi BinanceBinance native
binance_get_klinesCandlestick OHLCV per timeframe, dukung startTime/endTime (histori jauh ke belakang, buat backtest, maks 1500 candle/panggilan)Binance native
binance_get_multi_timeframe_biasBias Bullish/Bearish/Sideways di 5 timeframe sekaligus (1m/5m/15m/1h/1d)Binance native
binance_get_realized_volatilityRealized volatility historis (15m/1h) dari log-return, untuk kalibrasi lebar gridBinance native
binance_get_24hr_tickerRingkasan statistik 24 jam (rolling window resmi)Binance native
binance_get_spot_ticker_24hrStatistik 24 jam versi Spot (harga, %change, VWAP, volume, jumlah trade) โ€” bandingkan dengan versi Futures di atasBinance native (Spot)
binance_get_spot_book_tickerBest bid/ask + qty real-time Spot, lebih ringan dari full order bookBinance native (Spot)
binance_get_spot_order_bookOrder book depth Spot (bid/ask, spread, wall terbesar)Binance native (Spot)
binance_get_spot_klinesCandlestick OHLCV Spot per timeframe, dukung startTime/endTime (maks 1000 candle/panggilan)Binance native (Spot)
binance_get_spot_agg_tradesTrade individual granular Spot (CVD riil, bukan leverage)Binance native (Spot)
binance_get_spot_avg_priceHarga rata-rata bergerak Spot (window beberapa menit, lebih stabil dari last-trade)Binance native (Spot)
binance_check_spot_listingCek apakah pair listed di Binance Spot + status trading โ€” dipakai sebelum panggil tool Spot lain untuk pair yang belum pastiBinance native (Spot)
binance_analyze_pairOverview cepat 1 pair (composite): funding, tren OI, tren top trader, taker volume, order book, bias harga โ€” 6 tool sekaligus dalam 1 callBinance native
binance_compare_symbolsBandingkan 1 metrik (funding rate, %change 24h, OI, top trader ratio, taker ratio) across 2-10 pair sekaligus, diurutkan dari paling ekstremBinance native
binance_set_pair_thresholdSet threshold funding/basis custom per-pair (override default ยฑ0.03%/ยฑ0.05%), tersimpan di Workers KVWorkers KV
binance_get_pair_thresholdCek threshold custom yang sudah di-set untuk sebuah pairWorkers KV
binance_get_basis_historyHistori basis+funding+OI time-series (snapshot Cron tiap 5 menit ke D1) โ€” selalu tersedia untuk watchlist tetap 50 pair, best-effort untuk pair lain yang sering di-query โ€” deteksi "basis melebar lalu kembali" tanpa cek manual berkali-kaliD1 + Cron Trigger
binance_get_orderbook_delta2 snapshot order book ~1-2 detik terpisah, bandingkan wall antar snapshot untuk deteksi spoofing RIIL (wall hilang tanpa harga crossing level itu) โ€” beda dari binance_get_order_book_depth yang cuma 1 snapshotBinance native
binance_detect_mm_activitySkor + tier (Weak/Moderate/Strong/Extreme) dari 6 sinyal MM/whale sekaligus (absorption, spoofing 2-snapshot RIIL, stop-hunt simetris + OI-drop proxy + trade-volume-concentration proxy, basis arbitrage, OI divergence, funding extreme) โ€” ganti 5-6 tool call manual. Stop-hunt TETAP tanpa data liquidation riil (dihapus permanen), lihat KeterbatasanBinance native
binance_market_regimeKlasifikasi kondisi pasar: TRENDING_UP/DOWN, RANGING, BREAKOUT, ACCUMULATION, DISTRIBUTION โ€” pakai ADX(14), tren OI, CVD, spike volatilitas/volumeBinance native
binance_backtest_signalValidasi empiris sinyal binance_detect_mm_activity: win rate/avg return/max drawdown dari histori sinyal D1 (watchlist tetap), forward return dihitung on-demand dari klines historisD1 + Binance native
whalescope_backtest_pipeline_decisionsUji maju keputusan full_pipeline yang tersimpan di pipeline_decision_log (entry-alert Phase 2 + persist=true): win rate / avg return / SL-touch per keputusan (TRADE/WATCH/NO_TRADE) dan bucket skor (lt_40 / 40_55 / gte_55). Forward return on-demand dari klines, bukan kolom precompute, bukan auto-tune bobotD1 + Binance native
binance_analyze_smart_moneySkor divergensi smart money (top trader) vs retail (global account) dari 5 variabel: top trader ratio, global account ratio, delta OI, funding rate, orderbook imbalance โ€” kondisi LONG_LIQUIDATION_RISK/BULLISH_ACCUMULATION/SHORT_SQUEEZE_RISK/NEUTRAL + confidenceScore. Beda dari binance_detect_mm_activity (6 sinyal absorption/spoofing/stop-hunt/basis-arb) โ€” fokus khusus top-trader-vs-retailBinance native
whalescope_compare_funding_across_exchangesBandingkan funding rate, last price, open interest, 24h change 1 pair across Binance/Bybit/OKX/Hyperliquid, deteksi divergensi โ€” cross-confirm sinyal MM detection antar exchange. Satu-satunya tool yang BUKAN Binance-onlyBinance native + Bybit + OKX + Hyperliquid
binance_get_tool_catalogDaftar semua tool + kategori/token-cost/use-case, filter per kategori โ€” cek ini dulu sebelum manggil banyak tool individual. Nama+description auto dari tool registry (selalu akurat), kategori/token-cost tetap manualSemi-otomatis
binance_get_adl_riskRating risiko Auto-Deleveraging (LOW/MEDIUM/HIGH) per pair, update tiap 30 menitBinance native
binance_get_insurance_fund_balanceSnapshot historis saldo insurance fund per asset marginBinance native
binance_get_mark_price_klinesCandlestick dari MARK PRICE (acuan liquidation/funding), bukan harga transaksiBinance native
binance_get_index_price_klinesCandlestick dari INDEX PRICE (blended beberapa exchange spot), dasar premium index/fundingBinance native
binance_get_premium_index_klinesCandlestick dari PREMIUM INDEX (rasio mark vs index price), komponen utama funding rateBinance native
binance_get_continuous_klinesCandlestick kontrak PERPETUAL/CURRENT_QUARTER/NEXT_QUARTER per pair underlyingBinance native
binance_get_quarterly_settlement_priceHistori delivery/settlement price kontrak quarterly (tidak berlaku untuk perpetual)Binance native
binance_get_composite_index_infoKomposisi base asset + bobot sebuah composite index symbol (mis. BTCDOMUSDT)Binance native
binance_get_index_constituentsDaftar exchange+harga+bobot penyusun index price sebuah pairBinance native
whalescope_full_pipelineDecision chain PENUH Grid Bot Futures (composite tertinggi): hard screen โ†’ Tier-1 intelligence (smart money, MM composite, regime 1h+4h, order book) โ†’ hitung bound grid Compass-equivalent (ATR + swing high/low) โ†’ capital-solve EXACT ke budget rugi (risk_usd) per opsi leverage โ†’ keputusan TRADE/WATCH/NO_TRADE + parameter Grid Bot siap copy-paste, untuk 1-20 symbol sekaligus. persist=true (opsional) menulis row compact ke pipeline_decision_log (source=manual atau dropstab + persist_ref slug tab). Token cost TINGGI โ€” lihat docs/full_pipeline_framework.mdBinance native

Konvensi detail: summary vs full (hemat token)

Semua tool di atas yang balikin data array/histori (klines, agg trades, order book, open interest/funding/basis history, long-short & top-trader ratio) punya parameter opsional detail: "summary" | "full", default "summary". Ini satu-satunya perubahan default-behavior yang disengaja di pembaruan token-efficiency 2026-08 โ€” bukan penghapusan parameter, cuma default baru:

  • detail: "summary" (default) โ€” cuma metrik turunan (bias, tren, CVD, dominance, dst โ€” yang memang sudah dihitung tool-nya) + maksimal 10 poin data terbaru. Ini yang dipakai kalau kamu tidak mengirim detail sama sekali, TERMASUK untuk caller lama yang belum tahu param ini ada.
  • detail: "full" โ€” array/level mentah penuh, perilaku identik dengan sebelum pembaruan ini.

Tool composite (binance_analyze_pair, binance_analyze_smart_money, binance_detect_mm_activity, analyze_futures_grid_risk, whalescope_full_pipeline) juga dirapikan: teks dipotong ~8-12 baris, structuredContent jadi payload utama dengan key lebih pendek/flat, field kosong (null/undefined) dibuang. Tidak ada sinyal/metrik yang hilang โ€” semua tetap reachable via structuredContent atau detail: "full".

Detail lengkap + mapping field yang berganti nama: docs/tool_response_reference.md.

Framework Analisis: Deteksi Market Maker & Whale

Tidak ada tool yang bisa melihat identitas atau posisi spesifik market maker (MM)/whale secara langsung โ€” data Binance yang publik memang tidak menyediakan itu. Yang bisa dilakukan (dan itulah fungsi framework ini): membaca jejak aktivitas mereka dengan menggabungkan beberapa tool di atas, lalu menghitung skor indikasi dari pola yang muncul.

Empat kategori sinyal yang dideteksi:

SinyalTool utamaContoh pola
Absorptionorder book depth, agg trades (futures & spot), open interestCVD flat/naik tapi harga stagnan = sell pressure sedang diserap (accumulation); OI spike tajam + harga sideways = posisi besar baru dibuka
Spoofingorder book depth, binance_get_orderbook_delta (2-snapshot)Wall besar muncul lalu hilang sebelum sempat tereksekusi TANPA harga benar-benar crossing level itu; spread tiba-tiba melebar lalu normal lagi dalam hitungan detik
Stop huntopen interest, agg trades, klinesWick panjang (arah manapun) + body kecil candle reversal, dibantu OI-drop proxy + konsentrasi trade agresif per harga โ€” TETAP tanpa konfirmasi liquidation riil (dihapus permanen, lihat Kekurangan)
Basis arbitragespot price, funding rate, open interestBasis spot-futures melebar lalu kembali cepat; funding ekstrem + OI naik (indikasi hedge short futures / long spot)

Rule of thumb: kalau โ‰ฅ3 sinyal align dalam timeframe yang sama, indikasi aktivitas MM cukup kuat untuk ditindaklanjuti โ€” ini heuristik checklist (lihat tier confidence di dokumen lengkap), bukan probabilitas yang terkalibrasi secara statistik.

Dokumen lengkap: docs/mm_detection_framework.md (v4, final) โ€” berisi kriteria detail tiap sinyal, workflow step-by-step, checklist live, dan mapping tool โ†’ sinyal.

Framework: Full Pipeline Grid Bot (whalescope_full_pipeline)

Tool composite tertinggi di repo ini โ€” menjalankan SELURUH decision chain Grid Bot Futures dalam satu tool call, untuk satu atau banyak symbol sekaligus (maks 20 per call), menggantikan ~8 tool call manual (binance_market_regime ร—2, binance_analyze_smart_money, binance_detect_mm_activity, binance_get_order_book_imbalance, analyze_futures_grid_risk, dst.) plus kalkulasi bound grid yang sebelumnya tidak ada tool-nya sama sekali.

Tahapan (2-wave fetch, reject-early):

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ WAVE 1 (semua symbol, paralel): ticker24hr, funding, klines    โ”‚
โ”‚ 1h+4h, OI+histori, agg trades, market context                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ HARD SCREEN: tradable? volume >= minimum? |funding| <= maks?   โ”‚
โ”‚ regime 1h/4h != BREAKOUT?                                       โ”‚
โ”‚   โ†’ GAGAL = NO_TRADE, Wave 2 TIDAK PERNAH DIPANGGIL             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ WAVE 2 (survivor saja, paralel): top-trader ratio, global      โ”‚
โ”‚ account ratio, OI histori 24 titik, order book depth 50        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ TIER-1 SCORING: smart money divergence + 6 skor MM composite   โ”‚
โ”‚ + order book imbalance + CVD + regime โ†’ rankingScore 0-100     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ GRID BOUNDS (Compass-equivalent): ATR + swing high/low โ†’       โ”‚
โ”‚ upper/lower/SL/TP/gridCount/gridType                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ CAPITAL SOLVE: exact (bukan iteratif) per opsi leverage, pilih  โ”‚
โ”‚ leverage tertinggi SAFE/MODERATE dengan likuidasi aman          โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ KEPUTUSAN: TRADE / WATCH / NO_TRADE + Grid Bot config siap-pakaiโ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Dokumen lengkap (stage-by-stage, worked example, Known Limitations): docs/full_pipeline_framework.md.

Hasil Validasi Empiris

Setiap klaim teknis di framework ini divalidasi langsung ke worker deployed (bukan asumsi) sebelum masuk versi final. Beberapa temuan yang mengoreksi asumsi awal:

Klaim awalHasil validasi
Polling <500ms buat deteksi refresh-rate spoofingโŒ Latency riil 298-898ms/call (rata-rata ~485ms) lewat proxy chain workerโ†’Vercelโ†’Binance โ€” tidak reliable buat itu
Threshold divergence top-trader ratio universal (flat >15% atau tiered 3-15%)โŒ Tidak pernah trigger โ€” pergerakan riil 4 pair yang dites (SOLUSDT, BNBUSDT, LINKUSDT, AVAXUSDT) dalam window 2 jam cuma 0.40-2.35 poin, jauh di bawah threshold manapun
Retensi historis top-trader ratio "30-90 hari"โš ๏ธ Dikoreksi โ€” 90 hari tidak tersedia sama sekali dari Binance; 30 hari cuma di resolusi kasar (4h/1d), resolusi 15 menit cuma ~5 hari ke belakang
Kondisi pasar tenang (BTCUSDT) tidak over-triggerโœ… Terkonfirmasi โ€” skor ~1-1.5/6 (tier Weak) saat pasar sideways, framework tidak salah alarm di kondisi normal

Detail penuh (termasuk raw data test per klaim): Section 10, docs/mm_detection_framework.md.

Keterbatasan yang jujur perlu diketahui

  • Long/short ratio (binance_get_long_short_ratio) adalah rasio agregat BLENDED, bukan breakdown terpisah "global account (retail)" vs "top trader (whale)". Untuk breakdown murni top-trader, pakai binance_get_top_trader_ratio (sudah native Binance, terpisah dari tool ini).
  • Basis funding rate bisa noisy untuk pair kecil/baru listing โ€” index price Binance adalah rata-rata tertimbang dari beberapa exchange spot, salah satunya bisa illikuid untuk pair semacam itu.
  • Order book depth (binance_get_order_book_depth) adalah snapshot sesaat โ€” wall besar bisa hilang dalam hitungan detik (potensi spoofing), jangan overinterpretasi satu snapshot. Untuk deteksi spoofing RIIL (2-snapshot), pakai binance_get_orderbook_delta atau binance_detect_mm_activity (lihat di bawah).
  • Threshold "top trader" tidak dipublikasikan Binance secara pasti, dan datanya snapshot periodik, bukan real-time tick-by-tick.
  • Data histori OI (binance_get_open_interest_history) dibatasi retensi endpoint resmi Binance (/futures/data/openInterestHist), cek langsung kalau butuh rentang panjang.
  • Tidak ada data wallet on-chain.
  • Liquidation cuma near-real-time + SAMPLED, tidak ada histori panjang. binance_get_realtime_liquidations baca buffer 24 jam dari stream gateway VPS (!forceOrder@arr via dstream.binance.com โ€” fstream.binance.com di-black-hole dari IP VPS). Binance throttle 1 event/symbol/detik โ†’ sampel, bukan lengkap. Tidak ada REST publik market-wide buat backfill historis. Worker Cloudflare sendiri masih tidak bisa WS langsung ke Binance (WAF).
  • binance_detect_mm_activity: spoofing sekarang 2-snapshot RIIL (~1-2 detik lebih lambat dari tool lain karenanya, jeda eksplisit 1500ms antar 2 fetch โ€” lihat binance_get_orderbook_delta), bukan heuristik 1-snapshot lagi. Stop-hunt sekarang simetris (cek upper DAN lower wick, dulu cuma upper โ€” bug lama) + 2 proxy independen (reuse fetch yang sudah ada, bukan fetch baru): OI turun >=2% berbarengan sama wick candle, dan/atau volume trade agresif >=30% terkonsentrasi tepat di zona harga wick itu (dari 100 aggTrades terakhir, sama data yang dipakai CVD). Confidence naik bertahap: 0 proxy aktif = base, 1 proxy = lebih tinggi, 2 proxy sekaligus = tertinggi โ€” TETAP TANPA data liquidation-by-price riil (permanen, lihat poin di atas). Confidence stop-hunt masih lebih rendah dari sinyal lain di tool yang sama โ€” dicatat di evidence text tiap response.
  • binance_market_regime: spike volatilitas/volume dihitung relatif ke window fetch yang sama (10 candle terakhir vs 10 sebelumnya), bukan baseline historis jangka panjang.
  • Time-series D1 (market_snapshots, dibaca binance_get_basis_history) SELALU tersedia untuk watchlist tetap 50 pair, best-effort untuk pair lain โ€” pair non-watchlist dapat histori kalau di-query >=3x dalam ~24 jam DAN masuk top-5 pair non-watchlist paling sering di-query (KV counter, src/queryFrequency.ts), cron 5 menit baru snapshot pair itu setelah kondisi terpenuhi. signal_history (dibaca binance_backtest_signal) TETAP watchlist-only, tidak ikut diperluas.
  • Pair futures-only (HYPEUSDT, 1000PEPEUSDT, PUMPUSDT, dst.) โ€” spot_price & basis NULL di market_snapshots karena tidak listed di Binance Spot. Funding rate & Open Interest tetap tercatat normal; cuma kolom basis yang kosong buat pair semacam itu.
  • Belum ada pruning/retention buat row D1 โ€” row nambah terus tanpa batas seiring waktu (di 50 pair x ~6.048 row/hari gabungan kedua tabel, D1 free tier 5 juta write/hari & 5GB storage masih longgar untuk waktu yang lama, tapi ini bukan solusi permanen).
  • Migrasi KVโ†’D1 (basis history) TIDAK backfill data lama โ€” histori basis yang sempat tersimpan di Workers KV sebelum migrasi ini hilang, window 24 jam baru keisi ulang natural beberapa jam setelah deploy.
  • binance_backtest_signal: forward return DIHITUNG ON-DEMAND dari klines historis (close candle 1h terdekat ke waktu target), BUKAN simulasi eksekusi order riil โ€” slippage/fee/partial fill tidak dihitung. Sample size kecil (di bawah ~20 sinyal) berarti confidence rendah, jangan simpulkan sinyal "reliable" dari sedikit data historis (baru mulai terkumpul dari kapan fitur ini deploy, bukan retroaktif).
  • pipeline_decision_log + whalescope_backtest_pipeline_decisions: keputusan per-symbol Phase 2 entry-alert (dan persist=true) disimpan compact 90 hari. Forward return / SL-touch dihitung on-demand dari klines โ€” bukan precompute, bukan auto-tune bobot 35/30/20/15 atau threshold 55. entry_alert_skip_log retensi 30 hari.
  • whalescope_compare_funding_across_exchanges: Open Interest belum divalidasi silang ke data live antar 4 exchange (SEHARUSNYA base-asset di semua exchange termasuk OKX yang pakai field oiCcy, tapi belum ada pengecekan langsung โ€” cek ulang kalau angkanya kelihatan janggal). Symbol mapping Binanceโ†’exchange lain best-effort (strip suffix USDT) โ€” pair kecil yang gak listed di Bybit/OKX/Hyperliquid bakal muncul "gagal" di baris itu, bukan bikin tool call gagal total.
  • Rate limit self-throttle ke proxy Binance itu best-effort, BUKAN hard global limiter โ€” counter in-memory per-isolate (src/rateLimiter.ts), efektif SELAMA isolate yang sama dipakai ulang buat request beruntun, TAPI worker ini stateless per-request jadi bukan jaminan keras cross-isolate. Threshold 200 request/menit, count-based (bukan weight-based per-endpoint kayak limit asli Binance).
  • binance_get_tool_catalog SEMI-otomatis โ€” nama+description SELALU akurat (ditarik dari tool registry, gak pernah basi/ketinggalan). Tapi category/token-cost/dependencies TETAP manual (CATALOG_METADATA di src/tools/catalog.ts) โ€” tool baru yang belum di-curated bakal muncul dengan category "uncategorized", tetap kelihatan (gak ke-omit diam-diam) tapi belum ter-kategorisasi rapi.
  • binance_analyze_smart_money pakai threshold FIXED (bukan hasil kalibrasi statistik per-pair) โ€” lihat Section 4.2 & 12 di docs/mm_detection_framework.md untuk kenapa threshold absolut pada top-trader ratio harus dipakai hati-hati. confidenceScore output-nya mengukur margin di atas threshold, BUKAN probabilitas statistik terkalibrasi.

Setup Proxy Vercel (wajib, sekali saja)

Tool berlabel "Binance native" di tabel atas butuh proxy relay di Vercel, karena worker Cloudflare diblokir langsung oleh WAF Binance. Detail deploy proxy ada di proxy/README.md โ€” ringkasnya:

  1. Deploy folder proxy/ sebagai project Vercel terpisah (Root Directory = proxy), set env var PROXY_SECRET di Vercel (string acak, generate sendiri, misal openssl rand -hex 32).
  2. Set dua secret ini di worker Cloudflare:
    npx wrangler secret put PROXY_URL
    npx wrangler secret put PROXY_SECRET
    
    PROXY_URL = URL project Vercel (contoh https://whale-pearl.vercel.app), PROXY_SECRET = string yang sama persis dengan yang di-set di Vercel.

Tanpa dua secret ini, tool berlabel "Binance native" akan gagal dengan pesan error yang jelas ("PROXY_URL atau PROXY_SECRET belum diset di worker").

Penting: jangan pernah buat secret Cloudflare dengan VALUE sebagai NAME (misal wrangler secret put lalu tidak sengaja paste value di prompt nama). wrangler secret list hanya boleh membocorkan nama secret, tidak pernah value โ€” kesalahan ini membuat value asli bocor lewat command yang seharusnya aman.

Proxy sekunder / failover (opsional)

Kalau proxy primary kena WAF block/rate-limit/5xx, worker otomatis coba proxy sekunder โ€” TAPI cuma kalau dikonfigurasi. Tanpa ini, perilaku persis sama seperti sebelumnya (1 proxy, error langsung dilempar kalau gagal).

  1. Deploy instance Vercel KEDUA dari folder proxy/ yang sama (region beda kalau mau, misal Hong Kong vs Singapore) dengan PROXY_SECRET sendiri (boleh beda dari primary).
  2. Set dua secret tambahan:
    npx wrangler secret put PROXY_URL_2
    npx wrangler secret put PROXY_SECRET_2
    

Failover cuma jalan untuk error yang berkaitan sama kesehatan/kredensial tier (401 secret salah, 403 WAF block, 429 rate limit, 5xx) โ€” bukan buat error request genuinely (400 symbol salah, 404) yang bakal gagal identik di tier manapun. 401 SENGAJA termasuk (beda dari versi sebelumnya) karena tiap tier proxy punya secret SENDIRI โ€” primary salah bukan berarti secondary juga salah.

Direct fallback (tier terakhir, otomatis ON)

Kalau primary DAN secondary (kalau dikonfigurasi) sama-sama gagal, worker otomatis coba langsung ke fapi.binance.com/api.binance.com TANPA proxy sama sekali sebagai last-resort. Tidak butuh setup apapun (default ON) -- set DISABLE_DIRECT_FALLBACK=true di environment variable worker (bukan secret, plain var biasa) kalau mau matikan. Lihat komentar "DIRECT FALLBACK" di src/binanceProxyClient.ts untuk detail & catatan jujur soal kenapa tier ini kemungkinan besar tetap kena WAF block di kondisi produksi saat ini (worker Cloudflare ini SUDAH TERBUKTI diblokir Binance secara langsung) -- tetap berguna untuk wrangler dev lokal (IP pool beda dari edge Cloudflare produksi) dan sebagai jaring pengaman kalau kebijakan block berubah.

Setup Workers KV (wajib, sekali saja โ€” kalau fork/deploy repo ini sendiri)

id KV namespace di wrangler.toml repo ini terikat ke akun Cloudflare yang bikin โ€” kalau kamu fork/clone dan deploy ke akun sendiri, wajib bikin namespace baru:

npx wrangler kv namespace create WHALESCOPE_CONFIG

Copy id yang muncul ke [[kv_namespaces]] di wrangler.toml, ganti value id yang lama (binding-nya biarkan tetap CONFIG_KV, kode worker rujuk nama binding itu, bukan id). Tanpa ini, binance_set_pair_threshold dan binance_get_pair_threshold akan gagal dengan error jelas ("CONFIG_KV belum ke-bind di worker").

Setup Workers D1 (wajib, sekali saja โ€” kalau fork/deploy repo ini sendiri)

Sama seperti KV di atas, database_id D1 di wrangler.toml repo ini terikat ke akun Cloudflare yang bikin. Kalau fork/deploy ke akun sendiri:

npx wrangler d1 create whalescope-mcp-db

Copy database_id yang muncul ke [[d1_databases]] di wrangler.toml (binding biarkan tetap DB), lalu jalankan migration:

npx wrangler d1 migrations apply whalescope-mcp-db --remote

Tanpa ini, binance_get_basis_history dan binance_backtest_signal akan gagal dengan error jelas ("D1 database (binding DB) belum ke-bind di worker"), dan Cron Trigger snapshot basis+sinyal MM (tiap 5 menit) akan gagal silent tiap tick (ke-log ke Workers Logs, tidak menggagalkan endpoint /mcp lain).

Admin: Usage Log (OPSIONAL)

Worker publik gampang ditemuin (terdaftar di MCP Server Registry) โ€” jadi ada endpoint kecil buat liat siapa aja yang connect. Ini BUKAN MCP tool (sengaja HTTP endpoint terpisah, gak pernah muncul di tools/list) โ€” kalau dibikin tool biasa, SIAPA AJA yang connect ke server ini bisa liat IP visitor lain, kontradiksi sama tujuannya.

  1. Set secret (tanpa ini, endpoint SELALU balik 403 โ€” fitur nonaktif by default, aman):
    npx wrangler secret put ADMIN_SECRET
    
  2. Akses:
    curl "https://<worker-url>/admin/usage?key=<ADMIN_SECRET>&hours=24"
    
    Balikin JSON: total request, jumlah IP unik, top 20 IP (+ negara, count), 20 request terakhir mentah. Default window 24 jam, bisa diubah lewat hours.

Monitoring & Alerting

Backend ini punya beberapa titik gagal diam-diam (proxy Vercel/VPS mati, WS stream gateway putus, Cron Trigger di-Cancel platform). Yang ada sekarang, semua lewat Telegram (butuh TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID di-set โ€” kalau tidak, alert cuma ke Workers Logs):

CekCronAlert kalau
checkHeartbeat (heartbeatCron.ts)3ร—/hari (07/15/23 WIB)8 jam nol sinyal TRADE/WATCH โ€” 1 pesan yang bedain "market sepi + backend normal" vs ">30% pair gagal tiap tick = backend bermasalah" vs "nol data = cron mati"
checkEntryAlertCronFreshness (heartbeatCron.ts)nempel di */5nol tick entry-alert SELESAI dalam 40 menit (deteksi tick di-Cancel platform) โ€” cooldown 1 jam
checkStreamGatewayHealth (infraHealthCron.ts)nempel di */5VPS stream gateway :8081/health unreachable, WS ke Binance putus, atau buffer basi >5 menit โ€” cooldown 1 jam
checkMarketSnapshotFreshness (infraHealthCron.ts)nempel di */5nol baris market_snapshots baru dalam 20 menit (cron snapshot */5 berhenti nulis) โ€” cooldown 1 jam
checkD1Capacity (infraHealthCron.ts)3ร—/hari (piggyback HEARTBEAT_CRON)market_snapshots + signal_history (dua tabel tanpa pruning) gabungan lewat 5 juta baris โ€” cooldown 24 jam

Semua cek KV-gated (maks 1 alert per cooldown selagi kondisi persist), aman dijalanin tiap 5 menit.

Yang MASIH belum ada (kerjaan dashboard, bukan kode):

  • Uptime monitor eksternal ke worker / + relay https://<vps>/health โ€” pakai UptimeRobot / Cloudflare Health Checks (gratis, 5-menit). Ini yang paling cepat nangkep VPS/relay mati total; cek internal di atas cuma backstop dengan lag.
  • Cloudflare notification untuk spike error-rate Workers / CPU-limit โ€” observability ([observability] enabled = true) cuma ngumpulin data, gak ada rule alert.

Keamanan: DNS Rebinding Protection (OPSIONAL)

Endpoint /mcp memvalidasi header Origin sebelum memproses request -- default izinkan https://claude.ai/https://claude.com (dan request TANPA header Origin sama sekali, yang mencakup mayoritas MCP client server-to-server, termasuk cara worker ini dipakai sebagai custom connector). Request dengan Origin LAIN yang tidak diizinkan dibalas 403. Ini pengganti opsi bawaan SDK (enableDnsRebindingProtection/ allowedHosts/allowedOrigins) yang sudah @deprecated di @modelcontextprotocol/sdk -- SDK sekarang merekomendasikan middleware eksternal, itu yang dilakukan di sini.

Kalau kamu punya web app sendiri yang perlu manggil /mcp langsung dari browser, tambahkan origin-nya:

npx wrangler secret put ALLOWED_ORIGINS
# contoh value: https://app-kamu.com,https://staging.app-kamu.com

(comma-separated, tanpa spasi setelah koma juga OK -- di-trim otomatis.)

Data disimpan di D1 (request_log), di-prune otomatis tiap Cron tick buat row lebih dari 30 hari (tabel ini gak dibatasi watchlist tetap kayak market_snapshots/signal_history, jadi bisa growth kalau ada traffic asing beneran).

Setup Deploy Otomatis (GitHub Actions โ†’ Cloudflare Workers)

Repo ini sudah punya workflow di .github/workflows/deploy.yml yang otomatis menjalankan wrangler deploy setiap kali ada push ke branch main.

Langkah setup (sekali saja)

1. Buat Cloudflare API Token

  1. Buka https://dash.cloudflare.com/profile/api-tokens
  2. Klik "Create Token"
  3. Gunakan template "Edit Cloudflare Workers"
  4. Scope ke akun kamu, lalu buat token
  5. Salin token yang muncul (hanya ditampilkan sekali)

2. Tambahkan token sebagai GitHub Secret

  1. Buka repo ini di GitHub โ†’ Settings โ†’ Secrets and variables โ†’ Actions
  2. Klik New repository secret
  3. Name: CLOUDFLARE_API_TOKEN
  4. Value: token dari langkah 1
  5. Simpan

3. Trigger deploy

Deploy akan otomatis jalan begitu ada push baru ke main. Untuk trigger manual tanpa push baru, buka tab Actions di GitHub repo โ†’ pilih workflow "Deploy to Cloudflare Workers" โ†’ Run workflow.

4. Cek hasil deploy

Setelah workflow selesai (cek tab Actions), worker akan live di:

https://whalescope-mcp.<subdomain-cloudflare-kamu>.workers.dev

Buka URL tersebut โ€” harus muncul JSON status "ok".

Setup Custom Domain (whalescope-mcp.jaringan.dev)

Ini tidak bisa dilakukan lewat GitHub Actions โ€” perlu langkah manual satu kali di dashboard Cloudflare:

  1. Buka https://dash.cloudflare.com โ†’ pilih akun kamu
  2. Buka Workers & Pages โ†’ pilih worker whalescope-mcp
  3. Buka tab Settings โ†’ Domains & Routes
  4. Klik Add โ†’ Custom Domain
  5. Masukkan whalescope-mcp.jaringan.dev
  6. Cloudflare akan otomatis membuat DNS record yang diperlukan jika domain jaringan.dev sudah berada di zona Cloudflare akun yang sama. Kalau domain itu terdaftar di akun/registrar lain, kamu perlu tambahkan CNAME record secara manual mengarah ke target yang ditampilkan Cloudflare.

Setelah custom domain aktif, worker bisa diakses di https://whalescope-mcp.jaringan.dev (bukan lagi domain .workers.dev).

Daftarkan sebagai Custom Connector di Claude

  1. Buka Claude (claude.ai) โ†’ Settings โ†’ Connectors
  2. Pilih Add custom connector
  3. Masukkan URL: https://whalescope-mcp.jaringan.dev/mcp (atau https://whalescope-mcp.<subdomain>.workers.dev/mcp jika belum setup custom domain โ€” perhatikan path /mcp di akhir, wajib)
  4. Simpan, lalu aktifkan connector tersebut untuk percakapan yang kamu mau

Contoh Penggunaan

Setelah connector aktif, tinggal minta lewat percakapan biasa โ€” Claude yang menentukan tool mana yang dipanggil (dan berapa kali) berdasarkan pertanyaan:

  • "Funding rate BTCUSDT sekarang gimana, ada indikasi crowded?" โ†’ binance_get_funding_rate
  • "Pair apa yang funding-nya paling ekstrem sekarang di seluruh market?" โ†’ binance_scan_funding_extremes
  • "Cek overview lengkap ETHUSDT โ€” funding, OI, order book, bias harga" โ†’ binance_analyze_pair (composite, 1 call ganti 6 tool terpisah)
  • "Ada tanda-tanda aktivitas market maker di SOLUSDT belakangan ini?" โ†’ kombinasi beberapa tool (order book, agg trades, OI, klines) mengikuti Framework Analisis di atas โ€” sebutkan pair-nya, Claude yang menjalankan workflow deteksinya
  • "Bandingin funding rate BTC, ETH, SOL, sama BNB" โ†’ binance_compare_symbols
  • "Layak gak buka Grid Bot Futures di BTCUSDT dan ETHUSDT sekarang, budget rugi $20?" โ†’ whalescope_full_pipeline (composite tertinggi, 1 call jalanin hard screen โ†’ Tier-1 intel โ†’ grid bounds โ†’ risk sizing โ†’ keputusan TRADE/WATCH/NO_TRADE + parameter Grid Bot siap copy-paste untuk kedua pair sekaligus)

Karena semua tool read-only, aman dicoba tanya apapun soal data pasar tanpa risiko memicu order/trading โ€” worker ini tidak punya kemampuan itu sama sekali.

Uji coba manual sebelum daftar ke Claude (disarankan)

Documentation truncated โ€” see the full README on GitHub.

Reviews

No reviews yet

Be the first to review this server!