mcpbeat Sign in

JW3 MCP Server

by agnostic4321-ops Your server? Claim it
answering

JW3 MCP Server is answering right now. Last checked 10 min ago. It exposes 27 tools. Last commit 9 Nov 2026.

JW3.ai remote MCP server for market reads and confirm-gated trading execution.

Uptime history 25 hours of history
25 hours agonow
100.0%
Uptime 24h
91 of 91 checks
27
Tools
read from the server
304 ms
Response time
average over 24h
0
Stars
last commit 9 Nov 2026

What changed 4

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 10 November 2026. No other catalogue keeps this.

10 Nov 2 tool descriptions were rewritten list_open_orders, read_onchain_balances
10 Nov a tool appeared read_venue_balances
10 Nov a tool changed the parameters it asks for list_open_orders

What the code does

We read the source, 2 h ago · tools taken from the live server · rules 995398eba69f

Capabilities

What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.

  const out = execFileSync(process.execPath, [join(HERE, "power-analysis.mjs")], { encoding: "utf8" });

Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.

This code can reach further than it looks

We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 10 min ago.

run in your terminal
claude mcp add jw3-mcp-cli --transport http https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server
Settings → Connectors → Add custom connector, then paste this address
https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server
~/.codex/config.toml
[mcp_servers.jw3-mcp-cli]
url = "https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server"
.cursor/mcp.json
{
  "mcpServers": {
    "jw3-mcp-cli": {
      "url": "https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "jw3-mcp-cli": {
      "type": "http",
      "url": "https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server"
    }
  }
}

Available tools 27

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

