GDEX Trading
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GDEX_API_KEY | No | GDEX API key — auto-authenticates on startup | |
| GDEX_API_URL | No | Override API base URL (default: https://trade-api.gemach.io/v1) | https://trade-api.gemach.io/v1 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_gdex_docsA | Search GDEX documentation and skill files by keyword. Returns matching skill sections. |
| get_skill_fileA | Read a file that ships with a GDEX skill (e.g. gdex-token-risk scripts/token_risk.py). Omit path to list the skill's files. |
| get_sdk_patternB | Get TypeScript code patterns for common GDEX SDK operations. Returns working code examples. |
| get_api_infoA | Get GDEX API endpoint details — URL, method, parameters, and response format. |
| explain_workflowB | Explain an end-to-end GDEX trading workflow with step-by-step instructions and code. |
| get_chain_infoA | Get supported chains, chain IDs, DEXes, and capabilities. |
| get_trading_guideB | Get a complete trading guide for spot, perp, or limit order trading. |
| get_copy_trade_guideB | Get a copy trading guide for Solana spot or HyperLiquid perp copy trading. |
| get_component_guideB | Get React UI component patterns for GDEX trading interfaces. |
| auth_loginA | Authenticate with a GDEX API key. Sets the Bearer token for all subsequent requests. |
| generate_session_keypairA | Advanced/manual signing only: generate a secp256k1 session keypair. Prefer gdex_connect, which signs in and keeps keys on this machine. Returns only the public sessionKey unless revealPrivateKey is true. |
| managed_sign_inB | Sign in to GDEX managed-custody system using encrypted computedData payload. |
| build_sign_in_payloadA | Build the encrypted sign-in computedData payload from raw credentials. Returns the payload to use with managed_sign_in. |
| buy_tokenA | Buy a token with the chain's native token from the managed GDEX wallet (session-signed purchase_v2). Chains: Ethereum 1, Optimism 10, BSC 56, Sonic 146, Fraxtal 252, Robinhood 4663, Base 8453, Arbitrum 42161, Solana. Returns a requestId; follow it with wait_for_trade. To pay with USDC use usdc_buy. |
| sell_tokenA | Sell a token for the chain's native token from the managed GDEX wallet (session-signed sell_v2). Amount is a token amount ('100') or a percentage of the held balance ('50%', '100%'), resolved from the managed holdings. Returns a requestId; follow it with wait_for_trade. To receive USDC use usdc_sell. |
| wait_for_tradeA | Follow a buy_token / sell_token requestId to its result by polling /v1/trade-status. outcome: filled, failed, not_found (expired id) or pending (still running at the timeout: never resubmit). |
| open_perp_positionB | Open a perpetual futures position on HyperLiquid with leverage, TP/SL. Supports market and limit orders. |
| place_perp_orderA | Place a simple perp order on HyperLiquid without TP/SL. isMarket=true (default) is sent via /hl/create_order as a market order; isMarket=false sends a limit order at |
| close_perp_positionA | Close (fully or partially) one perp position with a reduce-only market order. The side is read from the live HL position: a long is closed with a sell, a short with a buy. Rejects when the position is flat/missing, when size exceeds it, or when a bare coin is open on several builder DEXes. |
| close_all_positionsA | Close all open perpetual positions on HyperLiquid. Known unreliable: the backend endpoint frequently returns TIMEOUT or 400 / JSON parse errors. Prefer close_perp_position per coin. |
| cancel_perp_orderC | Cancel a specific open perp order on HyperLiquid. |
| cancel_all_perp_ordersB | Cancel all open perp orders on HyperLiquid. |
| set_leverageA | Set leverage for a specific asset on HyperLiquid. Known broken: /hl/update_leverage has returned 404 in live tests. Pass |
| perp_depositC | Deposit USDC into the HyperLiquid perpetual account from Arbitrum. |
| perp_withdrawC | Withdraw USDC from the HyperLiquid perpetual account. |
| get_account_stateA | Get full HyperLiquid account state: positions, margin, balance, withdrawable amount. No auth required. |
| get_perp_positionsB | Get all open perpetual positions for a wallet on HyperLiquid. No auth required. |
| get_mark_priceB | Get the current mark price for a HyperLiquid asset. No auth required. |
| get_all_mid_pricesA | Get all current mid prices across all HyperLiquid assets. No auth required. |
| get_usdc_balanceB | Get USDC balance on HyperLiquid for a wallet. No auth required. |
| get_hl_open_ordersB | Get all open orders on HyperLiquid for a wallet. No auth required. |
| get_hl_trade_historyB | Get trade history on HyperLiquid for a wallet. No auth required. |
| get_hl_spot_stateB | Get HyperLiquid spot trading state for a wallet. No auth required. |
| get_trader_leverageA | Get the active leverage setting a trader uses for a specific coin on HyperLiquid. |
| execute_cross_perpA | Execute a cross-margin perpetual trade directly with a private key (no managed custody). Supports TP/SL and builder fees. |
| execute_isolated_perpC | Execute an isolated-margin perpetual trade directly with a private key. Requires explicit leverage. |
| execute_spotC | Execute a spot trade directly on HyperLiquid with a private key. |
| direct_cancel_orderB | Cancel an open order directly with a private key on HyperLiquid. |
| limit_buyB | Create a limit buy order — buy a token when price drops to target. Uses ABI-encoded + AES-encrypted computedData. |
| limit_sellB | Create a limit sell order — sell a token when price reaches target. Auto-classifies as TP or SL. |
| update_orderA | Update or delete an existing limit order. Set isDelete=true to cancel (no other fields needed). An update replaces amount, triggerPrice and TP/SL together, so all four are required. |
| get_limit_ordersB | List active limit orders for a user on a specific chain. Requires session-key auth. |
| get_copy_trade_walletsA | Get top 300 wallets ranked by totalPnl for Solana spot copy trade leaderboard. No auth. Cached 2 min. |
| get_copy_trade_custom_walletsA | Get top 300 wallets ranked by net received. No auth. Cached 2 min. |
| get_copy_trade_gemsA | Get hot new tokens heavily traded by top wallets. No auth. Cached 20s. |
| get_copy_trade_dexesA | List supported DEXes for a chain (e.g. Raydium, Pumpfun on Solana). No auth. |
| get_copy_trade_listA | List all copy trade configurations for a user. Requires session-key auth. |
| get_copy_trade_tx_listB | List copy trade transaction history with PnL. Requires session-key auth. |
| create_copy_tradeB | Create a new copy trade to auto-mirror a Solana trader's buys/sells. Solana only. |
| update_copy_tradeA | Low-level Solana copy trade update (prefer update_copy_trade_settings / pause_copy_trade / resume_copy_trade / delete_copy_trade). Every field is rewritten from this payload, so pass the full current config. isDelete=true permanently deletes the configuration; positions it opened are NOT sold and their TP/SL limit orders are NOT cancelled. isChangeStatus=true TOGGLES active/paused relative to the stored state (sending it twice resumes). isDelete and isChangeStatus cannot both be true. |
| update_copy_trade_settingsA | Change settings of an existing Solana copy trade. Never deletes and never pauses/resumes. Reads the current config first; omitted fields keep their current values. Open positions are not resized. |
| pause_copy_tradeA | Pause a Solana copy trade (isActive=false) WITHOUT deleting it. Reads the current state first and is a no-op if already paused. While paused the copier mirrors neither buys nor sells; positions it opened stay open and their TP/SL orders stay in place. Errors: PAUSE_STATE_UNVERIFIED (state could not be confirmed, nothing sent), PAUSE_UNSUPPORTED (stored config invalid; explains the alternative), COPY_TRADE_NOT_FOUND. |
| resume_copy_tradeA | Resume a paused Solana copy trade (isActive=true). No-op if already active. Trades made while paused are not replayed. |
| delete_copy_tradeA | PERMANENTLY delete a Solana copy trade configuration. Does NOT sell the positions it opened and does NOT cancel their TP/SL limit orders; manage those separately. Cannot be undone. To stop copying temporarily use pause_copy_trade instead. |
| get_hl_top_tradersA | Get top HyperLiquid perp traders by volume, trade count, or deposit. No auth. Cached 15 min. |
| get_hl_top_traders_by_pnlA | Get top 30 HyperLiquid perp traders ranked by PnL. Data by day/week/month. No auth. Cached 15 min. |
| get_hl_user_statsA | Get detailed trading stats for an HL user: daily PnL, volumes, trade counts, win rates. No auth. Cached 1 hr. |
| get_hl_perp_dexesB | Get available perpetual DEX list on HyperLiquid. No auth. |
| get_hl_all_assetsA | Get all tradeable assets on HyperLiquid with max leverage info. No auth. |
| get_hl_clearinghouse_stateA | Get account state (positions, margin) on a HyperLiquid DEX. No auth. Builder/HIP-3 positions (e.g. xyz:NVDA) live under their own dex — pass |
| get_hl_meta_and_asset_ctxsB | Get market metadata and asset contexts from HyperLiquid. No auth. |
| get_hl_deposit_tokensB | Get supported deposit tokens for HyperLiquid. No auth. |
| get_hl_copy_trade_listA | List all HL perp copy trade configurations for a user. Requires session-key auth. |
| get_hl_copy_trade_tx_listA | Get HL copy trade fill history. Supports pagination (max 100 per page). Session-key auth. Cached 15s. |
| create_hl_copy_tradeC | Create a new HL perp copy trade. Copies a trader's long/short perpetual positions. |
| update_hl_copy_tradeA | Low-level HL perp copy trade update (prefer update_hl_copy_trade_settings / pause_hl_copy_trade / resume_hl_copy_trade / delete_hl_copy_trade). Every field is rewritten from this payload, so pass the full current config. isDelete=true permanently deletes the configuration; perp positions it opened are NOT closed and their TP/SL orders are NOT cancelled. isChangeStatus=true TOGGLES active/paused relative to the stored state. isDelete and isChangeStatus cannot both be true. |
| update_hl_copy_trade_settingsA | Change settings of an existing HL perp copy trade. Never deletes and never pauses/resumes. Reads the current config first; omitted fields keep their current values. Configs created by SDK <= 4.12 may hold an invalid copyMode (e.g. 416/480) and oppositeCopy=true; pass copyMode, fixedAmountCostPerOrder and oppositeCopy explicitly to repair them. |
| pause_hl_copy_tradeA | Pause an HL perp copy trade (isActive=false) WITHOUT deleting it. Reads the current state first and is a no-op if already paused. While paused the copier mirrors neither opens nor closes, so copied positions stay open and will NOT follow the trader's exits; their TP/SL orders stay in place. Errors: PAUSE_STATE_UNVERIFIED (nothing sent), PAUSE_UNSUPPORTED (stored config invalid; explains the alternative), COPY_TRADE_NOT_FOUND. |
| resume_hl_copy_tradeA | Resume a paused HL perp copy trade (isActive=true). No-op if already active. Fills made while paused are not replayed. |
| delete_hl_copy_tradeA | PERMANENTLY delete an HL perp copy trade configuration. Does NOT close the perp positions it opened and does NOT cancel their TP/SL orders; close them with the perp tools if wanted. Cannot be undone. To stop copying temporarily use pause_hl_copy_trade instead. |
| get_portfolioA | Token holdings of the managed GDEX wallet on one chain (/v1/portfolio): exact raw and decimal balances, price, native value and P&L per token. Needs the session (accountRef). Errors instead of returning an empty portfolio when the read fails. |
| get_balancesA | Token balances of the managed GDEX wallet on one chain, optionally one token. [] means the backend reported no holdings; a failed read errors. Native balance: get_trading_funds. |
| get_trading_fundsA | Native balance the managed GDEX wallet can trade with on one chain (/v1/user), plus the managed wallet address per chain family. The value is approximate (backend float). Cross-chain USDC: usdc_get_balances. |
| get_trade_historyA | Successful spot trades of a GDEX account on one chain, newest first (/v1/user_history, keyed by the control wallet). Page with limit (max 50) and cursor = nextCursor of the previous page. |
| get_token_detailsB | Get detailed token info: price, market cap, liquidity, DEX pools, social links, security info. No auth. |
| get_trending_tokensB | Get trending tokens sorted by volume and price change. No auth. |
| get_ohlcvB | Get OHLCV candlestick data for a token. No auth. |
| get_top_tradersC | Get top performing trader wallets ranked by P&L, win rate, volume, or trade count. |
| get_wallet_infoA | Summary of the managed GDEX wallet on one chain: managed address, native balance (approximate, /v1/user), token count and USD total (/v1/portfolio). Needs the session (accountRef); there is no address-only read. |
| generate_evm_walletA | Generate a new EVM wallet offline (no network call). To trade with it, use gdex_connect { create: true } instead, which stores it locally. Returns only the address unless revealSecrets is true. |
| estimate_bridgeA | Get a cross-chain bridge quote without executing. Returns estimated output, provider, and time. |
| execute_bridgeA | Execute a cross-chain bridge transaction. Requires managed-custody auth. |
| get_bridge_ordersC | Get bridge order history for a user. Requires session-key auth. |
| managed_purchaseB | Submit an encrypted managed-custody buy trade via the GDEX backend. |
| managed_sellB | Submit an encrypted managed-custody sell trade via the GDEX backend. |
| managed_trade_statusB | Poll the status of a managed-custody trade by requestId. |
| build_trade_payloadB | Build an encrypted managed-custody trade computedData payload from raw credentials. |
| transfer_nativeA | Transfer native asset (ETH, SOL, SUI, BNB, ...) via managed custody. Requires pre-built encrypted computedData. |
| transfer_tokenA | Transfer ERC20 / SPL token via managed custody. Requires pre-built encrypted computedData. |
| add_commentC | Post a comment on a token. |
| get_commentsC | Get comments for a token. |
| vote_sentimentC | Cast a bullish/bearish sentiment vote on a token. |
| get_watchlistC | Fetch the user's watchlist. |
| change_watchlistB | Add or remove a token from the user's watchlist via managed custody. Requires pre-built encrypted computedData. |
| import_tokenB | Import a user-defined custom token into the platform via managed custody. Requires pre-built encrypted computedData. |
| get_wallet_performanceC | Get wallet performance / PnL summary across recent periods. |
| get_nof1_analyticsC | Get NoF1 advanced trader analytics for a wallet. |
| get_native_pricesB | Get current native token prices (ETH, SOL, SUI, BNB, ...) keyed by chain. |
| generate_pnlC | Trigger backend PnL generation for a wallet. |
| get_newest_tokensC | Get newest tokens across all chains (or a specific chain). |
| get_top_tokensC | Get top tokens by volume / market cap. |
| get_bigbuysC | "Big buy" alert feed for a chain — recent large buy transactions. |
| get_currently_liveC | Currently-livestreaming token launches. |
| get_live_statusB | Livestream status for a single token address. |
| get_xstocksC | List tokenised equities (xStocks). |
| get_zora_tokensC | List Zora-protocol tokens. |
| get_token_tradesC | Recent trades for a specific token. |
| get_token_imageC | Get server-rendered token social-card image metadata. |
| hl_outcomesA | Discover Hyperliquid HIP-4 outcome markets (GDEX has no Polymarket/Kalshi). Returns normalised markets: outcomeId, title, sides[] (label, coin "#", balanceCoin "+", price = current mid), quoteToken (collateral, held in the HL spot balance), state (active | pre_launch | expired | settled), rules (price 0.00001-0.99999 tick 0.00001, whole-contract size, min order notional 11 quote), settlement (no claim via GDEX). withVolume=true adds volume24h {volume, asOf, source, coverage} with a bounded wait. raw=true returns the backend payload unchanged. |
| get_hl_outcome_volumesA | Get 24h notional volume per outcome side coin from the Hyperliquid WS feed. Pass coins from hl_outcomes sides[].coin, e.g. ["#143150","#143151"]. Returns { coin: volume } for coins that reported; a missing coin means no reading (not zero). Prefer hl_outcomes withVolume=true, which reports coverage per market. |
| hl_outcome_accountA | Normalised state of a MANAGED wallet on one HIP-4 outcome market: positions (per side: size, hold, available, avgEntryPrice, markPrice, value, unrealizedPnl), openOrders (resting / partially_filled with orderId, price, size, filledSize), fills, historicalOrders (Hyperliquid status). Use it to reconcile after create/cancel/close. raw=true returns the backend payload. |
| hl_outcome_check_collateralA | Check the managed wallet's Hyperliquid SPOT balance of a market's quoteToken (outcome buys draw on spot collateral, not the perp account) against size × price. |
| hl_create_outcome_orderA | Place an order on a Hyperliquid HIP-4 outcome market. Structured mode (apiKey, walletAddress=control address, sessionPrivateKey, outcomeId, one of coin/sideIndex/sideLabel, isBuy, size, and price unless isMarket) is validated against the live market first: side must belong to outcomeId, size is whole contracts, price in [0.00001, 0.99999] with max 5 decimals, size×price >= 11 quote (a full-position sell is exempt when managedAddress is given), market must not be expired/settled. isBuy=false sells side tokens you hold. reduceOnly is ignored by the backend. Returns status resting (with orderId) | filled | rejected. Pre-built mode: computedData alone. |
| hl_cancel_outcome_orderA | Cancel a resting HIP-4 outcome order. Structured mode: apiKey, walletAddress (control), sessionPrivateKey, outcomeId, coin (must belong to outcomeId), orderId (numeric Hyperliquid oid from hl_create_outcome_order or hl_outcome_account openOrders). Partial fills before the cancel stay in the position. Pre-built mode: computedData alone. |
| hl_close_outcome_orderA | Exit a HIP-4 outcome position by SELLING held side tokens (the backend always sells; it cannot short). Structured mode: apiKey, walletAddress (control), sessionPrivateKey, outcomeId, one of coin/sideIndex/sideLabel, price (limit) or isMarket=true, optional size (whole contracts; omit for a full exit — the backend caps size to what you hold). With managedAddress, partial exits must leave both the sold part and the remainder >= 11 quote. Settled markets have no book: GDEX has no claim endpoint, check the HL spot balance instead. Pre-built mode: computedData alone. |
| hl_ref_infoB | Get HyperLiquid referral info (earned, eligibility, code). |
| hl_ref_claimB | Submit a claim request for accrued HL referral rewards. Requires pre-built computedData. |
| trending_listC | List currently promoted / booked trending tokens. |
| trending_optionsA | List available trending-slot packages and prices. |
| trending_registerC | Register / pay for a trending slot. |
| trending_booking_statusC | Check trending-slot booking status (pending payment, active, expired). |
| get_retailersC | List registered retailer integrations / branded onboarding partners. |
| hl_enable_tradingA | Enable HL trading for a managed wallet (one-time, required before outcome/HIP-3 orders). Pass apiKey, walletAddress (control address), sessionPrivateKey and the SDK builds the payload; a pre-built computedData is also accepted. |
| hl_swap_collateralB | Swap collateral between HL clearinghouses/perp DEXes (HIP-3). Pass apiKey, walletAddress, sessionPrivateKey, fromToken, toToken, amount or a pre-built computedData. |
| hl_builder_referralC | Get builder-referral metadata for a wallet. |
| hl_list_user_copy_pnlC | Per-user realised PnL from HL copy-trading. |
| hl_tx_listC | Get HL transaction list (fills / orders) for a wallet. |
| oauth_loginA | Log in or sign up using a Google ID token. Google OIDC only — there is no Apple/GitHub branch. If the wallet has no associated email yet, the backend returns 404 with internal code 108 and the caller must invoke associate_email first (using the same idToken) before retrying. |
| associate_emailA | Link the email claim from a Google ID token to the caller's wallet. Must be called before oauth_login when the wallet has no associated email yet (oauth-login returns 404/code 108). The email is NOT sent by the client — the backend extracts it server-side from the verified Google idToken. computedData must be built with buildAssociateEmailComputedData (managed-custody payload). |
| usdc_get_balancesB | Unified USDC wallet: the user's USDC and native gas balance on every supported chain, plus the cross-chain USDC total. |
| usdc_get_trade_quoteA | Executable quote for a USDC- or native-paid buy, or a sell to USDC. Returns amountOutRaw; apply slippage to get the minimum out for usdc_buy / usdc_sell. |
| usdc_get_funding_statusA | Status of a USDC trade or its auto-funding (bridge legs, confirmation, failure reason). Poll with the requestId a trade returned. If it returns a retry capability for a stuck sell, use usdc_retry_sell. |
| usdc_wait_for_tradeA | Follow a pending USDC trade (requestId from usdc_buy, usdc_buy_with_native or usdc_sell) to its result, like gdex.pro's live progress note: polls every 3s and returns each step as it happened (bridge legs, gas top-up, approve, swap), the outcome and the tx hash. outcome "needs_retry" means a sell broadcast was dropped and can be retried in place with usdc_retry_sell; "pending" after the timeout means still settling: never resubmit. |
| usdc_get_deferred_tradeB | Status and funding steps of a deferred (auto-bridged) USDC trade, by tradeId. |
| usdc_get_pending_tradesA | Pending USDC trades on a chain. Check before resubmitting any trade whose outcome is unknown; never resubmit while one is pending. |
| usdc_get_convert_quoteA | Quote converting the chain's native gas token to USDC, keeping a gas reserve. amount is raw native or "max". |
| usdc_get_bridge_statusB | Status of a USDC bridge by id. refresh=true polls the bridge provider once. |
| usdc_get_bridge_ordersC | The user's USDC bridge history. |
| usdc_buyA | Buy a token paying with USDC. Automatic funding is on by default: GDEX bridges USDC and tops up gas from the user's other chains when this chain is short, capped by the signed maxSourceSpendRaw. A pending result returns a requestId: follow it with usdc_wait_for_trade. |
| usdc_sellB | Sell a token and receive USDC into the unified USDC wallet. Settles on its own chain (no auto-funding, as on gdex.pro). |
| usdc_buy_with_nativeB | Buy a token paying with the chain's native token (ETH, BNB, SOL...). Auto-bridge from other chains is on by default, as on gdex.pro. |
| usdc_retry_sellA | Retry a stuck USDC sell in place, reusing its transaction nonce so it cannot execute twice. Use when usdc_wait_for_trade returns needs_retry (or funding status shows retry.available). Token, amount, chain and nonce are read from the backend's retry capability; re-quote the sell for minUsdcOutRaw. |
| usdc_convert_nativeA | Convert the chain's native gas token to USDC, keeping a per-chain gas reserve. Get amounts from usdc_get_convert_quote. |
| usdc_estimate_bridgeA | Quote moving USDC between chains (Relay). amountRaw is what arrives on the destination. The response fromAmountRaw is the source spend to cap usdc_execute_bridge with. |
| usdc_execute_bridgeA | Move USDC between chains. maxFromAmountRaw is the signed maximum source spend: use the estimate's fromAmountRaw plus a small headroom. Poll usdc_get_bridge_status with the returned id. |
| gdex_connectA | Connect a GDEX trading account without putting any secret in the conversation. Signs in from a control-wallet key file on this machine (keyFile), or creates a new local wallet (create: true), or refreshes an existing accountRef. Returns an accountRef plus public addresses; pass accountRef to any trading tool instead of sessionPrivateKey/privateKey. Never ask the user to paste a private key or seed phrase. |
| gdex_accountsA | List accounts connected on this machine (accountRef, control wallet, managed wallets, session age). No secrets are returned. |
| gdex_disconnectA | Forget a connected account on this machine (deletes its stored keys). Funds are not affected; reconnect later with gdex_connect and the key file. |
| gdex_statusA | Start here. Reports version, connected accounts (no secrets), API reachability, delegated trading policy per account, pending operations, supported trade kinds, and the next setup step. |
| gdex_preview_tradeA | Turn an explicit trade intent into exact executable terms without trading: market, side, human and raw amounts, quote source and time, minimum received or limit price, funding plan, expiry (60s). Returns a previewId for gdex_execute_trade. kind=spot (USDC wallet), perp_open, perp_close. For perps give notionalUsd (position size) or marginUsd (collateral), never guess which. |
| gdex_execute_tradeA | Execute a preview within the user's authority: userApproved=true only after the user approved THIS preview's terms; otherwise the account's delegated policy must allow it (else status denied). Re-quotes first: moved or expired terms return status revised with a new preview instead of trading. Returns an operation; follow it with gdex_operation. Never call again for the same intent after submission_unknown. |
| gdex_operationA | Follow or recover an operation by opId: waits for funding/fill (spot streams funding steps; perps check the live position), resolves submission_unknown by looking for the trade instead of resending, and reports needs_retry when the backend offers an in-place sell retry (usdc_retry_sell). Without opId, lists recent operations. |
| gdex_positionsA | What the account owns and has pending: unified USDC + gas balances per chain, Hyperliquid positions on every DEX, open orders, and unfinished operations. Each section says ok or unavailable; unavailable means unknown, not empty. |
| gdex_manage_positionA | Preview an exit for an existing position, against its live state: close/reduce a perp (reduce-only, correct side for longs and shorts) or sell a spot token back to USDC. Returns a preview; execute it with gdex_execute_trade. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 154 tools
Massive overlap across trading entry points: execute_spot, managed_purchase, buy_token, usdc_buy, usdc_buy_with_native and gdex_execute_trade all initiate buys, and sell paths are similarly duplicated. Balance/status tools also collide (get_balances, get_portfolio, get_wallet_info, get_trading_funds, usdc_get_balances, gdex_positions), and auth has many near-equivalent paths. Descriptions add guidance but the agent must still choose among several plausible tools for one intent.
The surface mixes verb-first actions (get_top_traders, create_copy_trade, pause_copy_trade) with noun/verb phrases (limit_buy, managed_purchase, buy_token, trending_list) and family prefixes (hl_, usdc_, gdex_, get_, update_). Prefix families help, but there is no single predictable convention across the set.
154 tools is far beyond a coherent toolset; many are duplicates, low-level manual variants, or documentation wrappers that should be consolidated. This size makes selection and maintenance impractical.
The domain is covered remarkably broadly: spot, perp, bridging, outcomes, copy trading, balances, auth, docs, watchlist, and social actions. Gaps are mostly minor or intentional (some tools flagged as broken, and certain lifecycle helpers are delegated to lower-level endpoints), but the enormous surface creates dead ends through duplication rather than missing capability.