Vectorial Data Terminal: Hyperliquid, Polymarket & yield for AI agents

com.vectorialdata/terminal · v1.3.1 · crypto-web3

Vectorial Data Terminal: Hyperliquid, Polymarket & yield for AI agents is healthy: it completed an MCP handshake in 908 ms and exposes 43 tools.

Self-custodial Hyperliquid perps, Polymarket, staking and yield for AI agents, with a kill switch.

Endpoint: https://terminal.vectorialdata.com/api/mcp (streamable-http)

Repository · Website · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count43
Latency908 ms
Last checked (UTC)2026-11-06T03:10:45.090Z

Health history

Checked (UTC)StatusLatencyError
2026-11-06T03:10:45.090ZHealthy908

Tools (43)

get_docsThe complete Agent API manual (markdown): auth, trading, limits, withdrawals, error catalog.
list_marketsTradeable markets with live prices and the precision metadata needed to size orders (size_decimals, min_size, price rules, $10 min notional).
get_registration_challengeStep 1 of creating an agent account: get a nonce+message to sign (EIP-191) with the agent's own EVM wallet.
register_agentStep 2: register with the signed challenge. Returns the api_key ONCE — store it and configure it as the Authorization header of this MCP server. New accounts start in paper mode.
get_accountYour agent account: status, mode (paper|live), scopes, live balances, deposit address, limits.
get_positionsOpen positions (live: venue truth; paper: from your fills).
list_ordersYour authoritative order ledger (cursor-paginated). Paper triggers appear as trigger_tp/trigger_sl rows.
get_metricsYour tear-sheet: win rate, net PnL, fees, drawdown, Sharpe, equity curve — computed server-side from the authoritative ledger.
place_orderPlace an order. PAPER mode executes immediately (simulated fill against real prices — nothing to sign). LIVE mode trades from your trading wallet (create_trading_wallet + authorize_trading_key first) and returns typed_data to sign with your TRADING key, then submit_order. Fees: 0.25% per perps trade
submit_orderExecute a prepared LIVE order with your trading key's signatures (one per typed_data, in order).
close_positionClose an open position (fully or size_pct). Paper executes immediately; live returns typed_data for signing.
protect_positionAttach post-hoc reduce-only TP/SL triggers to an open position. Paper executes immediately.
cancel_orderCancel a resting order by ledger id. Paper executes immediately.
submit_intentExecute a prepared intent (cancel/protect/withdraw) with the wallet's signatures.
log_decisionLog WHY you traded (your audit trail and future public track record). Pass order_id to correlate.
get_limitsYour bounded-autonomy rails (caps, allowlists, pending loosenings).
update_limitsAdjust rails. Tightening is instant; loosening waits 24h (see /limits/escalate in the docs for the wallet-signed immediate path).
set_modeFlip paper ↔ live. Fund the wallet before going live (see get_account.deposit).
kill_switchInstant pause: every subsequent prepare/submit is rejected until resume_trading (which needs the wallet's signature).
resume_tradingReactivate after kill_switch. Needs the account WALLET's signature (the api key alone cannot undo a pause): call it with no arguments to get { nonce, message }, sign `message` with your agent wallet (EIP-191), then call it again with nonce + signature.
get_withdrawals_configMoney-out policy: mode (disabled|autonomous|human_passkey), strict destinations, guardian link.
list_pending_withdrawalsYour withdraw intents and their approval lifecycle (human_passkey). Approved intents include signable actions.
prepare_withdrawalPrepare a withdrawal (USDC → Arbitrum). Requires withdraw scope + matured allowlist; returns typed_data to sign externally (or approval_state=pending under human_passkey). MCP alone can NEVER move funds — execution requires the wallet's signature via submit_intent.
guardian_statusHuman guardian link state (human_passkey mode).
invite_guardianMint a single-use invite (48h) for a human to become this agent's withdrawal guardian. Hand them the accept_url.
list_webhooksYour webhook endpoints (max 5): url, subscribed event types, status, failure counters. Also returns the full event-type catalog.
create_webhookRegister a webhook endpoint (public https). Returns the HMAC signing secret ONCE (vd_whsec_…) — deliveries are signed `x-vd-signature: t=…,v1=hex(hmac_sha256(secret, t + '.' + body))`, at-least-once, dedupe by event id. Omit event_types to receive everything.
get_webhookOne webhook + its last 20 delivery attempts (status codes, retries, dead letters) — the delivery debugging surface.
delete_webhookRemove a webhook endpoint (its queued deliveries are dropped).
test_webhookSend a synchronous signed test event to a webhook and report the receiver's response — verify your endpoint + HMAC handling before relying on real events.
list_copy_leadersStrategies available to copy, with the SAME numbers a human sees, as a DAILY snapshot (UTC: the same object all day): time-weighted return net of fees (immune to the leader's deposits and withdrawals — never a return on capital), max drawdown, Sharpe, trade count and the leader's terms. Read max_dra
get_copy_statusWhat this agent is copying, per leader. Live follows: your copy wallet is a Hyperliquid account you own — read its positions and every fee transfer directly from Hyperliquid (info: clearinghouseState and userNonFundingLedgerUpdates) with the address from GET /copy/wallet. get_positions reads your ag
follow_leaderStart copying a leader with real funds: mode 'live' mirrors from your copy wallet — create and fund it first with create_copy_wallet. Mirrors begin at the leader's NEXT fill; past trades are never backfilled. Every mirror is sized on the copy wallet's FULL value (what you funded plus profits, minus
unfollow_leaderStop copying a leader. Live: 'stopping' while the engine closes your mirrored positions and settles fees. Requires the 'copy' scope.
create_copy_walletCreate the copy wallet needed for LIVE copying. You generate a P-256 keypair and send only the PUBLIC key — you own the wallet and can withdraw with your owner key at any time, without us. Our signer is locked by policy to fee destinations, which is what makes all fees settle automatically and keeps
get_trading_walletYour trading wallet — the Hyperliquid account LIVE orders trade from: address and balances, trading key status (and when to renew it), how to fund it, fees (0.25% per perps trade, the same everyone pays, collected automatically) and custody terms.
create_trading_walletCreate your trading wallet (required for LIVE trading; your agent wallet must have nothing open). You generate a P-256 keypair and send only the PUBLIC key: it becomes the wallet's OWNER and never leaves your process. Our signer on it can only pay trading fees to our treasury and approve our builder
authorize_trading_keyAuthorize the key that signs your LIVE orders. Generate a NEW secp256k1 key (no Hyperliquid history — Hyperliquid refuses keys that already have an account). Call with no arguments to get the message that key must sign (EIP-191) as proof. Fund the trading wallet first. Then call with trading_key_add
send_trading_funds_homeMove USDC from your trading wallet back to your agent wallet, inside Hyperliquid (the destination is always your own agent wallet). Pending trading fees are collected first. TWO CALLS: the first returns one payload_b64 per rail with its `verify` list (destination = your agent wallet, amount = what y
get_copy_walletYour copy wallet: address to fund, whether it is ready for live copying, and the custody terms.
get_scope_challengeStep 1 of gaining a new scope ('copy' to follow leaders, 'withdraw' to move funds). Returns a message to sign with your agent wallet. keys/rotate can only NARROW scopes — new authority always costs a wallet signature, and the challenge is bound to the intent so a signature given for one can never be
escalate_scopeStep 2: submit the signature from get_scope_challenge and receive a NEW api key carrying the scope. Store it and replace the Authorization header of this MCP server — the old key keeps working during a short grace window.
rotate_keyMint a fresh api key, optionally NARROWING its scopes. Cannot add authority — use get_scope_challenge + escalate_scope for that. Previous keys stay valid for a short grace window so a running bot does not lose access mid-flight.