propose
propose_bracket
APPROVAL CARD ONLY — NEVER auto-executed: propose one atomic bracket (entry + protective stop + 1–3 OCO take-profits) for in-app approval. Recorded as a proposed setup row (Diary → setups → Send to ticket). Never executes, never moves funds. Needs the trade:propose scope (PAT).
propose_close_all_positions
APPROVAL CARD ONLY — NEVER auto-executed: propose flattening EVERY open position at once (or one venue/pair scope) for in-app approval. Records the proposal only — no order is placed, nothing is cancelled. Needs the trade:propose scope (PAT).
propose_diary_note
Append (default) or replace a markdown note on one diary day (diary_day_notes upsert — the same append/replace write the agent-chat approval path and daily_prep perform). Diary-only: never executes a trade, never moves funds. Needs the trade:propose scope (PAT).
propose_predict_market
APPROVAL CARD ONLY — NEVER auto-executed: propose a prediction-market trade for in-app approval. JEV-gated: pass the consult_jev family=prediction verdict (run analyze_market first) — a call without one is refused. Recorded as a proposal trail row. Never executes, never moves funds. Needs the trade:propose scope (PAT).
propose_trade
APPROVAL CARD ONLY — NEVER auto-executed: propose a trade setup for the user to approve in-app (Diary → setups → Send to ticket). Never executes, never moves funds. Needs the trade:propose scope (PAT).
propose_trade_ideas
APPROVAL CARD ONLY — NEVER auto-executed: propose 1–3 personalized trade opportunities (best-first) for in-app approval. Each idea is recorded as a proposed setup row (Diary → setups → Send to ticket) plus one batch trail row. Never executes, never moves funds. Needs the trade:propose scope (PAT).
analyze
analyze_market
SERVER-EXECUTED, read-only: ask the JEV decision model for a typed verdict (verdict + agreement% + snapshot age). Pass family (cex | dex_perps | prediction) + venue + symbol. The server builds multi-timeframe candles itself for CEX (venue+symbol only); dex_perps needs snapshot.timeframes [{tf, candles:[{o,h,l,c,v?}]}]; prediction needs snapshot.brief ONLY — 2–6 research notes YOU assemble ({title, snippet, url, at} with real URLs you can vouch for): the server fetches the live book itself and grounds the call, so never paste prices as snapshot.market (a model-supplied market is ignored). Call this BEFORE any trade proposal and cite the verdict (agree/disagree + why) in the proposal thesis — uncertain/mixed verdicts mean no trade. NEVER narrate instead of calling it.
build
build_defi_tx
READ-ONLY / UNSIGNED: build an unsigned DeFi transaction payload (supply, redeem, borrow, repay, claim) or quote LP amounts (quote_lp) via the official Binance Web3 DeFi API. Never signs, never broadcasts, never touches private keys — returns unsigned contract calldata (and optional simulation result) for wallet signing or CLI inspection.
cancel
cancel_order
Cancel an open CEX order by order id. Needs trade:execute + YOLO eligibility; per-call kill-switch/autonomy check.
close
close_position
Close an open CEX futures position (or reduce it) with a reduce-only market order. Real money. Needs the trade:execute scope AND user YOLO eligibility; per-call kill-switch/autonomy check. NEVER touch positions the user marked manual unless explicitly asked.
closed
read_closed_pnl
READ-ONLY: realized/closed-PnL history on a CEX connection (one row per closed position carrying net pnl + fees, for diary sync). Never moves funds. Rows whose venue reports no side stay null — side is never inferred from the PnL sign; Binance rows carry entryPrice 0 = unknown (the income feed has no entry price) and exitPrice is the paired closing fill when one was found.
connections
list_connections
READ-ONLY: list the user's connected CEX venues (id, exchange slug, label, status, markets) so follow-up reads can target a connectionId. `markets` is spot|futures|both as verified at save (Kraken dual keys; KuCoin/Bitget futures scope) — a row with markets=both covers perpetuals, so prefer it for positions reads. Returns metadata only, never keys or secrets. Call this first when the user asks about positions, balances, or anything per-exchange.
daily
daily_prep
Build the morning brief (risk header, positions, 5-venue funding/OI, liquidation proxy, macro 24h, regime, JEV bias per name) and record it as the day's 'Daily analysis' in the diary. Reads need mcp:read; the diary write needs trade:propose (or pass write:false for a dry run). Sections carry [DATA]/[PROXY]/[UNAVAILABLE] tags — gaps are never synthesized.
defi
read_defi
READ-ONLY: query DeFi protocols, yield/lending/liquid-staking/LP/RWA markets, or wallet positions across all 10 Binance Web3 DeFi chains (BNB 56, Ethereum 1, Base 8453, Arbitrum 42161, Arc 5042, Polygon 137, Optimism 10, Avalanche 43114, Robinhood 4663, Katana 747474). Returns APY, base/reward APY breakdown, TVL, redeemDelayDays, yieldAnalytics, and investmentId with a fetch timestamp. Use propose_defi when the user wants an action card.
diary
read_diary_day
READ-ONLY: read one diary day (trades, setups, analyses, actions) or an explicit day RANGE. Never writes — saving a note stays a propose_diary_note approval card. Pass an explicit day (YYYY-MM-DD) or an explicit start_day + end_day range (inclusive, max 31 days) — there is no today default, so ask the user when no day is given. Returns the most recent rows first with totals; quote it as observed diary state, not a live venue read.
execute
execute_trade
Execute a live CEX order immediately (real money) via stored exchange keys. Needs the trade:execute scope AND user YOLO eligibility (kill switch off, autonomy != propose_only); caps enforced per order. Fee-aware: pass stop to refuse stops that cannot survive round-trip fees (min-move gate), or risk_usd to size from risk (needs stop, else an ATR stop from venue klines). Returns the fee estimate + min-move in the result. CEX spot/futures only — never on-chain.
exits
set_exits
Arm or replace venue-native SL and/or TP on an open CEX position (spot or futures across binance, bybit, okx, kucoin, gateio, mexc, bitget, bingx, coinbase, kraken). Clears existing stops on the pair and arms the new legs sized against the live position. Needs trade:execute + YOLO eligibility.
fills
list_fills
READ-ONLY: list recent execution fills on a CEX connection (individual order executions with price/qty/fee, spot + futures). Never moves funds, never writes Diary rows — fills are Activity history (see read_closed_pnl for realized PnL). Unimplemented venues return an empty list; a venue walk that exceeds its time budget fails loud, never truncated-as-empty.
insights
get_insights
READ-ONLY: one-shot summary of the user's Insights page — market regime (BTC/ETH price + 24h, total market cap, Fear & Greed, ETF 7d net flow, stablecoin supply), cross-venue funding extremes, the fee-aware carry board, DEX perp volume share, the caller's own fee drag from the Diary, headlines, and a deterministic brief. Values may be null/unknown; missing blocks are listed in `gaps` and are never synthesized. Cite as 'observed at <time>'. Optional args: days (1-90, default 30), notional_usd (default 10000), fee_bps (default 5). Never trades, never writes.
live
read_live_datum
READ-ONLY: fetch ONE specific live datum on demand (open positions, account balances, or a market quote) instead of waiting for the context snapshot. Never moves funds, never places an order, never widens the context on its own — ask for exactly the datum you need. Returns numbers WITH the venue and a fetch timestamp; report them as 'observed at <time> on <venue>'. If the result has no fetched number, say the value is unavailable — NEVER invent a placeholder. Present positions/balances/order reads as an inline markdown table in your reply text (never 'shown above'); when empty, say 'No open positions' explicitly. Not for writing anything; use a propose_* tool when the user wants an action.
news
read_news_brief
READ-ONLY: fetch the latest crypto headlines as keyword-matched news clusters for fundamentals analysis (ETF flows, unlocks, macro, hacks — read the headlines here, act through a propose_* tool). Optional pair (BTC, ETH, or SOL — also accepts BTC/USDT or BTC-USD forms) narrows to that asset's keywords; omit it for all three. Returns the top clusters newest-first with per-item source links and recency (publishedAt + ageHrs) plus a fetch timestamp; quote them as 'observed at <time> from <source>'. If no headlines match, say so — NEVER invent a headline.
onchain
read_onchain_balances
Read-only onchain wallet balances across EVM/Solana/TON/Tron/BTC via the balance cache + public RPCs. Server resolves the user's wallet addresses itself (addresses only, never keys). The chains filter uses canonical slugs and matches non-EVM chains exactly — `sol` never matches `solana`, `bitcoin` reads as `btc`; one linked EVM address is readable on any requested EVM chain. TON matches by chain slug, not address form — raw (0:…), bounceable (EQ…) and non-bounceable (UQ…) versions of one wallet resolve to the same balance. Every linked wallet and every requested chain gets an explicit row in `reads` (ok | empty | invalid-address | no-wallet): lowercased Solana/Tron rows surface as invalid-address with a re-link hint instead of vanishing.
open
list_open_orders
READ-ONLY: resting open orders across the user's CEX connections (spot + futures) — the same per-venue envelope as agent-chat kind=open_orders ({kind, observedAt, venues:[{connectionId, exchange, label, ok, orders, count}]}). Narrow with exchange and/or connectionId, filter one market with pair; omit all three to fan out across every active connection. An empty book reads as no resting orders, never as a flat position.
reconcile
reconcile_realized_pnl
Counts the venue's realized LOSSES against the daily risk counters. A trade closed by the VENUE's own stop never goes through the close path, so without this the daily loss cap can never fire on it. Idempotent: each venue trade is counted exactly once, tracked in the realized-PnL ledger. Never moves funds, never places an order. Returns how many trades were counted, the loss recorded, and what was skipped and why.
reserve
reserve_sweep
KuCoin reserve sweep (real money on live fire): keeps `keep` units of `currency` in the futures wallet and moves the excess futures -> main -> trade in two legs carrying the same amount. Dry-run by default (plan only, zero bytes to the venue, no YOLO gate). Live fire (dryRun:false) needs the trade:execute scope AND user YOLO eligibility (kill switch off, autonomy != propose_only). KuCoin only.
risk
read_risk_limits
READ-ONLY: read the user's risk posture (kill switch, autonomy level, caps, daily usage). Never edits limits — the agent must check this before proposing live size.
venue
read_venue_balances
READ-ONLY: venue-held funds per linked wallet address — Hyperliquid (mode-aware total), Aster (keyless per-asset), dYdX (subaccount equity), Pacifica (account by Solana address), Polymarket (spendable pUSD + positions value). Reads are public and keyless against the EXPLICIT owner address (never an agent address); each row names the address it read. A failed venue nulls its leg — never a coerced 0. Omit venue to read every linked venue; totalUsd sums the legs that answered and partial:true names every leg that did not.

