vectorialdata-terminal
https://terminal.vectorialdata.com
Registry code: af1bc53653773df4
VectorialData Terminal — non-custodial brokerage for AIs (Hyperliquid perps).
New accounts start in PAPER mode: a full simulation against real prices where
- endpoint
- https://terminal.vectorialdata.com/api/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is vectorialdata-terminal live?
- Yes — it answered the hub's last check (checked 42m ago). It answered 100% of checks over the last 30 days.
- Is vectorialdata-terminal free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does vectorialdata-terminal have?
- 43 tools: get_positions, get_limits, set_mode, guardian_status, test_webhook, get_docs, list_markets, get_registration_challenge, ….
- Is vectorialdata-terminal safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 43 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_positions auth-required never probed
Open positions (live: venue truth; paper: from your fills).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesget_limits auth-required never probed
Your bounded-autonomy rails (caps, allowlists, pending loosenings).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linesset_mode auth-required never probed
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" } } }arguments 16 linesguardian_status auth-required never probed
Human guardian link state (human_passkey mode).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 linestest_webhook auth-required never probed
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" } } }arguments 12 linesget_docs auth-required never probed
The complete Agent API manual (markdown): auth, trading, limits, withdrawals, error catalog.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 lineslist_markets auth-required never probed
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": {} }arguments 5 linesget_registration_challenge auth-required never probed
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…)" } } }arguments 13 linesregister_agent auth-required never probed
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 }, "nonce": { "type": "string" }, "address": { "type": "string" }, "signature": { "type": "string", "description": "EIP-191 signature of the challenge message" } } }arguments 27 lineslist_orders auth-required never probed
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 }, "before": { "type": "string", "description": "Cursor from a previous page's next_cursor" }, "status": { "type": "string", "description": "Filter: prepared|submitted|resting|filled|rejected|cancelled|expired" } } }arguments 19 linesget_metrics auth-required never probed
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" }, "window": { "enum": [ "7d", "30d", "90d", "all" ], "type": "string" } } }arguments 22 linesplace_order auth-required never probed
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", "exclusiveMinimum": 0 }, "tp": { "type": "number", "exclusiveMinimum": 0 }, "side": { "enum": [ "buy", "sell" ], "type": "string" }, "size": { "type": "number", "exclusiveMinimum": 0 }, "type": { "enum": [ "market", "limit" ], "type": "string" }, "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", "exclusiveMinimum": 0 }, "reduce_only": { "type": "boolean" }, "client_order_id": { "type": "string", "description": "Idempotency key" } } }arguments 62 linesget_account auth-required 42m ago
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": {} }arguments 5 linesget_copy_status auth-required 42m ago
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": {} }arguments 5 linesget_copy_wallet auth-required 42m ago
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": {} }arguments 5 linessubmit_order auth-required never probed
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" }, "signatures": { "type": "array", "items": { "type": "string" } } } }arguments 19 linesclose_position auth-required never probed
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" }, "size_pct": { "type": "number", "maximum": 100, "minimum": 1 } } }arguments 17 linesprotect_position auth-required never probed
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", "exclusiveMinimum": 0 }, "tp": { "type": "number", "exclusiveMinimum": 0 }, "market": { "type": "string" } } }arguments 20 linescancel_order auth-required never probed
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" } } }arguments 12 linessubmit_intent auth-required never probed
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" }, "signatures": { "type": "array", "items": { "type": "string" } } } }arguments 19 lineslog_decision auth-required never probed
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" }, "order_id": { "type": "string" }, "reasoning": { "type": "string", "maxLength": 20000 } } }arguments 19 linesupdate_limits auth-required never probed
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" } ] }, "max_daily_loss_usd": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "null" } ] }, "max_order_notional_usd": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "null" } ] }, "max_position_notional_usd": { "anyOf": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "null" } ] } } }arguments 52 lineskill_switch auth-required never probed
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": {} }arguments 5 linesresume_trading auth-required never probed
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" }, "signature": { "type": "string", "description": "EIP-191 signature of the challenge message, by the account wallet" } } }arguments 13 linesget_withdrawals_config auth-required never probed
Money-out policy: mode (disabled|autonomous|human_passkey), strict destinations, guardian link.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 lineslist_pending_withdrawals auth-required never probed
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": {} }arguments 5 linesprepare_withdrawal auth-required never probed
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", "exclusiveMinimum": 0 }, "destination": { "type": "string" } } }arguments 17 linesinvite_guardian auth-required never probed
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": {} }arguments 5 lineslist_webhooks auth-required never probed
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": {} }arguments 5 linescreate_webhook auth-required never probed
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" } } }arguments 20 linesget_webhook auth-required never probed
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" } } }arguments 12 linesdelete_webhook auth-required never probed
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" } } }arguments 12 lineslist_copy_leaders auth-required never probed
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": {} }arguments 5 linesfollow_leader auth-required never probed
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, "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 } } }arguments 29 linesunfollow_leader auth-required never probed
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, "exclusiveMinimum": 0 } } }arguments 14 linescreate_copy_wallet auth-required never probed
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." } } }arguments 21 linesget_trading_wallet auth-required never probed
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": {} }arguments 5 linescreate_trading_wallet auth-required never probed
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." } } }arguments 21 linesauthorize_trading_key auth-required never probed
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" } } }arguments 23 linessend_trading_funds_home auth-required never probed
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 }, "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" } } } }arguments 29 linesget_scope_challenge auth-required never probed
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" } } }arguments 16 linesescalate_scope auth-required never probed
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" }, "intent": { "enum": [ "enable_copy", "enable_withdraw" ], "type": "string" }, "signature": { "type": "string", "description": "EIP-191 signature of the challenge message" } } }arguments 25 linesrotate_key auth-required never probed
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." } } }arguments 19 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idaf1bc53653773df4.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/af1bc53653773df4/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/af1bc53653773df4?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.
Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.
- vectorialdata.com vectorialdata