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
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 43 |
| Latency | 908 ms |
| Last checked (UTC) | 2026-11-06T03:10:45.090Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-11-06T03:10:45.090Z | Healthy | 908 |
get_docs | The complete Agent API manual (markdown): auth, trading, limits, withdrawals, error catalog. |
list_markets | Tradeable markets with live prices and the precision metadata needed to size orders (size_decimals, min_size, price rules, $10 min notional). |
get_registration_challenge | Step 1 of creating an agent account: get a nonce+message to sign (EIP-191) with the agent's own EVM wallet. |
register_agent | Step 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_account | Your agent account: status, mode (paper|live), scopes, live balances, deposit address, limits. |
get_positions | Open positions (live: venue truth; paper: from your fills). |
list_orders | Your authoritative order ledger (cursor-paginated). Paper triggers appear as trigger_tp/trigger_sl rows. |
get_metrics | Your tear-sheet: win rate, net PnL, fees, drawdown, Sharpe, equity curve — computed server-side from the authoritative ledger. |
place_order | Place 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_order | Execute a prepared LIVE order with your trading key's signatures (one per typed_data, in order). |
close_position | Close an open position (fully or size_pct). Paper executes immediately; live returns typed_data for signing. |
protect_position | Attach post-hoc reduce-only TP/SL triggers to an open position. Paper executes immediately. |
cancel_order | Cancel a resting order by ledger id. Paper executes immediately. |
submit_intent | Execute a prepared intent (cancel/protect/withdraw) with the wallet's signatures. |
log_decision | Log WHY you traded (your audit trail and future public track record). Pass order_id to correlate. |
get_limits | Your bounded-autonomy rails (caps, allowlists, pending loosenings). |
update_limits | Adjust rails. Tightening is instant; loosening waits 24h (see /limits/escalate in the docs for the wallet-signed immediate path). |
set_mode | Flip paper ↔ live. Fund the wallet before going live (see get_account.deposit). |
kill_switch | Instant pause: every subsequent prepare/submit is rejected until resume_trading (which needs the wallet's signature). |
resume_trading | Reactivate 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_config | Money-out policy: mode (disabled|autonomous|human_passkey), strict destinations, guardian link. |
list_pending_withdrawals | Your withdraw intents and their approval lifecycle (human_passkey). Approved intents include signable actions. |
prepare_withdrawal | Prepare 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_status | Human guardian link state (human_passkey mode). |
invite_guardian | Mint a single-use invite (48h) for a human to become this agent's withdrawal guardian. Hand them the accept_url. |
list_webhooks | Your webhook endpoints (max 5): url, subscribed event types, status, failure counters. Also returns the full event-type catalog. |
create_webhook | Register 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_webhook | One webhook + its last 20 delivery attempts (status codes, retries, dead letters) — the delivery debugging surface. |
delete_webhook | Remove a webhook endpoint (its queued deliveries are dropped). |
test_webhook | Send 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_leaders | Strategies 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_status | What 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_leader | Start 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_leader | Stop copying a leader. Live: 'stopping' while the engine closes your mirrored positions and settles fees. Requires the 'copy' scope. |
create_copy_wallet | Create 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_wallet | Your 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_wallet | Create 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_key | Authorize 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_home | Move 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_wallet | Your copy wallet: address to fund, whether it is ready for live copying, and the custody terms. |
get_scope_challenge | Step 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_scope | Step 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_key | Mint 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. |