Endpoints

URLTransportStateLatencyChecked
https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server streamable-http answering 374 ms 10 min ago

Alternatives to JW3 MCP Server

same job, measured the same way
Fensory
by fensory

Trading MCP server for AI agents, with live market data, account reads and controlled execution.

answering
Polymarket MCP Server
by joinquantish

Self-hosted MCP server for AI agent trading on Polymarket prediction markets

local only
GMO Coin FX MCP Server
by rikitonoto

MCP server for GMO Coin FX trading, positions, executions, klines, and account balances.

local only
eToro MCP Server
by gabrielcerutti

Connect AI assistants to eToro for portfolio analysis, market research, and trading.

106 installs/wk local only
Openmm MCP
by qbt-labs

MCP server for OpenMM — exposes market data, account, trading, and strategy tools to AI agents

15 tools answering
Webull OpenAPI
by webull-inc

MCP server for Webull OpenAPI: trading and market data access for AI assistants

768 installs/wk local only
MCP Server Kalshi
by 9crusher

MCP server for end-to-end trading on Kalshi prediction markets: discover, research, trade.

352 installs/wk local only
Base Multi Wallet MCP
by lordbasilaiassistant-sudo

MCP server for AI agents to manage multiple wallets with coordinated trading and batch operations on

128 installs/wk local only

JW3 MCP Server — questions

Answers built from our own checks of this server.

What can JW3 MCP Server do?
It exposes 27 tools, read directly from the server on our last check. Among them: analyze_market, build_defi_tx, cancel_order, close_position, daily_prep, execute_trade and 21 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is JW3 MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 304 ms. The bar chart above shows every period we have measured.
How do I connect JW3 MCP Server?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does JW3 MCP Server need an API key?
No. JW3 MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 27 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is JW3 MCP Server?
It answers our handshake in 304 ms on average, which is faster than 45% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is JW3 MCP Server open source?
We cannot say either way: written in TypeScript and 0 stars on GitHub, but we could not determine the licence, and without one the code is not open source by default.