MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Code & DevOps

JW3 MCP Server

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

Checks passed
15 / 22

0 failed · 7 not measured

Median response
427 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
27

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
500
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
400
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 432 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-06-18, serverInfo.name jw3-agent.

  • Pass
    Lists tools

    tools/list returned 27 tools.

  • Pass
    Current protocol

    Negotiated 2025-06-18. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 427 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 432 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Pass
    Tools described

    Every tool description is at least 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    155 of 155 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Not measured
    Website matches publisher

    This namespace is not a reverse domain, so the website comparison does not apply.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Pass
    Repo owner matches

    The GitHub repository owner matches the namespace login.

  • Pass
    Recently updated

    Updated 2026-11-09T15:03:40.908217Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using JW3 MCP Server

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http jw3-mcp-server https://nzhbfeahymmyqerzjgbt.supabase.co/functions/v1/mcp-server

Capabilities

Tools 27

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.

Discovered
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.

Discovered
cancel_order

Cancel an open CEX order by order id. Needs trade:execute + YOLO eligibility; per-call kill-switch/autonomy check.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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).

Discovered
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).

Discovered
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).

Discovered
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).

Discovered
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).

Discovered
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).

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered
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.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected432 ms27
Connected422 ms27