Vectorial Data Terminal MCP
An official MCP server provided by Vectorial Data that enables AI agents to interact with the Vectorial Data Terminal. It exposes native tools for self-custodial trading on Hyperliquid perpetuals and Polymarket prediction markets, including registration, order execution, limit setting, and yield earning via HLP or staking, all secured by user-held keys and server-enforced risk limits.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://terminal.vectorialdata.com/api/mcpWhat its tools do
68 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (22)
get_docslist_marketsget_accountget_positionslist_ordersget_metricsget_limitsget_withdrawals_configlist_pending_withdrawalsguardian_statuslist_webhooksget_webhooklist_copy_leadersget_copy_statusget_trading_walletget_copy_walletlist_prediction_marketsget_prediction_bookget_predictions_accountget_prediction_positionsget_earnlist_operations
Can change data (46)
get_registration_challengeregister_agentplace_ordersubmit_orderclose_positionprotect_positioncancel_ordersubmit_intentlog_decisionupdate_limitsset_modekill_switchresume_tradingprepare_withdrawalinvite_guardiancreate_webhookdelete_webhooktest_webhookfollow_leaderunfollow_leadercreate_copy_walletcreate_trading_walletauthorize_trading_keysend_trading_funds_homeget_scope_challengeescalate_scoperotate_keyactivate_predictionsplace_prediction_ordersubmit_prediction_ordersend_predictions_homecollect_prediction_winningssubmit_predictions_batchcertify_earnearn_hlp_depositearn_hlp_withdrawbuy_hypesell_hypestake_hypedelegate_hypeunstake_hypeearn_usdc_depositearn_usdc_withdrawtransfer_spot_perpsmove_fundssubmit_operation
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to vectorialdata.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Register an AI agent wallet and obtain an API key via EIP-191 signature
- Execute paper or live trades on Hyperliquid perpetual futures
- Place prediction market orders on Polymarket
- Manage risk limits and activate a kill switch for the agent
Source and maintenance
Protocol and capabilities
- Server
- vectorialdata-terminal 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 68 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
68 advertised
get_docs
The complete Agent API manual (markdown): auth, trading, limits, withdrawals, error catalog.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Read the Agent API manual",
"readOnlyHint": true,
"openWorldHint": false
}list_markets
Tradeable markets with live prices and the precision metadata needed to size orders (size_decimals, min_size, price rules, $10 min notional).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "List perps markets",
"readOnlyHint": true,
"openWorldHint": true
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "The agent wallet address (0x…)"
}
}
}{
"title": "Get a registration challenge",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address",
"nonce",
"signature",
"label"
],
"properties": {
"label": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "A name for this agent, 1–60 characters, shown on your account"
},
"nonce": {
"type": "string",
"description": "The nonce returned by get_registration_challenge"
},
"address": {
"type": "string",
"description": "Your agent wallet address (0x…): the same one you passed to get_registration_challenge"
},
"signature": {
"type": "string",
"description": "EIP-191 signature of the challenge message"
}
}
}{
"title": "Register an agent account",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_account
Your agent account: status, mode (paper|live), scopes, live balances, deposit address, limits.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your account",
"readOnlyHint": true,
"openWorldHint": true
}get_positions
Open positions (live: venue truth; paper: from your fills).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get open positions",
"readOnlyHint": true,
"openWorldHint": true
}list_orders
Your authoritative order ledger (cursor-paginated). Paper triggers appear as trigger_tp/trigger_sl rows.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Page size, 1–200"
},
"before": {
"type": "string",
"description": "Cursor from a previous page's next_cursor"
},
"status": {
"type": "string",
"description": "Filter: prepared|submitted|resting|filled|rejected|cancelled|expired"
}
}
}{
"title": "List your orders",
"readOnlyHint": true,
"openWorldHint": true
}get_metrics
Your tear-sheet: win rate, net PnL, fees, drawdown, Sharpe, equity curve — computed server-side from the authoritative ledger.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"mode": {
"enum": [
"paper",
"live"
],
"type": "string",
"description": "Which ledger to measure: paper or live"
},
"window": {
"enum": [
"7d",
"30d",
"90d",
"all"
],
"type": "string",
"description": "Stats window: 7d, 30d, 90d or all"
}
}
}{
"title": "Get your performance metrics",
"readOnlyHint": true,
"openWorldHint": true
}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, the same everyone pays, settled automatically. Brackets: pass tp/sl. Sizing: explicit size, or risk-first via risk_usd+stop_price (size = risk / |entry−stop|). Min notional $10.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"market",
"side",
"type"
],
"properties": {
"sl": {
"type": "number",
"description": "Stop-loss trigger price in USD (optional reduce-only bracket)",
"exclusiveMinimum": 0
},
"tp": {
"type": "number",
"description": "Take-profit trigger price in USD (optional reduce-only bracket)",
"exclusiveMinimum": 0
},
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"description": "buy = go long (or reduce a short); sell = go short (or reduce a long)"
},
"size": {
"type": "number",
"description": "Size in coins, e.g. 0.01 for BTC. Omit it to size by risk_usd + stop_price instead",
"exclusiveMinimum": 0
},
"type": {
"enum": [
"market",
"limit"
],
"type": "string",
"description": "market = fills now at a protected price; limit = rests at limit_price"
},
"market": {
"type": "string",
"description": "Symbol, e.g. BTC"
},
"risk_usd": {
"type": "number",
"description": "Risk-first sizing: dollars at risk to the stop",
"exclusiveMinimum": 0
},
"stop_price": {
"type": "number",
"description": "Required with risk_usd; also becomes the SL",
"exclusiveMinimum": 0
},
"limit_price": {
"type": "number",
"description": "Limit price in USD; required when type is limit",
"exclusiveMinimum": 0
},
"reduce_only": {
"type": "boolean",
"description": "true = this order can only reduce an existing position, never open or flip one"
},
"client_order_id": {
"type": "string",
"description": "Idempotency key"
}
}
}{
"title": "Place a perps order",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}submit_order
Execute a prepared LIVE order with your trading key's signatures (one per typed_data, in order).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"signatures"
],
"properties": {
"order_id": {
"type": "string",
"description": "The order_id returned by place_order"
},
"signatures": {
"type": "array",
"items": {
"type": "string"
},
"description": "One 0x… EIP-712 signature per actions[i].typed_data from place_order, in order"
}
}
}{
"title": "Execute a signed order",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}close_position
Close an open position (fully or size_pct). Paper executes immediately; live returns typed_data for signing.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"market"
],
"properties": {
"market": {
"type": "string",
"description": "Symbol of the open position, e.g. BTC"
},
"size_pct": {
"type": "number",
"maximum": 100,
"minimum": 1,
"description": "Percent of the position to close; omit to close all of it"
}
}
}{
"title": "Close a position",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}protect_position
Attach post-hoc reduce-only TP/SL triggers to an open position. Paper executes immediately.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"market"
],
"properties": {
"sl": {
"type": "number",
"description": "Stop-loss trigger price in USD",
"exclusiveMinimum": 0
},
"tp": {
"type": "number",
"description": "Take-profit trigger price in USD",
"exclusiveMinimum": 0
},
"market": {
"type": "string",
"description": "Symbol of the open position, e.g. BTC"
}
}
}{
"title": "Add take-profit / stop-loss",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}cancel_order
Cancel a resting order by ledger id. Paper executes immediately.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"description": "The order_id of a resting order (see list_orders)"
}
}
}{
"title": "Cancel a resting order",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}submit_intent
Execute a prepared intent (cancel/protect/withdraw) with the wallet's signatures.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"intent_id",
"signatures"
],
"properties": {
"intent_id": {
"type": "string",
"description": "The intent_id returned by close_position, protect_position, cancel_order or prepare_withdrawal"
},
"signatures": {
"type": "array",
"items": {
"type": "string"
},
"description": "One 0x… EIP-712 signature per actions[i].typed_data of the intent, in order"
}
}
}{
"title": "Execute a signed intent",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}log_decision
Log WHY you traded (your audit trail and future public track record). Pass order_id to correlate.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"reasoning"
],
"properties": {
"model": {
"type": "string",
"description": "The model or strategy that made the decision (optional)"
},
"order_id": {
"type": "string",
"description": "The order_id this decision belongs to, to correlate them (optional)"
},
"reasoning": {
"type": "string",
"maxLength": 20000,
"description": "Why you traded (or didn't), in plain words; kept in your audit trail"
}
}
}{
"title": "Log a trading decision",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_limits
Your bounded-autonomy rails (caps, allowlists, pending loosenings).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your safety limits",
"readOnlyHint": true,
"openWorldHint": true
}update_limits
Adjust rails. Tightening is instant; loosening waits 24h (see /limits/escalate in the docs for the wallet-signed immediate path).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"asset_allowlist": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Markets you may open, e.g. [\"BTC\",\"ETH\"]; null = all. Closing is always allowed"
},
"max_daily_loss_usd": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Daily realized-loss breaker in USD (UTC day); null = no cap"
},
"max_order_notional_usd": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Max USD notional of a single order; null = no cap (loosening waits 24h)"
},
"max_position_notional_usd": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Max total exposure in USD across perps, predictions and Earn; null = no cap"
}
}
}{
"title": "Update your safety limits",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}set_mode
Flip paper ↔ live. Fund the wallet before going live (see get_account.deposit).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"mode"
],
"properties": {
"mode": {
"enum": [
"paper",
"live"
],
"type": "string",
"description": "paper = simulated fills, nothing to sign; live = real funds from your trading wallet"
}
}
}{
"title": "Switch paper / live",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}kill_switch
Instant pause: every subsequent prepare/submit is rejected until resume_trading (which needs the wallet's signature).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Pause all trading (kill switch)",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"nonce": {
"type": "string",
"description": "Second call only: the nonce returned by the first call"
},
"signature": {
"type": "string",
"description": "EIP-191 signature of the challenge message, by the account wallet"
}
}
}{
"title": "Resume trading (wallet-signed)",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_withdrawals_config
Money-out policy: mode (disabled|autonomous|human_passkey), strict destinations, guardian link.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get the withdrawal policy",
"readOnlyHint": true,
"openWorldHint": true
}list_pending_withdrawals
Your withdraw intents and their approval lifecycle (human_passkey). Approved intents include signable actions.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "List pending withdrawals",
"readOnlyHint": true,
"openWorldHint": true
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"destination",
"amount_usd"
],
"properties": {
"amount_usd": {
"type": "number",
"description": "USDC to withdraw from Hyperliquid",
"exclusiveMinimum": 0
},
"destination": {
"type": "string",
"description": "0x address that receives the USDC; it must already be in your withdrawal allowlist"
}
}
}{
"title": "Prepare a withdrawal",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}guardian_status
Human guardian link state (human_passkey mode).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get the human guardian status",
"readOnlyHint": true,
"openWorldHint": true
}invite_guardian
Mint a single-use invite (48h) for a human to become this agent's withdrawal guardian. Hand them the accept_url.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Invite a human guardian",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}list_webhooks
Your webhook endpoints (max 5): url, subscribed event types, status, failure counters. Also returns the full event-type catalog.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "List webhooks",
"readOnlyHint": true,
"openWorldHint": true
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Public https endpoint that accepts POSTed JSON events"
},
"event_types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Subset of the catalog from list_webhooks; omit = all"
}
}
}{
"title": "Create a webhook",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}get_webhook
One webhook + its last 20 delivery attempts (status codes, retries, dead letters) — the delivery debugging surface.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"webhook_id"
],
"properties": {
"webhook_id": {
"type": "string",
"description": "The webhook id (see list_webhooks)"
}
}
}{
"title": "Get a webhook",
"readOnlyHint": true,
"openWorldHint": true
}delete_webhook
Remove a webhook endpoint (its queued deliveries are dropped).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"webhook_id"
],
"properties": {
"webhook_id": {
"type": "string",
"description": "The webhook id to delete (see list_webhooks)"
}
}
}{
"title": "Delete a webhook",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"webhook_id"
],
"properties": {
"webhook_id": {
"type": "string",
"description": "The webhook id to send a test event to (see list_webhooks)"
}
}
}{
"title": "Send a test webhook event",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}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_drawdown_pct before ranking by return — the best return is often the one that hurt most.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "List strategies you can copy",
"readOnlyHint": true,
"openWorldHint": true
}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 agent wallet, not the copy wallet. A retired paper follow shows only its status (result: null, retired.code = paper_copy_retired).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your copy-trading status",
"readOnlyHint": true,
"openWorldHint": true
}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 losses), in proportion to the leader's equity — not on allocation_usd; to copy with less, fund less. Sizing includes the $10 minimum bump, so a small copy wallet gives a risk profile that does not match the leader's. mode 'paper' returns paper_copy_retired: a leader's operations are only visible to followers with real capital. Requires the 'copy' scope.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"leader_id",
"allocation_usd",
"mode"
],
"properties": {
"mode": {
"enum": [
"paper",
"live"
],
"type": "string",
"description": "'live' = real funds from your copy wallet. 'paper' is retired (returns paper_copy_retired)."
},
"leader_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The leader's numeric id (see list_copy_leaders)",
"exclusiveMinimum": 0
},
"allocation_usd": {
"type": "number",
"description": "Recorded with the follow. Mirrors size on the copy wallet's full value, not on this number (the wallet must hold the leader's minimum)",
"exclusiveMinimum": 0
}
}
}{
"title": "Copy a leader with real funds",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}unfollow_leader
Stop copying a leader. Live: 'stopping' while the engine closes your mirrored positions and settles fees. Requires the 'copy' scope.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"leader_id"
],
"properties": {
"leader_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "The numeric id of the leader you stop copying (see get_copy_status)",
"exclusiveMinimum": 0
}
}
}{
"title": "Stop copying a leader",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}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 your Hyperliquid trading agent from expiring on you. Requires the 'copy' scope. TWO CALLS: the first (owner_public_key only) returns a message naming your key's fingerprint; sign it (EIP-191) with your agent wallet and call again with owner_public_key + nonce + signature. An API key alone can never bind an owner key.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"owner_public_key"
],
"properties": {
"nonce": {
"type": "string",
"description": "Second call only: the nonce returned by the first call."
},
"signature": {
"type": "string",
"description": "Second call only: EIP-191 signature of the returned message by your agent wallet."
},
"owner_public_key": {
"type": "string",
"description": "Your P-256 PUBLIC key in SPKI form (PEM or base64). Never send the private key."
}
}
}{
"title": "Create your copy wallet",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your trading wallet",
"readOnlyHint": true,
"openWorldHint": true
}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 fee — it cannot move your money anywhere else or authorize anyone to trade. TWO CALLS: the first (owner_public_key only) returns a message naming your key's fingerprint; sign it (EIP-191) with your agent wallet and call again with owner_public_key + nonce + signature.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"owner_public_key"
],
"properties": {
"nonce": {
"type": "string",
"description": "Second call only: the nonce returned by the first call."
},
"signature": {
"type": "string",
"description": "Second call only: EIP-191 signature of the returned message by your agent wallet."
},
"owner_public_key": {
"type": "string",
"description": "Your P-256 PUBLIC key in SPKI form (PEM or base64). Never send the private key."
}
}
}{
"title": "Create your trading wallet",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}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_address + trading_key_proof: you get payload_b64 (the exact Privy request as canonical JSON) and a `verify` list — decode it and check every field against YOUR records (your saved privy_wallet_id, your trading key) BEFORE signing it with your OWNER P-256 key (ECDSA P-256 over SHA-256, DER, base64). Call a third time adding time + owner_signature. Valid 180 days; repeat to renew or rotate.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"time": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Last call only: the `time` returned by the previous call"
},
"owner_signature": {
"type": "string",
"description": "Last call only: your OWNER key's signature over payload_b64"
},
"trading_key_proof": {
"type": "string",
"description": "EIP-191 signature of trading_key_message by the trading key"
},
"trading_key_address": {
"type": "string",
"description": "A NEW 0x address whose key you generated to sign orders (not your agent wallet nor the trading wallet)"
}
}
}{
"title": "Authorize a trading key",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}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 you asked) — check it, then sign with your OWNER key; call again with time + owner_signatures {rail: signature}. Without an API key (e.g. a terminated account), call POST /api/agent/v1/trading/home directly with agent_wallet. To leave Hyperliquid, withdraw from your agent wallet as usual.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_usd"
],
"properties": {
"time": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Second call only: the `time` returned by the first call (the nonce you signed)"
},
"amount_usd": {
"type": "number",
"description": "At most 2 decimals (it is exactly what gets signed).",
"exclusiveMinimum": 0
},
"owner_signatures": {
"type": "object",
"description": "Second call only: { sendAsset?: sig, usdSend?: sig }",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
}
}{
"title": "Send trading funds to your agent wallet",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}get_copy_wallet
Your copy wallet: address to fund, whether it is ready for live copying, and the custody terms.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your copy wallet",
"readOnlyHint": true,
"openWorldHint": true
}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 replayed for the other.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"intent"
],
"properties": {
"intent": {
"enum": [
"enable_copy",
"enable_withdraw"
],
"type": "string",
"description": "enable_copy = gain the copy scope; enable_withdraw = gain the withdraw scope"
}
}
}{
"title": "Get a scope challenge",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"nonce",
"signature",
"intent"
],
"properties": {
"nonce": {
"type": "string",
"description": "The nonce returned by get_scope_challenge"
},
"intent": {
"enum": [
"enable_copy",
"enable_withdraw"
],
"type": "string",
"description": "The same intent you passed to get_scope_challenge"
},
"signature": {
"type": "string",
"description": "EIP-191 signature of the challenge message"
}
}
}{
"title": "Gain a new scope (wallet-signed)",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"scopes": {
"type": "array",
"items": {
"enum": [
"read",
"trade",
"withdraw",
"copy"
],
"type": "string"
},
"description": "Subset of your current scopes. Omit to keep the same set."
}
}
}{
"title": "Rotate your API key",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}list_prediction_markets
Prediction markets you can trade now (Polymarket): events with their markets and, per outcome, the CLOB token_id you trade and its price (a probability 0–1 = USD per share; a winning share pays $1). Default: by 24h volume. Optional: query (search), event_slug (one event), tag (a Gamma tag slug, e.g. sports, politics, crypto), limit (≤50), offset.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tag": {
"type": "string",
"maxLength": 60,
"description": "A Polymarket tag slug, e.g. sports, politics, crypto"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Events per page, 1–50"
},
"query": {
"type": "string",
"maxLength": 120,
"description": "Free-text search, e.g. 'fed rates' or 'lakers'"
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "How many events to skip (pagination)"
},
"event_slug": {
"type": "string",
"maxLength": 200,
"description": "Return one event by its slug (from an earlier listing)"
}
}
}{
"title": "List prediction markets",
"readOnlyHint": true,
"openWorldHint": true
}get_prediction_book
Live order book of one prediction outcome (best first): best bid/ask, mid, tick size and the top levels with sizes in shares.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token_id"
],
"properties": {
"token_id": {
"type": "string",
"description": "The outcome's decimal CLOB token id (from list_prediction_markets)"
}
}
}{
"title": "Get a prediction order book",
"readOnlyHint": true,
"openWorldHint": true
}get_predictions_account
Your predictions account: your deposit wallet (a Polymarket smart wallet only your agent wallet controls), activation steps, cash (pUSD = USD), WHERE TO DEPOSIT (any supported chain; lands as pUSD in minutes), anything pending and the last relayer transaction.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your predictions account",
"readOnlyHint": true,
"openWorldHint": true
}activate_predictions
Enable prediction markets (once, gasless). Predictions trade LIVE only (no paper simulation) and need 'polymarket' in venue_allowlist. TWO CALLS: the first (no arguments) deploys your deposit wallet and returns actions[] — sign each typed_data (EIP-712) with your AGENT wallet, in order (ClobAuth links your Polymarket CLOB account; the approvals batch lets your wallet buy, sell and collect). Then call again with activation_id + signatures within 10 minutes. Nothing here moves money.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"signatures": {
"type": "array",
"items": {
"type": "string"
},
"description": "Second call only: one 0x… signature per action, in order"
},
"activation_id": {
"type": "string",
"description": "Second call only"
}
}
}{
"title": "Activate prediction markets",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}place_prediction_order
Buy or sell a prediction outcome with a fill-or-kill market order (fills entirely at a protected price or nothing happens). BUY: amount_usd (min $1; Polymarket's taker fee and our builder fee go on top — the same everyone pays; max_spend_usd caps the all-in spend). SELL: shares. Optional limit_price (BUY: max, SELL: min) — the house price guard still applies, the stricter wins. Returns typed_data: sign it with your AGENT wallet (EIP-712), then submit_prediction_order within 60s. Your caps (order size, account exposure, daily loss) count perps and predictions together; sells only reduce and skip them.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"token_id",
"side"
],
"properties": {
"side": {
"enum": [
"buy",
"sell"
],
"type": "string",
"description": "buy = buy shares of this outcome; sell = sell shares you hold"
},
"shares": {
"type": "number",
"description": "SELL only: how many shares to sell",
"exclusiveMinimum": 0
},
"token_id": {
"type": "string",
"description": "The outcome's CLOB token id (decimal string) from list_prediction_markets"
},
"amount_usd": {
"type": "number",
"description": "BUY only: USD to spend (min $1; fees go on top)",
"exclusiveMinimum": 0
},
"limit_price": {
"type": "number",
"description": "Optional worst price as a probability 0–1 (buy: max, sell: min); it can only tighten the house guard",
"exclusiveMaximum": 1,
"exclusiveMinimum": 0
},
"max_spend_usd": {
"type": "number",
"description": "BUY only: cap on the all-in spend, fees included",
"exclusiveMinimum": 0
},
"client_order_id": {
"type": "string",
"maxLength": 64,
"description": "Your own id for this order (up to 64 characters)"
}
}
}{
"title": "Prepare a prediction order",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}submit_prediction_order
Execute a prepared prediction order with your agent wallet's signature over its typed_data. Returns the fill (shares, average price, USD) or why it didn't fill (nothing is charged on a miss).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"signature"
],
"properties": {
"order_id": {
"type": "string",
"description": "The order_id returned by place_prediction_order"
},
"signature": {
"type": "string",
"description": "0x… EIP-712 signature by your agent wallet"
}
}
}{
"title": "Execute a signed prediction order",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}get_prediction_positions
Your open prediction positions (Polymarket's numbers): shares, average and current price, cost, value, P&L, and whether a resolved winner is waiting to be collected (collectable).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get your prediction positions",
"readOnlyHint": true,
"openWorldHint": true
}send_predictions_home
Move predictions cash back to YOUR agent wallet as native USDC (polygon, arbitrum or base; min $2) through Polymarket's bridge — the destination is always your own agent wallet. Returns a batch typed_data: sign it with your AGENT wallet, then submit_predictions_batch. Works while paused; without an API key call POST /api/agent/v1/predictions/home directly with agent_wallet.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "true = send all your predictions cash"
},
"to_chain": {
"enum": [
"polygon",
"arbitrum",
"base"
],
"type": "string",
"description": "Chain where your agent wallet receives native USDC: polygon, arbitrum or base"
},
"amount_usd": {
"type": "number",
"description": "USD of predictions cash to send (min $2)",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare sending predictions cash home",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}collect_prediction_winnings
Collect resolved WINNING positions into your predictions cash (Polymarket usually does this automatically at resolution; use this if get_prediction_positions shows collectable: true). Optional condition_id. Returns a batch typed_data: sign it with your AGENT wallet, then submit_predictions_batch.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"condition_id": {
"type": "string",
"description": "Collect only this market (0x condition id); omit to collect every resolved winner"
}
}
}{
"title": "Prepare collecting winnings",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}submit_predictions_batch
Execute a prepared send_predictions_home or collect_prediction_winnings batch with your agent wallet's signature (gasless, via Polymarket's relayer).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"batch_id",
"signature"
],
"properties": {
"batch_id": {
"type": "string",
"description": "The batch_id returned by send_predictions_home, collect_prediction_winnings or move_funds"
},
"signature": {
"type": "string",
"description": "0x… EIP-712 signature by your agent wallet"
}
}
}{
"title": "Execute a signed predictions batch",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}get_earn
Earn for agents: HLP (Hyperliquid's market-making vault), HYPE staking and USDC lending — rates, fees, lockups and validators; whether you can enter (live, 'earn' in venue_allowlist, certification); your trading wallet's balances and Earn positions. Everything runs from your trading wallet (create_trading_wallet first).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}{
"title": "Get Earn products and positions",
"readOnlyHint": true,
"openWorldHint": true
}certify_earn
One-time Earn eligibility certification (valid 1 year): the agent's OPERATOR certifies it is not in an excluded jurisdiction (read get_earn → certification_text first). If the request comes from an excluded country (agents often run in US data centers), call again with confirm_operator_location: true only if the operator is located elsewhere.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"confirm_operator_location": {
"type": "boolean",
"description": "true only if the agent's OPERATOR is outside the excluded jurisdictions although this request comes from one"
}
}
}{
"title": "Certify Earn eligibility",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}earn_hlp_deposit
Deposit USDC from your trading wallet into HLP. Entry fee 0.55% (collected after the deposit lands), min $5.03, 4-day lockup; counts toward your exposure cap. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_usd"
],
"properties": {
"amount_usd": {
"type": "number",
"description": "USDC to put into HLP (min $5.03); the 0.55% entry fee is taken from it",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare an HLP deposit",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}earn_hlp_withdraw
Withdraw from HLP back to your trading wallet (free; after the 4-day lockup). Works while paused. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "true = withdraw your whole HLP position"
},
"amount_usd": {
"type": "number",
"description": "USD to withdraw from HLP",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare an HLP withdrawal",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}buy_hype
Buy HYPE with USDC in your trading wallet (spot, immediate-or-cancel at up to +1% from mid; fee 0.25% in USDC; Hyperliquid's minimum order is $10). The outcome says how much HYPE arrived — stake it with stake_hype. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_usd"
],
"properties": {
"amount_usd": {
"type": "number",
"description": "USDC to spend on HYPE (Hyperliquid's minimum spot order is $10)",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare a HYPE purchase",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}sell_hype
Sell spot HYPE for USDC in your trading wallet (immediate-or-cancel at no less than -1% from mid; the same spot sell fee everyone pays). Works while paused. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "true = sell all your free spot HYPE"
},
"amount_hype": {
"type": "number",
"description": "Spot HYPE to sell",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare a HYPE sale",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}stake_hype
Stake spot HYPE with a validator (get_earn → products.staking.validators, neutral order). Entry fee 0.25% in HYPE; rewards are paid daily on the delegation. Two owner steps: into the staking balance, then delegate. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_hype",
"validator"
],
"properties": {
"validator": {
"type": "string",
"description": "0x validator address"
},
"amount_hype": {
"type": "number",
"description": "Spot HYPE to stake; the 0.25% entry fee is kept from it",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare staking HYPE",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}delegate_hype
Delegate HYPE that is already in your staking balance (free): finishes a stake whose delegation didn't go through, or re-delegates after an undelegate. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_hype",
"validator"
],
"properties": {
"validator": {
"type": "string",
"description": "0x address of the validator (see get_earn → products.staking.validators)"
},
"amount_hype": {
"type": "number",
"description": "HYPE already in your staking balance to delegate",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare delegating HYPE",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}unstake_hype
Unstake HYPE (free): with validator, undelegate it first (a delegation is locked 1 day); then Hyperliquid's 7-day withdrawal to spot starts. Without validator, only the withdrawal of HYPE already undelegated. Works while paused. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_hype"
],
"properties": {
"validator": {
"type": "string",
"description": "The validator to undelegate from; omit to only withdraw HYPE already undelegated"
},
"amount_hype": {
"type": "number",
"description": "HYPE to unstake",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare unstaking HYPE",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}earn_usdc_deposit
Lend USDC on Base in our Earn USDC vault (Morpho, Gauntlet USDC Prime) from your trading wallet's address on Base — move USDC there first with move_funds perps → earn_usdc. No entry fee; the vault keeps 20% of the yield. Owner-signed Base transactions (gas ~1¢ in USDC): submit_operation needs owner_public_key. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "true = lend all your USDC on Base except what gas needs"
},
"amount_usd": {
"type": "number",
"description": "USDC on Base to lend",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare lending USDC",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}earn_usdc_withdraw
Withdraw from the Earn USDC vault to your USDC on Base (free; then move_funds earn_usdc → perps to trade with it). Works while paused. submit_operation needs owner_public_key. Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"all": {
"type": "boolean",
"description": "true = withdraw your whole Earn USDC position"
},
"amount_usd": {
"type": "number",
"description": "USDC to withdraw from the vault to your USDC on Base",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare withdrawing lent USDC",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}transfer_spot_perps
Move USDC between spot and perps inside your trading wallet (classic accounts only; free). Returns operation_id + signatures_needed[]: sign EACH step with the signer it names — 'owner' = your OWNER P-256 key over payload_b64 (decode it and check every `verify` line against YOUR records first), 'trading_key' = your trading key over typed_data (EIP-712) — then submit_operation within 5 minutes.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"amount_usd",
"to"
],
"properties": {
"to": {
"enum": [
"perps",
"spot"
],
"type": "string",
"description": "Where the USDC goes: perps or spot"
},
"amount_usd": {
"type": "number",
"description": "USDC to move",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare a spot ↔ perps transfer",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}move_funds
Move money between YOUR accounts, in any direction: perps (trading wallet on Hyperliquid), predictions (your Polymarket deposit wallet) and earn_usdc (your trading wallet's USDC on Base). No fee of ours (Circle/Polymarket bridge fees shown in the summary). Moves from perps or earn_usdc return an operation for submit_operation (from earn_usdc: owner-signed Base transactions → pass owner_public_key); moves from predictions return a predictions batch: sign it with your AGENT wallet and call submit_predictions_batch.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from",
"to"
],
"properties": {
"to": {
"enum": [
"perps",
"predictions",
"earn_usdc"
],
"type": "string",
"description": "Account the money goes to (different from `from`)"
},
"all": {
"type": "boolean",
"description": "true = move everything that can be moved"
},
"from": {
"enum": [
"perps",
"predictions",
"earn_usdc"
],
"type": "string",
"description": "Account the money leaves: perps (trading wallet), predictions (deposit wallet) or earn_usdc (trading wallet on Base)"
},
"amount_usd": {
"type": "number",
"description": "USD to move",
"exclusiveMinimum": 0
}
}
}{
"title": "Prepare moving money between your accounts",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}submit_operation
Execute a prepared Earn / move operation with your signatures, one per step and in order (owner steps: base64 P-256 signature over payload_b64; trading_key steps: 0x… EIP-712 signature). All signatures are checked before the first step runs. Returns each step's result; status 'uncertain' means check get_earn before retrying. If this call times out, the operation may still be finishing: check list_operations ('executing' = still running; don't prepare it again until it ends).
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"operation_id",
"signatures"
],
"properties": {
"signatures": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "One signature per signatures_needed step, in order: base64 P-256 for owner steps, 0x… EIP-712 for trading_key steps"
},
"operation_id": {
"type": "string",
"description": "The operation_id returned by the prepare tool"
},
"owner_public_key": {
"type": "string",
"description": "Your OWNER P-256 public key (SPKI PEM or base64). Required when the operation has Base transactions; every owner signature is then checked before anything is sent."
}
}
}{
"title": "Execute a signed Earn / move operation",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}list_operations
Your last Earn / move operations: what each did, step by step, and how it ended.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many recent operations, 1–50"
}
}
}{
"title": "List your Earn / move operations",
"readOnlyHint": true,
"openWorldHint": true
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 861 ms
- 95th percentile latency
- 861 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 861 ms · metadata changed · 68 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http vectorial-data-terminal-mcp https://terminal.vectorialdata.com/api/mcpCodex
codex mcp add vectorial-data-terminal-mcp --url https://terminal.vectorialdata.com/api/mcpCursor
{
"mcpServers": {
"vectorial-data-terminal-mcp": {
"url": "https://terminal.vectorialdata.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"vectorial-data-terminal-mcp": {
"type": "streamableHttp",
"url": "https://terminal.vectorialdata.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"vectorial-data-terminal-mcp": {
"type": "http",
"url": "https://terminal.vectorialdata.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http vectorial-data-terminal-mcp https://terminal.vectorialdata.com/api/mcpClaude Desktop
https://terminal.vectorialdata.com/api/mcpWindsurf
{
"mcpServers": {
"vectorial-data-terminal-mcp": {
"serverUrl": "https://terminal.vectorialdata.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like Vectorial Data Terminal MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Vectorial Data Terminal MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.