Skip to main content
Glama
  ██████╗ ██████╗ ███████╗██╗  ██╗   ██████╗ ██████╗  ██████╗
 ██╔════╝ ██╔══██╗██╔════╝╚██╗██╔╝   ██╔══██╗██╔══██╗██╔═══██╗
 ██║  ███╗██║  ██║█████╗   ╚███╔╝    ██████╔╝██████╔╝██║   ██║
 ██║   ██║██║  ██║██╔══╝   ██╔██╗    ██╔═══╝ ██╔══██╗██║   ██║
 ╚██████╔╝██████╔╝███████╗██╔╝ ██╗   ██║     ██║  ██║╚██████╔╝
  ╚═════╝ ╚═════╝ ╚══════╝╚═╝  ╚═╝   ╚═╝     ╚═╝  ╚═╝ ╚═════╝
               · p r o ·    powered by GEMACH

AI Agent Skill for GDEX Pro — the self-custody trading terminal by Gemach
Cross-chain spot · HyperLiquid perps · Copy trading · Portfolio · Token discovery · Managed custody

npm version TypeScript License: MIT skills.sh Tests


Why agents use GDEX

GDEX is the trading surface. This skill is how AI agents (Claude, Cursor, Codex, and 40+ others) install and trade on it — spot, perps, copy-trade, and bridge — without building their own exchange stack.

Fastest path for an agent:

npx skills add GemachDAO/gdex-skill --all --agent '*' -g

Then open gdex.pro for the human terminal, or run the MCP server so the agent can execute trades itself.


Related MCP server: maxia-mcp

Table of Contents


🤖 Install as an Agent Skill

Install directly into Claude Code, Cursor, Codex, Windsurf, and 40+ other agents using the skills CLI:

# Install all skills (recommended)
npx skills add GemachDAO/gdex-skill --all --agent '*' -g

# Pick skills interactively
npx skills add GemachDAO/gdex-skill

# Install a specific skill
npx skills add GemachDAO/gdex-skill --skill gdex-spot-trading

GDEX uses a multi-skill architecture — agents load only the skills they need, keeping context lean and focused.

Available Skills

Skill

Description

gdex-agent-trading

Start here for agents: status → connect → preview → execute within your authority → follow → exit

gdex-onboarding

Platform overview, architecture, supported chains, quickstart

gdex-retailer-onboarding

Retailer partner integrations — branded onboarding partners on the GDEX stack

gdex-authentication

Managed-custody auth, encryption, session keys, API key login

gdex-spot-trading

Buy/sell tokens on any chain with DEX routing

gdex-perp-trading

HyperLiquid perpetual futures — positions, orders, leverage

gdex-perp-funding

Deposit/withdraw USDC to/from HyperLiquid

gdex-limit-orders

Create, cancel, and list limit orders

gdex-portfolio

Cross-chain portfolio, balances, trade history

gdex-token-discovery

Token details, trending tokens, OHLCV charts (no auth)

gdex-token-import

Import custom tokens into details, balances and portfolio

gdex-livestream-discovery

Solana livestream tokens, live status, big-buy alerts

gdex-watchlist-social

Watchlists, token comments, sentiment voting

gdex-trending-promotion

Book paid trending slots and check booking status

gdex-xstocks

Tokenised equities (xStocks) listing

gdex-content-coins

Zora content coins and creator coins on Base

gdex-copy-trading

Copy trade create/delete, leaderboards, tx history, DEX list (Solana only for writes)

gdex-perp-copy-trading

HL perp copy trading — top traders, create/manage configs, market data

gdex-hl-outcomes

Hyperliquid HIP-4 outcome markets — discover, pick a side, limit order, cancel/exit, reconcile (no Polymarket/Kalshi)

gdex-hl-referral

HyperLiquid referral info and reward claims

gdex-bridge

Cross-chain bridging with quotes

gdex-usdc-wallet

Unified USDC wallet — one USDC balance across chains, buy/sell in USDC, auto-bridge funding

gdex-transfers

Native and ERC20/SPL transfers via managed custody

gdex-wallet-setup

Generate EVM wallets, session keys, wallet info (no auth)

gdex-ui-install-setup

React/Next.js project setup, SDK context providers, environment variables

gdex-ui-trading-components

React component patterns for order forms, position tables, copy trade panels

gdex-ui-portfolio-dashboard

Portfolio dashboard components — balances, trade history, chain selectors

gdex-ui-wallet-connection

Wallet connection UI — connect buttons, auth state, chain switching

gdex-ui-theming

CSS theming — dark/light mode, trading colors, responsive breakpoints, Tailwind

gdex-ui-page-layouts

Full page compositions — trading, portfolio, copy trading, bridge pages

gdex-sdk-debugging

Troubleshoot errors — error codes, encryption debugging, chain quirks, HL gotchas

Each skill's description tells the agent when to load it. No API key setup required for trading skills (shared keys are built in).

Risk & Market Data Skills

Deterministic data feeds and events for risk and research. Each ships a standard-library Python script that prints NDJSON: no API key, no install, and every number comes from the script, not a model.

Skill

Output

gdex-hl-market-risk

~234 HyperLiquid core perps: funding, open interest, oracle premium, leverage caps, delisting

gdex-hl-anomaly

Scored, time-stamped HyperLiquid anomaly events (oracle divergence, funding extremity, liquidity shock) against per-market learned baselines, plus a coverage record per run. Backtest

gdex-token-risk

GDEX token screen on 12 chains: price, liquidity, volume, honeypot, taxes, LP lock, holder concentration (missing security data is never "safe")

gvault

GVault (GMACL, Enzyme on Ethereum): NAV, share price, holdings, cumulative and annualised return

python3 skills/gdex-hl-market-risk/scripts/hl_market_risk.py > hl.ndjson

Skills Harness (bring your own key)

harness/ runs these skills with Claude on your own Anthropic API key. export produces every feed with no model; ask answers questions with an agent that can only cite figures that skill scripts printed. Every script run is logged with a sha256 of its output.


🔌 MCP Server

The GDEX MCP server exposes 154 tools — full trading execution + SDK documentation — as Model Context Protocol tools. Any MCP-compatible AI agent can trade autonomously.

Source code: the server is implemented in this repository, in mcp-server/. The entry point is mcp-server/src/index.ts and the tool handlers are in mcp-server/src/tools/. The npm package @gemachdao/gdex-mcp-server is built from that directory by the release workflow. See mcp-server/README.md to run it from source or with the repo's Dockerfile.

Quick Setup

# Auto-generate config for your AI client
npx @gemachdao/gdex-mcp-server init --client claude   # → .mcp.json
npx @gemachdao/gdex-mcp-server init --client cursor   # → .cursor/mcp.json
npx @gemachdao/gdex-mcp-server init --client vscode   # → .vscode/mcp.json
npx @gemachdao/gdex-mcp-server init --client codex    # → .codex/config.toml
npx @gemachdao/gdex-mcp-server init --client opencode  # → opencode.json ("mcp" section)

init merges into an existing config: other MCP servers and settings are kept, the previous file is saved as <file>.bak, and rerunning is a no-op. If a different gdex-mcp-server entry is already there it is shown and left alone unless you pass --force; a config it can't parse is never modified.

Claude Code plugin

/plugin marketplace add GemachDAO/gdex-skill
/plugin install gdex@gemachdao

Installs every GDEX skill plus the MCP server (npx -y @gemachdao/gdex-mcp-server). The optional GDEX API key is kept in your system credential store.

Requirements

Node.js 22 or newer. The Hyperliquid client libraries need Node 22's built-in WebSocket; on Node 20 the perp tools fail.

Agent trading flow

What is verified live versus offline, per chain and venue, is in docs/AGENT-READINESS.md.

Agents should start with gdex_status, connect once with gdex_connect, then gdex_preview_trade → gdex_execute_trade (user-approved, or within the delegated policy in ~/.gdex/policies/<accountRef>.json) → gdex_operation, and manage exits with gdex_positions / gdex_manage_position. Every tool carries read/write annotations. See the gdex-agent-trading skill.

Connect an account (no secrets in chat)

Ask your agent to run gdex_connect with a key file on your machine, e.g. gdex_connect { keyFile: "~/my-gdex-wallet.json" } (JSON with privateKey), or gdex_connect { create: true } for a new wallet. The server signs in, stores the keys under ~/.gdex/accounts (mode 0600) and returns an accountRef. Pass accountRef to any trading tool instead of sessionPrivateKey/privateKey. Never paste a private key or seed phrase into the chat. gdex_accounts lists connected accounts; gdex_disconnect forgets one.

Codex (OpenAI)

codex plugin marketplace add GemachDAO/gdex-skill
codex plugin add gdex@gemachdao

Installs every GDEX skill plus the MCP server. For the MCP server only: codex mcp add gdex -- npx -y @gemachdao/gdex-mcp-server.

Gemini CLI extension

gemini extensions install https://github.com/GemachDAO/gdex-skill

Manual Config

Add to your client's MCP config:

{
  "mcpServers": {
    "gdex-mcp-server": {
      "command": "npx",
      "args": ["@gemachdao/gdex-mcp-server"],
      "env": {
        "GDEX_API_KEY": "your-api-key"
      }
    }
  }
}

Environment Variables

Variable

Description

Required

GDEX_API_KEY

GDEX API key — auto-authenticates on startup

Optional

GDEX_API_URL

Override API base URL (default: https://trade-api.gemach.io/v1)

Optional

MCP Execution Tools (145 tools)

Category

Tools

Description

Agent flow

gdex_status, gdex_preview_trade, gdex_execute_trade, gdex_operation, gdex_positions, gdex_manage_position

Readiness, exact previews, execution within user approval or a delegated policy, operation tracking and recovery, positions and exits

Auth

gdex_connect, gdex_accounts, gdex_disconnect, auth_login, generate_session_keypair, managed_sign_in, build_sign_in_payload

API key login, session keys, managed custody sign-in

Spot Trading

buy_token, sell_token

Buy/sell on Solana, Sui and 10 EVM chains (Ethereum, Base, Arbitrum, BSC and more)

Perp Trading

open_perp_position, place_perp_order, close_perp_position, close_all_positions, cancel_perp_order, cancel_all_perp_orders, set_leverage, perp_deposit, perp_withdraw

Full HyperLiquid perpetual futures — long/short, TP/SL; leverage up to each market's cap (40x on core BTC)

Perp Data

get_account_state, get_perp_positions, get_mark_price, get_all_mid_prices, get_usdc_balance, get_hl_open_orders, get_hl_trade_history, get_hl_spot_state, get_trader_leverage

Real-time HyperLiquid account, positions, prices

Direct Execution

execute_cross_perp, execute_isolated_perp, execute_spot, direct_cancel_order

Private-key execution — cross/isolated margin, spot, cancel

Limit Orders

limit_buy, limit_sell, update_order, get_limit_orders

Limit buy/sell with TP/SL, order management

Copy Trading (Solana)

get_copy_trade_wallets, get_copy_trade_custom_wallets, get_copy_trade_gems, get_copy_trade_dexes, get_copy_trade_list, get_copy_trade_tx_list, create_copy_trade, update_copy_trade

Auto-mirror top Solana traders

Copy Trading (HL Perp)

get_hl_top_traders, get_hl_top_traders_by_pnl, get_hl_user_stats, get_hl_perp_dexes, get_hl_all_assets, get_hl_clearinghouse_state, get_hl_meta_and_asset_ctxs, get_hl_deposit_tokens, get_hl_copy_trade_list, get_hl_copy_trade_tx_list, create_hl_copy_trade, update_hl_copy_trade

Copy HyperLiquid perp traders

Portfolio & Data

get_portfolio, get_balances, get_trade_history, get_token_details, get_trending_tokens, get_ohlcv, get_top_traders, get_wallet_info, generate_evm_wallet

Cross-chain portfolio, market data, OHLCV candles

Bridge

estimate_bridge, execute_bridge, get_bridge_orders

Cross-chain native token bridging

Unified USDC Wallet

usdc_get_balances, usdc_get_trade_quote, usdc_buy, usdc_sell, usdc_buy_with_native, usdc_retry_sell, usdc_get_funding_status, usdc_wait_for_trade, usdc_get_deferred_trade, usdc_get_pending_trades, usdc_get_convert_quote, usdc_convert_native, usdc_estimate_bridge, usdc_execute_bridge, usdc_get_bridge_status, usdc_get_bridge_orders

One USDC balance across 7 chains; buy with USDC or native with automatic cross-chain funding and gas, live funding progress, sell to USDC, convert gas to USDC, bridge USDC

Managed Custody

managed_purchase, managed_sell, managed_trade_status, build_trade_payload

Low-level encrypted trade submission

Transfers

transfer_native, transfer_token

Send native and ERC20/SPL tokens via managed custody

Social & Watchlist

add_comment, get_comments, vote_sentiment, get_watchlist, change_watchlist

Token comments, sentiment votes, watchlists

Token Import

import_token

Add a custom token so it appears in details, balances and portfolio

Market Discovery & Analytics

get_newest_tokens, get_top_tokens, get_token_trades, get_token_image, get_native_prices, get_xstocks, get_zora_tokens, get_wallet_performance, get_nof1_analytics, generate_pnl

New and top tokens, trades, prices, xStocks, Zora coins, wallet performance, NoF1 analytics, PnL generation

Livestream

get_currently_live, get_live_status, get_bigbuys

Solana livestream tokens and big-buy alerts

HL Outcome Markets

hl_outcomes, get_hl_outcome_volumes, hl_outcome_account, hl_outcome_check_collateral, hl_create_outcome_order, hl_cancel_outcome_order, hl_close_outcome_order

Hyperliquid HIP-4 outcome markets

HL Account & Referral

hl_enable_trading, hl_swap_collateral, hl_tx_list, hl_list_user_copy_pnl, hl_ref_info, hl_ref_claim, hl_builder_referral

One-time HL enablement, HIP-3 collateral swaps, fills/orders, copy-trade PnL, referral rewards

Promotion & Partners

trending_list, trending_options, trending_register, trending_booking_status, get_retailers

Paid trending slots and retailer partners

Account

oauth_login, associate_email

Google sign-in and linking an email to a wallet

MCP Documentation Tools (9 tools)

Tool

Description

search_gdex_docs

Search documentation by keyword

get_sdk_pattern

TypeScript code patterns by operation

get_api_info

API endpoint details (URL, method, params)

explain_workflow

Step-by-step trading workflows

get_chain_info

Supported chains and capabilities

get_trading_guide

Spot, perp, or limit trading guides

get_copy_trade_guide

Copy trading guides (Solana / HL)

get_component_guide

React UI component patterns

get_skill_file

Read a file a skill ships with (e.g. scripts/token_risk.py)


📦 SDK Installation

npm install github:GemachDAO/gdex-skill

Installs the SDK straight from GitHub (it builds on install). Imports stay from '@gemachdao/gdex-skill'. Pin a release with npm install github:GemachDAO/gdex-skill#v4.1.1.

The install script displays a quick-start banner in your terminal. Optional peer dependencies for wallet signing (only needed for user-specific wallet auth):

npm install ethers        # EVM wallet auth
npm install bs58 tweetnacl  # Solana wallet auth

🚀 Quick Start

import { GdexSkill, GDEX_API_KEY_PRIMARY } from '@gemachdao/gdex-skill';

// 1. Create skill instance
const skill = new GdexSkill();

// 2. Authenticate with the pre-configured shared key (enough for read-only calls)
skill.loginWithApiKey(GDEX_API_KEY_PRIMARY);

// 3. Trades need the managed-custody session from sign-in (see Managed-Custody Flow below):
//    the control wallet signs once, the session key signs each trade.
const creds = { apiKey: GDEX_API_KEY_PRIMARY, walletAddress: controlAddress, sessionPrivateKey };

// 4. Spot buy on Base (0.01 ETH)
const trade = await skill.buyToken({
  chain: 8453,
  tokenAddress: '0xTokenAddress',
  amount: '0.01',
  slippage: 1,     // 1% max slippage
  ...creds,
});
console.log('Trade submitted:', trade.jobId, '— status:', trade.status);

// 5. Open a BTC 10× long on HyperLiquid (size is in BTC, not USD)
const mark = await skill.getHlMarkPrice('BTC');
const pos = await skill.hlCreateOrder({
  coin: 'BTC',
  isLong: true,
  price: String(mark),
  size: '0.001',
  isMarket: true,
  leverage: 10,
  tpPrice: '110000',
  slPrice: '95000',
  ...creds,
});

// 6. Read-only endpoints need no auth
const trending = await skill.getTrendingTokens({ chain: 'solana', period: '24h', limit: 5 });
console.log('Trending:', trending.map(t => t.symbol).join(', '));

✅ Verify (offline)

Confirm the SDK is installed and configured correctly — no network connection or API key required:

npm run verify

Sample output:

1. SDK import
  ✓  SDK imported from ../dist/index.js

2. API keys
  ✓  GDEX_API_KEY_PRIMARY   = 9b4e1c73...
  ✓  GDEX_API_KEY_SECONDARY = 2c8f0a91...
  ✓  GDEX_API_KEYS array    = 2 keys

3. GdexSkill instantiation
  ✓  new GdexSkill() — default config
  ✓  new GdexSkill({ apiUrl, timeout, maxRetries }) — custom config

4. Authentication state (offline)
  ✓  isAuthenticated() = false before login
  ✓  loginWithApiKey(GDEX_API_KEY_PRIMARY) → isAuthenticated() = true
  ✓  logout() → isAuthenticated() = false

...

  All 20 checks passed ✓
  SDK is ready — no network token required.

🔑 Authentication

Two shared keys are pre-configured in the package — agents do not need to sign wallet transactions:

import {
  GdexSkill,
  GDEX_API_KEY_PRIMARY,
  GDEX_API_KEY_SECONDARY,
  GDEX_API_KEYS,
} from '@gemachdao/gdex-skill';

const skill = new GdexSkill();
skill.loginWithApiKey(GDEX_API_KEY_PRIMARY);  // use primary
// or:
skill.loginWithApiKey(GDEX_API_KEY_SECONDARY); // use secondary
// or cycle through them:
skill.loginWithApiKey(GDEX_API_KEYS[0]);

skill.isAuthenticated(); // → true
skill.logout();          // clear session

Note: Read-only endpoints (getTrendingTokens, getTokenDetails, getOHLCV, getTopTraders) do not require authentication.

Wallet-based Auth (advanced)

For user-owned wallets or custom signers (hardware wallets, browser extensions):

// EVM wallet (secp256k1)
await skill.authenticate({
  type: 'evm',
  address: '0xYourAddress',
  privateKey: '0xPrivateKey',
});

// Solana wallet (ed25519)
await skill.authenticate({
  type: 'solana',
  address: 'YourSolanaAddress',
  privateKey: 'base58EncodedPrivateKey',
});

// Custom signer (MetaMask / Phantom)
await skill.authenticate({
  type: 'evm',
  address: accounts[0],
  signer: async (message) =>
    window.ethereum.request({ method: 'personal_sign', params: [message, accounts[0]] }),
});

Configuration

const skill = new GdexSkill({
  apiUrl:     'https://trade-api.gemach.io/v1', // Backend (default)
  timeout:    30000,                          // Request timeout ms
  maxRetries: 3,                              // Retry attempts on 429/503
  debug:      false,                          // Log every request
});

The SDK does not read environment variables directly. If you choose to use env vars, read them in your application (for example via process.env) and pass their values into the GdexSkill constructor as shown above.

Recommended environment variables for your own app:

Env Variable

Description

Default

GDEX_API_URL

Backend base URL to pass as apiUrl

https://trade-api.gemach.io/v1

GDEX_API_KEY

API key for AES encryption in managed-custody flow

—

GDEX_TIMEOUT

Request timeout (ms) to pass as timeout

30000

GDEX_MAX_RETRIES

Retry attempts to pass as maxRetries

3

GDEX_DEBUG

Enable debug logging to pass as debug

false

GDEX_CONTROL_WALLET

Control wallet address (userId) for managed custody

—

GDEX_SESSION_PRIVATE

Session private key (hex, 0x-prefixed) for managed custody

—

GDEX_MANAGED_CHAIN_ID

Chain ID for managed trades (622112261=Solana, 42161=Arbitrum for perps)

622112261

CONFIRM_LIVE_TRADE

Set to YES to submit real trades

—


🔒 Managed-Custody Trading

All trading on GDEX goes through server-side managed wallets. Your control wallet (EVM or Solana) is only used to authenticate (sign-in) — actual on-chain execution is handled by GDEX backend trade workers.

How It Works

  1. Generate a session keypair — secp256k1 key used to sign trades after auth

  2. Sign-in — control wallet signs a message, encrypted as computedData → POST /v1/sign_in

  3. Resolve user — GET /v1/user with encrypted session key to see managed wallets

  4. Trade — ABI-encode trade data, sign with session key, encrypt as computedData → POST /v1/purchase_v2 or /v1/sell_v2

  5. Poll status — GET /v1/trade-status/:requestId until completed/failed

Encryption

All authenticated payloads use AES-256-CBC with a deterministic key/IV derived from the API key (no random IV):

  • Key = first 32 bytes of SHA256(apiKey) hex

  • IV = first 16 bytes of SHA256(SHA256(apiKey)) hex

  • Trade/sign-in payloads: JSON.stringify({ userId, data, signature, apiKey }) → UTF-8 → encrypt → hex

  • Session key (/v1/user): hex-decoded raw bytes → encrypt (not UTF-8 string)

  • The API key is included inside the encrypted JSON payload (not just used for encryption)

WARNING: Do NOT use random IVs or the iv:ciphertext format. The backend uses deterministic AES derived from the API key hash chain.

Signatures

Spot trade signatures (purchase/sell) use raw keccak256 + secp256k1 (no EIP-191 prefix):

  • Message: "<action>-<lowercaseUserId>-<dataHexWithout0x>"

  • Digest: keccak256(utf8Bytes(message))

  • Output: r(64 hex) + s(64 hex) + v(2 hex) = 130 chars, no 0x prefix

  • v = raw recovery parameter (00 or 01), NOT EIP-155 (1b/1c)

HL perp signatures use the same algorithm but with HL-specific action prefixes (hl_deposit, hl_withdraw, hl_create_order, etc.) and different ABI schemas. See the HL Managed-Custody Reference section.

Sign-in signatures use EIP-191 personal_sign with the control wallet — this is the ONLY operation that uses EIP-191. All post-sign-in operations use raw keccak256.

Nonce Generation

Nonces are client-generated (not fetched from the server):

const nonce = String(Math.floor(Date.now() / 1000) + Math.floor(Math.random() * 1000));

Quick Example

import {
  GdexSkill,
  GDEX_API_KEY_PRIMARY,
  generateGdexSessionKeyPair,
  buildGdexSignInMessage,
  buildGdexSignInComputedData,
  buildGdexManagedTradeComputedData,
  buildGdexUserSessionData,
} from '@gemachdao/gdex-skill';

const skill = new GdexSkill();
skill.loginWithApiKey(GDEX_API_KEY_PRIMARY);
const apiKey = GDEX_API_KEY_PRIMARY;

// 1. Session keypair
const { sessionPrivateKey, sessionKey } = generateGdexSessionKeyPair();

// 2. Sign-in (control wallet signs this message)
const userId = '0xYourControlWallet';
const nonce = String(Math.floor(Date.now() / 1000) + Math.floor(Math.random() * 1000));
const message = buildGdexSignInMessage(userId, nonce, sessionKey);
const signature = /* wallet.signMessage(message) */;

const signInPayload = buildGdexSignInComputedData({ apiKey, userId, sessionKey, nonce, signature });
await skill.signInWithComputedData({ computedData: signInPayload.computedData, chainId: 622112261 }); // Solana; 1 for EVM/HL

// 3. Trade
const trade = buildGdexManagedTradeComputedData({
  apiKey, action: 'purchase', userId,
  tokenAddress: 'DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263',
  amount: '100000',
  nonce: String(Math.floor(Date.now() / 1000) + Math.floor(Math.random() * 1000)),
  sessionPrivateKey,
});
const result = await skill.submitManagedPurchase({
  computedData: trade.computedData, chainId: 622112261, slippage: 1, // Solana (NOT 900)
});

// 4. Poll
if (result.requestId) {
  const status = await skill.getManagedTradeStatus(result.requestId);
  console.log(status.status, status.hash);
}

Managed-Custody Helpers

Function

Purpose

generateGdexSessionKeyPair()

Generate secp256k1 session keypair

buildGdexSignInMessage(userId, nonce, sessionKey)

Build the sign-in message for wallet signing

encodeGdexSignInData(sessionKey, nonce, refCode?)

ABI-encode sign-in data (['bytes','string','string'])

buildGdexSignInComputedData({...})

Build encrypted sign-in payload

buildGdexUserSessionData(sessionKey, apiKey)

Encrypt session key (raw hex bytes) for /v1/user

encodeGdexTradeData(tokenAddr, amount, nonce?)

ABI-encode trade data (['string','uint256','string'])

signGdexTradeMessageWithSessionKey(action, userId, data, privKey)

Sign trade with session key (v = raw recoveryParam 00/01)

buildGdexManagedTradeComputedData({...})

Build encrypted trade payload

encodeLimitOrderData(action, params)

ABI-encode limit order data (buy/sell/update schemas)

signLimitOrderMessage(action, userId, data, privKey)

Sign limit order with session key

buildLimitOrderComputedData({...})

Build encrypted limit order payload

createCopyTrade(...) / updateCopyTrade(...)

Copy trade payloads are ABI-encoded (create: 12 fields, update: 16 fields, chainId is uint256), signed and encrypted inside these GdexSkill methods; the encoders are not exported

buildEncryptedGdexPayload({...})

Encrypt JSON {userId, data, signature} for computedData

encryptGdexComputedData(plaintext, apiKey)

AES-256-CBC encrypt UTF-8 plaintext

encryptGdexHexData(hexData, apiKey)

AES-256-CBC encrypt raw hex-decoded bytes

decryptGdexComputedData(cipherHex, apiKey)

AES-256-CBC decrypt to UTF-8 plaintext

deriveGdexAesMaterial(apiKey)

Get raw AES key/IV from API key

Verify Managed Flow (offline)

npm run verify:managed

This generates all payloads (session keypair, sign-in, user lookup, trade), validates encrypt/decrypt roundtrips, and prints the full execution plan — without making any live API calls.


📚 API Reference

Spot Trading

buyToken(params)

Buy a token on any supported chain.

Parameter

Type

Required

Description

chain

string | ChainId

✅

Chain name or numeric ID

tokenAddress

string

✅

Token contract address

amount

string

✅

Native token input amount

slippage

number

Max slippage % (default: 1)

dex

string

Force specific DEX

walletAddress

string

Override wallet address

priorityFee

number

Solana priority fee (lamports)

const result = await skill.buyToken({
  chain: 'solana',
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  amount: '0.1',
  slippage: 1,
});
// result.jobId, result.status, result.txHash, result.outputAmount

sellToken(params)

// Sell absolute amount
await skill.sellToken({ chain: 8453, tokenAddress: '0x...', amount: '100', slippage: 0.5 });

// Sell 50% of holdings
await skill.sellToken({ chain: 'solana', tokenAddress: '...', amount: '50%' });

Perpetual Futures (HyperLiquid)

Critical: HyperLiquid deposits/withdrawals/orders use a different crypto flow than spot trades. See the HL Managed-Custody Reference section below for exact specifications.

Every perp write takes the managed-custody credentials { apiKey, walletAddress, sessionPrivateKey }, where walletAddress is the control wallet that signed in (MCP: pass accountRef from gdex_connect).

hlCreateOrder(params) — open (or add to) a position

Parameter

Type

Default

Description

coin

string

Asset symbol (e.g., 'BTC', 'ETH', builder markets as 'xyz:NVDA')

isLong

boolean

true long, false short

price

string

Limit price; for market orders the mark price ('0' resolves to mark)

size

string

Size in contracts (coin units), not USD. Min order value $11

isMarket

boolean

true

Market or limit

leverage

number

HL default (20×)

1–50×, sent as a top-level field with the order

tpPrice / slPrice

string

''

Optional TP / SL price ('' to skip)

reduceOnly

boolean

false

Only reduce an existing position

const pos = await skill.hlCreateOrder({
  coin: 'BTC', isLong: true, price: String(await skill.getHlMarkPrice('BTC')), size: '0.001',
  isMarket: true, leverage: 10, tpPrice: '110000', slPrice: '95000',
  apiKey, walletAddress, sessionPrivateKey,
});

closePerpPosition(params)

Reads the live position and closes it with a reduce-only market order on the opposite side.

const creds = { apiKey, walletAddress, sessionPrivateKey };
await skill.closePerpPosition({ coin: 'BTC', positionAddress: managedEvmAddress, ...creds });                // close 100%
await skill.closePerpPosition({ coin: 'ETH', size: '0.05', positionAddress: managedEvmAddress, ...creds }); // partial close

Other perp methods

// Deposit USDC to HyperLiquid from Arbitrum (human-readable amount, converted internally; min 10 USDC)
await skill.perpDeposit({
  tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC on Arbitrum
  amount: '10',
  chainId: 42161,
  apiKey, walletAddress, sessionPrivateKey,
});
await skill.perpWithdraw({ amount: '5', apiKey, walletAddress, sessionPrivateKey });

// Positions live on the managed EVM wallet
const positions = await skill.getPerpPositions({ walletAddress: managedEvmAddress });
// Each: { coin, side, size, entryPrice, markPrice, leverage, unrealizedPnl, liquidationPrice }

HL Deposit notes: Amount is in human-readable USDC (e.g., '10' for 10 USDC). The SDK automatically converts to smallest unit (6 decimals). Minimum deposit is 10 USDC. Your managed wallet must have the deposit amount + 1% fee buffer in USDC on Arbitrum. After the on-chain tx confirms, HyperLiquid takes ~10 minutes to credit the deposit.

Direct HyperLiquid Execution (via @gdexsdk/hyper-liquid-trader)

For direct trading on HyperLiquid L1 without managed custody — use your own private key:

// Cross-margin perpetual trade
const result = await skill.hlExecuteCrossPerp(
  process.env.PRIVATE_KEY!,
  { coin: 'BTC', isLong: true, price: '100000', positionSize: '0.001', leverage: 10 },
);

// Isolated-margin perpetual trade
const result2 = await skill.hlExecuteIsolatedPerp(
  process.env.PRIVATE_KEY!,
  { coin: 'ETH', isLong: false, price: '3000', positionSize: '1', leverage: 5 },
);

// Spot trade on HyperLiquid
const result3 = await skill.hlExecuteSpot(
  process.env.PRIVATE_KEY!,
  { coin: 'PURR', isBuy: true, price: '0.50', size: '100' },
);

// Cancel an order directly
await skill.hlDirectCancelOrder(process.env.PRIVATE_KEY!, 'BTC', orderId);

// Get all mid prices
const mids = await skill.getHlAllMids();

// Get trade history
const trades = await skill.getHlTradeHistory('0xYourWallet');

// Get a trader's leverage context (for copy trading)
const leverage = await skill.getHlTraderLeverageContext('0xTraderWallet', 'BTC');

// Create a standalone HyperLiquidTrading instance with custom WS URLs
const trader = await skill.createHlTrader(['wss://custom-ws.example.com']);

Limit Orders

Endpoints: limit_buy / limit_sell / update_order / orders — NOT orders/create or orders/cancel.

// Limit buy — buy WIF when price drops to $0.50 on Solana
const buyResult = await skill.limitBuy({
  apiKey: GDEX_API_KEY_PRIMARY,
  userId: '0x53D029a671bd1CF61a2fB1F4F6e4bD830BFBb2eD',  // control wallet
  sessionPrivateKey: '<session-key-hex>',
  chainId: 622112261,           // Solana
  tokenAddress: 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm',
  amount: '10000000',           // lamports
  triggerPrice: '0.50',
  profitPercent: '50',          // optional: TP at 50% gain
  lossPercent: '25',            // optional: SL at 25% loss
});

// Limit sell — sell WIF when price reaches $999.99 (take-profit)
const sellResult = await skill.limitSell({
  apiKey: GDEX_API_KEY_PRIMARY,
  userId: '0x53D029a671bd1CF61a2fB1F4F6e4bD830BFBb2eD',
  sessionPrivateKey: '<session-key-hex>',
  chainId: 622112261,
  tokenAddress: 'EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm',
  amount: '100000',
  triggerPrice: '999.99',
});

// Delete/cancel an order
await skill.updateOrder({
  apiKey: GDEX_API_KEY_PRIMARY,
  userId: '0x53D029a671bd1CF61a2fB1F4F6e4bD830BFBb2eD',
  sessionPrivateKey: '<session-key-hex>',
  chainId: 622112261,
  orderId: '<64-char-hex-order-id>',
  isDelete: true,
});

// List active orders (uses session-key auth, not full computedData)
const { count, orders } = await skill.getLimitOrders({
  userId: '0x53D029a671bd1CF61a2fB1F4F6e4bD830BFBb2eD',
  data: encryptedSessionKey,  // from buildGdexUserSessionData()
  chainId: 622112261,
});

Copy Trading

Solana-only for write operations. Sign-in must use chainId: 622112261. The ABI encodes chainId as uint256.

Discovery (no auth)

// Top 300 wallets by total PnL (cached 2 min)
const topWallets = await skill.getCopyTradeWallets();
// [{ address, totalPnl, receivedMinusSpent, spent, unrealizedValue, chainId }]

// Top 300 by net received
const customWallets = await skill.getCopyTradeCustomWallets();

// Hot new tokens from top wallets (cached 20s)
const gems = await skill.getCopyTradeGems();

// Supported DEXes for Solana
const dexes = await skill.getCopyTradeDexes(622112261);
// [{ dexName: 'pumpfun', dexNumber: 0, programId: '...' }, ...]

Read (session-key auth)

import { buildGdexUserSessionData } from '@gemachdao/gdex-skill';

const data = buildGdexUserSessionData(sessionKey, apiKey);

// List copy trade configs (cached 20s per user)
const { allCopyTrades, dexes } = await skill.getCopyTradeList({ userId, data });
// allCopyTrades: [{ copyTradeId, copyTradeName, traderWallet, isActive, lossPercent, profitPercent, ... }]

// Transaction history with PnL
const { txes } = await skill.getCopyTradeTxList({ userId, data });

Create (computedData auth)

import {
  GDEX_API_KEY_PRIMARY,
  buildCopyTradeComputedData,
  generateGdexSessionKeyPair,
  buildGdexSignInMessage,
  buildGdexSignInComputedData,
} from '@gemachdao/gdex-skill';

// Sign-in MUST use chainId: 622112261 for copy trade operations
const result = await skill.createCopyTrade({
  apiKey: GDEX_API_KEY_PRIMARY,
  userId: controlWalletAddress,
  sessionPrivateKey,
  chainId: 622112261,                // Solana only
  traderWallet: 'SolanaTraderAddress',
  copyTradeName: 'Alpha Trader',
  buyMode: 1,                        // 1 = fixed SOL, 2 = percentage
  copyBuyAmount: '0.001',            // SOL amount (mode 1) or percentage (mode 2)
  lossPercent: '50',                 // stop-loss at 50%
  profitPercent: '100',              // take-profit at 100%
  copySell: true,                    // also copy sell trades
  isBuyExistingToken: false,         // skip tokens already held
  excludedDexNumbers: [],            // no DEX exclusions
});
// { isSuccess: true, message: 'created new copy trade successfully', allCopyTrades: [...] }

Update / Pause / Resume / Delete (computedData auth)

const ids = { apiKey: GDEX_API_KEY_PRIMARY, userId: controlWalletAddress, sessionPrivateKey, copyTradeId: '<64-char-hex-id>' };

await skill.updateCopyTradeSettings({ ...ids, lossPercent: '40' }); // never deletes or pauses
await skill.pauseCopyTrade(ids);   // isActive=false; no-op if already paused
await skill.resumeCopyTrade(ids);  // isActive=true; no-op if already active
await skill.deleteCopyTrade(ids);  // permanent

Each reads the current config from /copy_trade/list first, because the backend rewrites every field on update and isChangeStatus is a relative toggle (isActive = !existing.isActive). Deleting removes the configuration only: positions it opened are not sold and their TP/SL limit orders are not cancelled. While paused the copier mirrors neither buys nor sells.

Copy Trade ABI Reference

Typed exactly as the backend decodes them (src/shared/parser/evm/decoder.ts):

Action

Fields

ABI Types

create_copy_trade

12

string, string, uint64, string, uint64, string, bool, string, string, string, bool, uint64[]

update_copy_trade

15

string, string, uint64, string, uint64, string, bool, string, string, string, bool, bool, string, bool, uint64[]

Create field order: [traderWallet, copyTradeName, chainId, gasPrice, buyMode, copyBuyAmount, isBuyExistingToken, lossPercent, profitPercent, nonce, copySell, excludedDexNumbers]

Update field order: [traderWallet, copyTradeName, chainId, gasPrice, buyMode, copyBuyAmount, isBuyExistingToken, lossPercent, profitPercent, nonce, isDelete, isChangeStatus, copyTradeId, copySell, excludedDexNumbers]

SDK versions up to 4.12 encoded every field as a string; the backend then decoded isDelete=true, so every update deleted. Nonce is auto-generated by the SDK.


HL Perp Copy Trading

Completely separate from Solana copy trading above. This copies perpetual futures positions (long/short) on HyperLiquid. Sign-in uses chainId: 1. All ABI fields are strings.

Discovery (no auth)

// Top traders by volume/tradeCount/deposit (cached 15 min)
const topByVolume = await skill.getHlTopTraders('volume');
const topByPnl = await skill.getHlTopTradersByPnl();

// Detailed trader stats (cached 1 hr)
// NOTE: Requires MANAGED wallet address, not control wallet
const stats = await skill.getHlUserStats('0xManagedWalletAddress');
// { userStats: { '24h', '7d', '30d', dailyPnls, volumes, tradesCount, allTime } }

// Market data
const dexes = await skill.getHlPerpDexes();
const assets = await skill.getHlAllAssets();
const tokens = await skill.getHlDepositTokens();

// Account state
const state = await skill.getHlClearinghouseState('0xAddress');
const orders = await skill.getHlOpenOrdersForCopy('0xAddress');
const balance = await skill.getHlUsdcBalanceForCopy('0xAddress');

Read (session-key auth)

import { buildGdexUserSessionData } from '@gemachdao/gdex-skill';

const data = buildGdexUserSessionData(sessionKey, apiKey);

// List HL copy trade configs
const { allCopyTrades } = await skill.getHlCopyTradeList({ userId, data });
// [{ copyTradeId, copyTradeName, copyMode, traderWallet, isActive, oppositeCopy, totalPnl, ... }]

// Fill history (cached 15s, max 100 per page)
const { txes, totalCount } = await skill.getHlCopyTradeTxList({ userId, data, page: '1', limit: '20' });
// [{ coin, px, sz, side, dir, closedPnl, copyTradeName, traderWallet, ... }]

Create (computedData auth)

await skill.createHlCopyTrade({
  apiKey,
  userId: controlWalletAddress,
  sessionPrivateKey,
  traderWallet: '0xTraderEvmAddress',
  copyTradeName: 'BTC Whale',
  copyMode: 1,                    // 1 = fixed USD, 2 = proportion
  fixedAmountCostPerOrder: '50000000', // copyMode 1: raw USDC, 6 decimals ($50 per copied trade)
  lossPercent: '25',              // mandatory, > 0 and < 100
  profitPercent: '100',           // mandatory, > 0
  oppositeCopy: false,            // true = copy opposite direction
});

Update / Pause / Resume / Delete (computedData auth)

const ids = { apiKey, userId: controlWalletAddress, sessionPrivateKey, copyTradeId: 'abc123...' };

await skill.updateHlCopyTradeSettings({ ...ids, copyMode: 2, fixedAmountCostPerOrder: '0.5', oppositeCopy: false });
await skill.pauseHlCopyTrade(ids);   // isActive=false; copied positions stay open and stop following the trader's exits
await skill.resumeHlCopyTrade(ids);
await skill.deleteHlCopyTrade(ids);  // permanent; does NOT close positions or cancel their TP/SL

HL Perp Copy Trade ABI Reference

Action

Fields

ABI Types

hl_create

8

string, string, uint64, string, string, string, string, bool

hl_update

11

string, string, uint64, string, string, string, string, bool, bool, string, bool

Create field order: [traderWallet, copyTradeName, copyMode, fixedAmountCostPerOrder, lossPercent, profitPercent, nonce, oppositeCopy]

Update field order: [traderWallet, copyTradeName, copyMode, fixedAmountCostPerOrder, lossPercent, profitPercent, nonce, isDelete, isChangeStatus, copyTradeId, oppositeCopy]

Configs written by SDK <= 4.12 (string-encoded ABI) hold copyMode 416/480 and oppositeCopy: true; repair them with updateHlCopyTradeSettings and explicit values. isChangeStatus toggles isActive; only isDelete deletes.


Portfolio

// Portfolio on one chain (managed-account read: also pass the session, see gdex-portfolio)
const portfolio = await skill.getPortfolio({ walletAddress: '0x...', chain: ChainId.BASE });
// { totalValueUsd, balances, perpPositions?, realizedPnl, unrealizedPnl }

// Chain-specific balances
const balances = await skill.getBalances({ walletAddress: '0x...', chain: ChainId.ETHEREUM });

// Paginated trade history
const history = await skill.getTradeHistory({
  walletAddress: '0x...', chain: ChainId.BASE, page: 1, limit: 20,
  startTime: 1700000000, endTime: 1700086400,
});

Token Information

🔓 No authentication required for these endpoints.

// Token details
const token = await skill.getTokenDetails({
  tokenAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
  chain: 'solana',
});
// { symbol, name, priceUsd, priceChange24h, marketCap, fdv, volume24h, liquidity }

// Trending tokens
const trending = await skill.getTrendingTokens({
  chain: 'solana',
  period: '24h',     // '1h' | '6h' | '24h' | '7d'
  limit: 20,
  minLiquidity: 50000,
});

// OHLCV candles
const ohlcv = await skill.getOHLCV({
  tokenAddress: 'So11111111111111111111111111111111111111112',
  chain: 'solana',
  resolution: '60',  // '1'|'5'|'15'|'30'|'60'|'240'|'D'|'W'
  from: Math.floor(Date.now() / 1000) - 86400,
  to: Math.floor(Date.now() / 1000),
});

Top Traders

🔓 No authentication required.

const traders = await skill.getTopTraders({
  chain: 'solana',
  period: '7d',    // '1d' | '7d' | '30d' | 'all'
  limit: 10,
  sortBy: 'pnl',   // 'pnl' | 'winRate' | 'volume' | 'tradeCount'
});
// [{ address, totalPnlUsd, winRate, tradeCount, totalVolumeUsd }]

Bridge

Native-token bridging (amounts in raw units: wei / lamports). For USDC see the Unified USDC Wallet.

// Get quote first (no auth)
const quote = await skill.estimateBridge({
  fromChainId: ChainId.ETHEREUM,
  toChainId: ChainId.BASE,
  amount: '100000000000000000', // 0.1 ETH in wei
});
console.log('Output:', quote.estimateAmount, '— ETA (s):', quote.minEstimateTime, '-', quote.maxEstimateTime);

// Execute bridge (managed custody; sign in with chainId 1)
const result = await skill.requestBridge({
  fromChainId: ChainId.ETHEREUM,
  toChainId: ChainId.BASE,
  amount: '100000000000000000',
  userId: controlAddress,
  sessionPrivateKey,
  apiKey,
});
console.log(result.isSuccess, result.hash);

Wallet Info

// Managed-account read: control walletAddress plus the session (sessionPrivateKey + apiKey, or data)
const info = await skill.getWalletInfo({ walletAddress: controlWalletAddress, sessionPrivateKey, apiKey, chain: 'solana' });
// { address, nativeBalance, nativeSymbol, totalValueUsd, tokenCount }

Wallet Generation

🔓 No authentication required. Keys are generated locally and never transmitted.

When a user doesn't have a wallet yet, generate an EVM control wallet for them. Then use the managed-custody sign-in flow to authenticate, and the Gbot backend automatically provisions a full trading wallet — including a Solana address and other chain-specific keys — server-side. No separate Solana wallet generation is needed.

generateEvmWallet() — your control wallet

Generates a new EVM-compatible wallet (Ethereum, Base, Arbitrum, BSC, etc.) using ethers.Wallet.createRandom().

import {
  GdexSkill,
  generateEvmWallet,
  generateGdexSessionKeyPair,
  buildGdexSignInMessage,
  GDEX_API_KEY_PRIMARY,
} from '@gemachdao/gdex-skill';

// Step 1: generate your EVM control wallet (one-time setup)
const wallet = generateEvmWallet();
console.log(wallet.address);  // '0xAbCd...' (checksummed) — safe to share
// ⚠️  Store wallet.privateKey and wallet.mnemonic securely

// Step 2: generate a session keypair for managed-custody trading
const { sessionPrivateKey, sessionKey } = generateGdexSessionKeyPair();

// Step 3: build the sign-in message and sign with your control wallet
const message = buildGdexSignInMessage(wallet.address, String(Date.now()), sessionKey);
// Sign with: new ethers.Wallet(wallet.privateKey).signMessage(message)

// Step 4: submit sign_in computedData (see Managed-Custody Trading section above)
// The backend provisions Solana + all other trading wallets server-side

🌐 Supported Chains

Chain

ChainId

Native Token

DEXes

Ethereum

1

ETH

Uniswap V2/V3, Odos

Optimism

10

ETH

Uniswap V3, Odos

BNB Smart Chain

56

BNB

PancakeSwap, Odos

Sonic

146

S

—

Fraxtal

252

frxETH

Uniswap V3

Nibiru

6900

NIBI

—

Base

8453

ETH

Uniswap V3, Odos, Arcadia

Arbitrum One

42161

ETH

Uniswap V3, Odos

Berachain

80094

BERA

—

Solana

622112261

SOL

Raydium, Raydium V2, Orca

Sui

1313131213

SUI

Cetus, Bluefin

HyperLiquid

perps only

USDC

Native perp engine

The ChainId enum is wider than this table. It also defines Avalanche (43114), Polygon (137), zkSync Era (324), Linea (59144), Blast (81457) and Scroll (534352). The backend's supportedChainIds does not include them, so calls against those ids will not route. Trade only the chains listed above.

import { ChainId } from '@gemachdao/gdex-skill';

ChainId.ETHEREUM   // 1
ChainId.OPTIMISM   // 10
ChainId.BSC        // 56
ChainId.SONIC      // 146
ChainId.FRAXTAL    // 252
ChainId.NIBIRU     // 6900
ChainId.BASE       // 8453
ChainId.ARBITRUM   // 42161
ChainId.BERACHAIN  // 80094
ChainId.SOLANA     // 622112261
ChainId.SUI        // 1313131213

⚠️ Error Handling

import {
  GdexAuthError,       // 401/403 — re-authenticate
  GdexValidationError, // invalid input params
  GdexApiError,        // 4xx/5xx backend errors
  GdexNetworkError,    // connection failures, timeouts
  GdexRateLimitError,  // 429 — check err.retryAfter
} from '@gemachdao/gdex-skill';

try {
  await skill.buyToken({ ... });
} catch (err) {
  if (err instanceof GdexRateLimitError) {
    console.log(`Rate limited — retry after ${err.retryAfter}s`);
    await new Promise(r => setTimeout(r, err.retryAfter * 1000));
    // retry…
  } else if (err instanceof GdexAuthError) {
    skill.loginWithApiKey(GDEX_API_KEY_PRIMARY); // re-auth
  } else if (err instanceof GdexValidationError) {
    console.error(`Bad param "${err.field}": ${err.message}`);
  } else if (err instanceof GdexApiError) {
    console.error(`API ${err.statusCode}: ${err.message}`);
  } else if (err instanceof GdexNetworkError) {
    console.error(`Network (${err.code}): ${err.message}`);
  }
}

Class

When thrown

GdexAuthError

401/403, invalid credentials

GdexValidationError

Invalid address, amount, chain, slippage

GdexApiError

Non-success HTTP (4xx/5xx)

GdexNetworkError

Connection refused, ECONNABORTED, timeout

GdexRateLimitError

HTTP 429 (has .retryAfter in seconds)


🛠 Utility Functions

import {
  getChainName,         // getChainName(8453)        → "Base"
  getNativeToken,       // getNativeToken('solana')   → "SOL"
  formatTokenAmount,    // formatTokenAmount('1000000', 6, 'USDC') → "1 USDC"
  formatUsd,            // formatUsd('1234.5')         → "$1,234.50"
  formatPercentChange,  // formatPercentChange('5.23') → "+5.23%"
  shortenAddress,       // shortenAddress('0x1234...') → "0x1234...5678"
  validateAddress,      // throws GdexValidationError if invalid
  validateAmount,       // throws GdexValidationError if invalid
  validateChain,        // throws GdexValidationError if unsupported
} from '@gemachdao/gdex-skill';

🧪 Testing

All 103 tests run with mocked HTTP — no real API key or network connection required:

npm test              # run all 103 tests
npm run test:coverage # with coverage report
npm run verify        # offline SDK smoke-test (20 checks)
npm run verify:managed # managed-custody payload validation (dry-run)

Test suites:

  • tests/client/auth.test.ts — API key auth, EVM/Solana wallet signing

  • tests/actions/spotTrade.test.ts — buy/sell, slippage, validation

  • tests/actions/perpTrade.test.ts — open/close positions, leverage, deposits

  • tests/actions/portfolio.test.ts — balances, history, wallet info

  • tests/actions/tokenInfo.test.ts — trending, OHLCV, token details, top traders

  • tests/utils/walletGeneration.test.ts — EVM control wallet generation (offline)

  • tests/utils/gdexManagedCrypto.test.ts — managed-custody crypto helpers (AES, signing, ABI encoding)


🏗 Architecture

AI Agent (Claude Code / Cursor / Codex / ...)
   │
   │  npx skills add GemachDAO/gdex-skill
   │  ──────────────────────────────────
   │  SKILL.md → agent skill directory
   │
   ▼
@gemachdao/gdex-skill  (this package)
   │  TypeScript methods with full type safety
   │  @gdexsdk/hyper-liquid-trader for HyperLiquid L1 queries & direct execution
   │  Managed-custody: AES-256-CBC encryption + secp256k1 session signing
   │  computedData payloads for all trade operations
   │  Auto-retry with exponential backoff
   │
   │  Control Wallet (EVM / Solana)
   │  └─ signs once for /v1/sign_in → session keypair
   │
   ▼
Gbot Backend API  (https://trade-api.gemach.io/v1)
   │  Decrypt computedData → verify signature → resolve nonce (gRPC)
   │  NATS JetStream trade queue
   │  Server-side managed wallets (custody)
   │  DEX aggregation engine
   ▼
Blockchains  (Solana · Sui · Ethereum · Base · Arbitrum · …)

HL Managed-Custody Reference

HyperLiquid perp operations use a distinct crypto pipeline from spot trades. Getting any detail wrong produces a 400 Unauthorized (code 103) error. This section documents the exact specification.

HL Deposit Flow

The backend custodially executes the on-chain deposit: it loads the user's server-side private key, constructs an Arbitrum transaction, and sends USDC to the HyperLiquid bridge receiver. The agent only provides an authorization signature.

Agent SDK                              Backend
────────                               ───────
1. ABI-encode deposit params     ──►   2. AES-decrypt computedData
   (uint64 chainId, address,           3. ABI-decode data
    uint256 amount, string nonce)       4. Verify chainId == 42161
2. Sign with session key          ──►  5. Verify signature vs stored sessionKey
3. AES-encrypt as computedData    ──►  6. Validate token, balance, min deposit
4. POST /v1/hl/deposit                 7. Execute ERC-20 transfer on Arbitrum

HL ABI Schemas (CRITICAL)

Action

ABI Types

Fields

hl_deposit

['uint64', 'address', 'uint256', 'string']

[chainId, tokenAddress, amount, nonce]

hl_withdraw

['string', 'string']

[amount, nonce]

hl_create_order

['string', 'bool', 'string', 'string', 'bool', 'string', 'string', 'string', 'bool']

[coin, isLong, price, size, reduceOnly, nonce, tpPrice, slPrice, isMarket]

hl_place_order

['string', 'bool', 'string', 'string', 'bool', 'string']

[coin, isLong, price, size, reduceOnly, nonce]

hl_close_all

['string']

[nonce]

hl_cancel_order

['string', 'string', 'string']

[nonce, coin, orderId]

hl_cancel_all_orders

['string']

[nonce]

hl_update_leverage

['string', 'uint32', 'bool', 'string']

[coin, leverage, isCross, nonce]

WARNING: The hl_deposit chainId uses uint64, NOT uint256. This is the single most common cause of "Unauthorized" errors. The backend re-encodes with uint64 for signature verification — if you encode with uint256, the hex differs, signature recovery fails, and you get code 103.

HL Signature Format

All HL write operations sign with the session private key (from sign-in), NOT the control wallet key:

// Message format (no EIP-191 prefix):
const msg = `${action}-${userId.toLowerCase()}-${dataHex}`;
// e.g.: "hl_deposit-0x53d029a6...-00000000000000000000000000000000000000000000000000000000..."

const digest = keccak256(toUtf8Bytes(msg));
const sig = new SigningKey(sessionPrivateKey).sign(digest);
// Output: r(64hex) + s(64hex) + v(2hex) = 130 chars, no 0x prefix
// v = raw recovery parameter (00 or 01), NOT EIP-155 (1b/1c)

HL Deposit Constraints

Constraint

Value

Chain

Arbitrum only (chainId 42161)

Token

USDC only (0xaf88d065e77c8cC2239327C5EDb3A432268e5831)

Amount

In smallest unit (6 decimals): 10 USDC = 10000000

Min deposit

10 USDC

Fee buffer

Balance must cover amount × 1.01

Delivery time

~10 minutes after Arbitrum tx confirms

Bridge receiver

0x2Df1c51E09aECF9cacB7bc98cB1742757f163dF7

userId

Control wallet address (from sign-in), NOT managed wallet

HL Error Codes

Code

Error

Cause

101

Missing params

computedData not in request body

102

Invalid chainId

chainId is not 42161

102

Invalid params

Nonce already used, or token not supported

103

Unauthorized

Signature verification failed — check ABI types (uint64!), userId, and that you're signing with the session key registered during sign-in

—

Insufficient balance

Managed wallet doesn't have enough USDC + fee on Arbitrum

—

Too low amount

Amount < 10 USDC

HTTP Headers (Required)

The backend sits behind Cloudflare. Requests MUST include browser-like headers:

{
  'Content-Type': 'application/json',
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
  'Accept': 'application/json',
  'Accept-Language': 'en-US,en;q=0.9',
  'Accept-Encoding': 'gzip, deflate, br',
  'Connection': 'keep-alive',
  'Authorization': 'Bearer <apiKey>',  // NOT X-API-Key
}

WARNING: Using a non-browser User-Agent (e.g., axios/1.x or any string containing bot identifiers) will result in Cloudflare 403 "Access denied". The SDK handles this automatically.

Complete HL Deposit Example

import {
  GdexSkill,
  GDEX_API_KEY_PRIMARY,
  generateGdexSessionKeyPair,
  buildGdexSignInMessage,
  buildGdexSignInComputedData,
  buildHlComputedData,
} from '@gemachdao/gdex-skill';
import { ethers } from 'ethers';

const apiKey = GDEX_API_KEY_PRIMARY;
const skill = new GdexSkill();
skill.loginWithApiKey(apiKey);

// 1. Generate session keypair
const { sessionPrivateKey, sessionKey } = generateGdexSessionKeyPair();

// 2. Sign in (control wallet signs the Terms message)
const controlWallet = new ethers.Wallet('0xYourPrivateKey');
const nonce = String(Date.now());
const message = buildGdexSignInMessage(controlWallet.address, nonce, sessionKey);
const signature = await controlWallet.signMessage(message);

const signInPayload = buildGdexSignInComputedData({
  apiKey, userId: controlWallet.address, sessionKey, nonce,
  signature: signature.replace(/^0x/, ''),
});
await skill.signInWithComputedData({
  computedData: signInPayload.computedData, chainId: 42161,
});

// 3. Deposit USDC (amount in smallest unit, uint64 chainId is handled by SDK)
const computedData = buildHlComputedData({
  action: 'hl_deposit',
  apiKey,
  walletAddress: controlWallet.address,  // userId = control wallet
  sessionPrivateKey,
  actionParams: {
    chainId: 42161,
    tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
    amount: '10000000',  // 10 USDC in smallest unit (6 decimals)
  },
});

const result = await skill.client.post('/v1/hl/deposit', { computedData });
// { hash: '0x...', isSuccess: true, amount: '10000000', message: 'Deposit successfully...' }
// Wait ~10 minutes for HyperLiquid to credit the deposit

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Add tests for new functionality

  4. Run npm test && npm run build && npm run verify

  5. Submit a pull request

License

MIT © GemachDAO

Available Tools

154 tools
add_commentC

Post a comment on a token.

NameRequiredDescriptionDefault
dataNo
chainYes
userIdNo
messageYes
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond the annotations – no mention of auth requirements, what gets stored, rate limits, or validation, which is a real gap for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and waste-free, but it is undersized for a 6-parameter mutation tool. Conciseness is achieved at the cost of substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with low schema coverage and no output schema, the description is inadequate: it does not explain how to identify the target (tokenAddress + chain), what the message constraints are, or what happens on success.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 17% (just accountRef documented), so the description must compensate, and it does not. It says nothing about tokenAddress, chain, message, data, or userId, leaving five of six parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (post) and resource (comment) with an object (token), so the agent can tell it is a write of a comment. There is no explicit differentiation from the sibling get_comments, but the purpose is otherwise unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites (e.g. auth via accountRef), and does not route the agent versus alternatives like get_comments. Only the bare object 'on a token' is conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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).

NameRequiredDescriptionDefault
idTokenYesGoogle-issued OIDC ID token (JWT). Backend extracts the email claim from this token.
computedDataYesManaged-custody encrypted payload from buildAssociateEmailComputedData.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, open-world, non-destructive mutation. The description adds meaningful behavior: the email is extracted server-side from a verified Google idToken and is not sent by the client, and the operation must precede oauth_login. It does not cover response behavior or idempotency, but the annotations reduce the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and then gives the precondition, error condition, data-flow constraint, and build requirement. Every sentence carries operational value with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation with annotations and full schema coverage, the description covers purpose, timing, data source, and required payload construction. It does not describe the success response or post-call state, which is a minor gap given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents both idToken and computedData, including server-side email extraction and the buildAssociateEmailComputedData helper. The description reinforces the security detail that the email is not client-provided, but largely repeats schema semantics, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: linking the email claim from a Google ID token to the caller's wallet. It distinguishes this from oauth_login by explaining the precondition and the error condition that triggers this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool: before oauth_login when the wallet has no associated email yet, with the concrete symptom that oauth-login returns 404/code 108. It also names the required helper buildAssociateEmailComputedData, leaving little ambiguity about invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_loginA

Authenticate with a GDEX API key. Sets the Bearer token for all subsequent requests.

NameRequiredDescriptionDefault
apiKeyYesGDEX API key (UUID format)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark this as non-read-only and non-destructive; the description adds the crucial behavioral fact that the call mutates session-wide state by installing a Bearer token for all later requests. It omits token lifetime/expiry and failure behavior, but the key side effect is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler; the action is front-loaded and the consequence follows immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter login tool with a fully documented schema and no output schema, the description covers what the agent needs to call it and why. The remaining gap is disambiguation from the other sign-in tools in the sibling list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ("GDEX API key (UUID format)"), so the schema carries the semantics. The description adds nothing about the key beyond what the schema already says, which matches the baseline of 3 for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (authenticate) and the credential type (GDEX API key), so the agent knows exactly what this does. It does not, however, differentiate itself from sibling auth tools such as oauth_login, managed_sign_in, or generate_session_keypair.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Sets the Bearer token for all subsequent requests" implies this must be called before other tools, which is useful sequencing guidance. But it never states when to prefer it over oauth_login or managed_sign_in, nor what happens if called again with a different key.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_sign_in_payloadA
Read-only

Build the encrypted sign-in computedData payload from raw credentials. Returns the payload to use with managed_sign_in.

NameRequiredDescriptionDefault
nonceYesUnique nonce string
apiKeyYesGDEX API key
userIdYesControl wallet address
signatureYesEVM/Solana wallet signature of the sign-in message
sessionKeyYesSession public key (0x + 66 hex)
refSourceCodeNoOptional referral code

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with readOnlyHint=true and openWorldHint=false — it only assembles an encrypted payload locally rather than performing sign-in. Beyond that it adds little: no statement about side effects, determinism, or that the wallet signature must already exist before calling. With annotations carrying the safety profile, a 3 fits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place: the first defines the operation, the second routes the result to the consumer tool. Purpose is front-loaded with zero padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description says only "Returns the payload" without characterizing the computedData object an agent must pass to managed_sign_in. For a 6-parameter builder feeding a downstream call, that return-value gap and the missing provenance of nonce/signature leave it only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (five required) are documented in the schema itself. The description's phrase "from raw credentials" only gestures at the input set and adds no format or dependency detail beyond what the schema provides — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and artifact: "Build the encrypted sign-in computedData payload from raw credentials." The second sentence disambiguates it from its close sibling managed_sign_in by positioning this tool as the payload producer, not the sign-in executor.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Returns the payload to use with managed_sign_in" gives clear flow guidance — build first, then submit with managed_sign_in. It stops short of naming where nonce/signature/sessionKey come from (e.g. generate_session_keypair) or when an alternative auth path (auth_login, oauth_login) applies, so no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_trade_payloadB
Read-only

Build an encrypted managed-custody trade computedData payload from raw credentials.

NameRequiredDescriptionDefault
nonceYesUnique nonce
actionYesTrade action
amountYesTrade amount
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressYesToken contract address
sessionPrivateKeyNoSession private key

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a side-effect-free computation. The description adds that the output is an encrypted computedData payload composed from credentials, but is silent on secret handling and on how the payload is subsequently consumed. Note: 'raw credentials' sits in mild tension with the accountRef schema note that no secret is passed in chat, though this is a schema annotation, not an annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the verb and the output artifact front-loaded and no filler. It is appropriately sized for a one-line builder, though a brief pointer to the next step could have been added without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter builder with no output schema, the description should explain what the computedData payload is and how to use it (e.g., feed it into an execute tool). It names the artifact but leaves its shape and downstream usage unspecified, which is a meaningful gap given there is no output schema to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 8 parameters (action enum, nonce, amount, tokenAddress, apiKey, accountRef, etc.) are already documented in the schema. The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Build) and a specific resource (an encrypted managed-custody trade computedData payload) plus the input nature (raw credentials). An agent can distinguish it from execution siblings like gdex_execute_trade, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no mention of the likely downstream step (executing the payload) or of alternatives such as gdex_execute_trade. The builder-vs-executor relationship is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buy_tokenA
Destructive

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.

NameRequiredDescriptionDefault
dexNoNot supported: the backend picks the route. Rejected when set.
chainYesChain: 'solana', 'base', or a chain id (8453=Base, 42161=Arbitrum)
amountYesNative token to spend, e.g. '0.1' for 0.1 SOL; converted exactly to native decimals
apiKeyNoGDEX API key used to encrypt the signed trade
referrerNoNot supported by purchase_v2/sell_v2. Rejected when set.
slippageNoSlippage percent, Solana and Sui only (sent as bps, max 50). Rejected on EVM, where the account's stored slippage applies. Omit to use the stored setting.
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
inputTokenNoOmit, or the chain's native token. Anything else is rejected (use usdc_buy for USDC).
priorityFeeNoSolana priority fee in lamports (integer, max 50000000 = 0.05 SOL). Solana only.
tokenAddressYesContract address (mint on Solana) of the token to buy
walletAddressNoControl wallet address (the GDEX userId)
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With destructiveHint=true and openWorldHint=true already declared, the description still adds real value: it discloses the async request/confirm pattern via requestId and wait_for_trade, and that the wallet is managed/session-signed rather than a raw key. It does not state that native funds are irreversibly spent on a DEX route or what happens on a failed fill, which for a destructive trade tool is a notable omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and mechanism, then chains, then the follow-up step and the alternative. The chain list is long but functional; almost nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter destructive trade tool with no output schema, the description covers the essential operating picture: supported chains, wallet model, async completion path, and the USDC alternative. Remaining gaps (failure/refund behavior, prerequisite connection via accountRef) are modest given how much the schema and annotations already carry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter documentation is already carried by the schema (including the dex/referrer rejection notes and slippage constraints). The description adds only the inputToken restriction implicitly ('with the chain's native token'), so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Buy a token') plus the payment asset ('with the chain's native token') and the wallet/mechanism ('managed GDEX wallet, session-signed purchase_v2'). It enumerates supported chains and explicitly disambiguates from usdc_buy, so an agent can tell it apart from its buy siblings without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear routing rule ('To pay with USDC use usdc_buy') and a mandated next step ('Returns a requestId; follow it with wait_for_trade'). However, it says nothing about when to prefer limit_buy, managed_purchase, or execute_spot over this tool, so the broader alternative landscape is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_all_perp_ordersB
Destructive

Cancel all open perp orders on HyperLiquid.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. Beyond that the description adds nothing: it does not say the cancellation is irreversible, which account's orders are affected, whether it spans all markets, or what the agent gets back. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the destructive scope ('all open perp orders') appears immediately. Nothing to trim, nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimally adequate for a destructive bulk-cancel: the schema carries 100% parameter documentation and annotations carry the safety profile, and no output schema exists to explain. However, with zero required parameters declared, the description should have clarified the auth/account binding (accountRef vs walletAddress) and the blast radius of 'all'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description adds no parameter detail (nothing about accountRef, walletAddress, apiKey, or sessionPrivateKey). Baseline 3 applies: the schema fully documents the parameters, so the description neither helps nor hurts here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Cancel), resource (open perp orders), scope (all), and venue (HyperLiquid) in one sentence. The 'all' explicitly separates it from the sibling cancel_perp_order, so an agent can route between the bulk and single-order tools without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use framing at all: nothing says when to prefer this over cancel_perp_order, close_all_positions, or direct_cancel_order, and no prerequisite (e.g. needing a connected account or active session) is mentioned. The only guidance is implicit in the word 'all'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cancel_perp_orderC
Destructive

Cancel a specific open perp order on HyperLiquid.

NameRequiredDescriptionDefault
coinYesAsset symbol
apiKeyNoGDEX API key for AES encryption
orderIdYesOrder ID to cancel
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the destructive write profile is covered structurally. The description adds only the word 'open' and says nothing about irreversibility, partial failure, whether an unknown orderId errors or no-ops, or the auth/session requirements implied by the four credential parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero waste; nothing is buried or redundant. It is efficient, though its brevity is partly under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, open-world mutation with six parameters including four credential fields and no output schema. The description omits how credentials are supplied, what a successful cancellation returns, and how errors or already-filled orders are handled — significant gaps for a cancel operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the accountRef/credential parameters, so the schema does the heavy lifting. The description contributes no additional meaning about coin formatting, orderId provenance, or how credential parameters combine — baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (cancel) and resource (a single open perp order) scoped to HyperLiquid, which separates it from cancel_all_perp_orders and update_order by name alone. It does not explicitly name any sibling, so the differentiation is inferable rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative routing is given. An agent must infer on its own that this is for a single order while cancel_all_perp_orders handles bulk, and that the order must still be open.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

change_watchlistB

Add or remove a token from the user's watchlist via managed custody. Requires pre-built encrypted computedData.

NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, open-world mutation, so the safety profile is covered. The description usefully adds that operations run through managed custody and need a pre-built payload, but says nothing about auth requirements, error behavior when removing a token not on the list, or whether the change is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the operation front-loaded and the prerequisite second; nothing is redundant. It is arguably under-specified rather than over-long, which is the better failure mode here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema and a mandatory encrypted payload, the definition never tells the agent how to obtain the pre-built computedData (no pointer to a build/skill/guide sibling). Combined with no return-value or error context, this leaves a real gap for correct invocation, though the annotations cover the safety dimension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both computedData and the optional chainId are documented in the schema. The description only adds the qualifier "pre-built" for computedData, which is a marginal gain over "Encrypted computedData payload" and gives no guidance on how that payload is produced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (add/remove) and the exact resource (the user's watchlist), so the agent knows this is a watchlist mutation tool. It stops short of naming the read-only sibling get_watchlist as the alternative, so differentiation relies on the agent inferring from the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Requires pre-built encrypted computedData" gives one real prerequisite, which is more than most definitions offer. However, there is no explicit statement of when to prefer this over get_watchlist or other token tools (import_token, get_token_details), leaving the choice implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_all_positionsA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context the annotations cannot convey: the backend frequently fails with TIMEOUT or 400/JSON parse errors. It does not say whether partial closes can occur or whether retries are safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose first, then the caveat and the alternative. Nothing is wasted and the critical warning is not buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive bulk-close operation with no output schema, it covers purpose, reliability risk, and the safer alternative. An agent would still want to know execution semantics (market order? partial failure behavior?) but the essential information for choosing and invoking it is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (apiKey, accountRef, walletAddress, sessionPrivateKey) are already documented. The description adds nothing about them, which is acceptable at full coverage but is baseline, not value-add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Close all open perpetual positions on HyperLiquid') and makes the all-vs-single distinction explicit by naming close_perp_position. An agent can immediately tell it apart from its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to the alternative ('Prefer close_perp_position per coin'), which is strong guidance. It stops short of saying when, if ever, this tool should be used instead, leaving the agent to infer that it is a bulk fallback only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_perp_positionA
Destructive

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.

NameRequiredDescriptionDefault
dexNoBuilder DEX for a bare coin, e.g. 'xyz' (omit for the default dex)
coinYesAsset symbol to close; builder-DEX assets as 'dex:ASSET', e.g. 'xyz:TSLA'
sizeNoSize to close as a decimal string; omit to close the whole position
priceNoClose price; omit or '0' to use the mark price
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
szDecimalsNoMarket size decimals (HL meta szDecimals); rejects a size with more decimals
walletAddressNoControl wallet address
positionAddressNoAddress whose HL account holds the position — normally the MANAGED wallet from sign-in. Defaults to walletAddress.
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive=true and openWorld=true, but the description adds real substance: the order type (reduce-only market), that the side is derived from the live HL position rather than supplied, and the three rejection cases. It omits auth/session prerequisites, though the schema's accountRef/apiKey fields cover that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what the tool does, then the side-derivation rule, then failure conditions. Nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, 10-parameter mutation tool with no output schema, the description covers the operation, the side logic, and the failure modes; the remaining gaps (fill/return details, session requirements) are largely carried by the annotations and the 100%-covered schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does clarify a genuinely tricky parameter interaction (a bare coin open on several builder DEXes is rejected, and a partial size must not exceed the live position), which is marginally useful but not syntax-level guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Close ... one perp position') plus the exact mechanism ('reduce-only market order'), which cleanly separates it from open_perp_position and close_all_positions in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete rejection conditions (flat/missing position, size exceeding it, bare coin across multiple builder DEXes) that tell the agent when this call will fail, and 'fully or partially' scopes it to a single position. It never names an explicit alternative such as close_all_positions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_copy_tradeB
Destructive

Create a new copy trade to auto-mirror a Solana trader's buys/sells. Solana only.

NameRequiredDescriptionDefault
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
buyModeYes1 = fixed SOL amount, 2 = percentage of trader amount
chainIdYesMust be 622112261 (Solana)
copySellNoAlso copy sell trades
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
lossPercentYesStop-loss percentage (> 0, < 100)
traderWalletYesSolana wallet address of trader to copy
copyBuyAmountYesSOL amount (mode 1) or percentage 0-100 (mode 2)
copyTradeNameYesHuman-readable label
profitPercentYesTake-profit percentage (> 0)
sessionPrivateKeyNoSession private key from sign-in
excludedDexNumbersNoDEX numbers to exclude
isBuyExistingTokenNoBuy tokens already held by trader

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the safety profile is covered. The description adds the meaningful behavioral fact that this sets up continuous auto-mirroring of another trader's buys/sells, but it never discloses that real funds are committed, that loss/profit thresholds stop the mirroring, or that an authenticated account is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the core action front-loaded and the platform constraint immediately after. Nothing is wasted or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, open-world mutation with 14 parameters (7 required) and no output schema; the description is far too thin for that weight. It omits the authentication path (accountRef/gdex_connect), the implication that live trading starts immediately, and any mention of how the required risk parameters govern behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 14 parameters are documented in the schema itself. The description adds no extra meaning about buy modes, stop-loss/take-profit interaction, or how accountRef replaces raw secrets, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a new copy trade') plus its effect ('auto-mirror a Solana trader's buys/sells'), and the 'Solana only' clause implicitly separates it from the sibling create_hl_copy_trade. It's clear, though the sibling differentiation is by inference rather than by naming the alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Solana only' constraint tells the agent when this tool applies versus the HL equivalents, but there is no explicit guidance on prerequisites (gdex_connect/accountRef, chainId 622112261), no named alternatives, and no when-not-to-use conditions. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_hl_copy_tradeC
Destructive

Create a new HL perp copy trade. Copies a trader's long/short perpetual positions.

NameRequiredDescriptionDefault
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
copyModeYes1 = Fixed USD per order, 2 = Proportion of trader size
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
lossPercentYesStop-loss percentage (> 0, < 100)
oppositeCopyNoShort when trader goes long
traderWalletYesEVM address of the trader to copy
copyTradeNameYesHuman-readable label
profitPercentYesTake-profit percentage (> 0)
sessionPrivateKeyNoSession private key from sign-in
fixedAmountCostPerOrderYesUSD amount (mode 1) or ratio (mode 2)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the risk profile is known. The description adds no behavioral context beyond them: it does not say that this begins live copying and commits funds, that credentials (accountRef/apiKey/sessionPrivateKey) are required, or whether the trade can be edited afterward. For a destructive mutation with 11 parameters, that is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource. The second sentence is mildly redundant with 'copy trade' in the name but does add the long/short perpetual qualifier, so it earns most of its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world creation tool with 11 parameters, no output schema, and auth-via-accountRef flow, the description omits the setup path (gdex_connect / sign-in), confirmation semantics, and what happens after creation. It names the operation but leaves an agent under-informed about safe invocation of a high-consequence call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 11 parameters including copyMode, lossPercent, profitPercent, oppositeCopy, and accountRef are documented in the schema itself. The description adds only the general notion of long/short copying, which loosely maps to oppositeCopy but explains nothing about mode semantics or risk percentages. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new HL perp copy trade') and clarifies with 'Copies a trader's long/short perpetual positions,' which distinguishes it from the spot-oriented create_copy_trade sibling by naming the HL perp domain. It does not explicitly say how it differs from create_copy_trade or update_hl_copy_trade, leaving the agent to infer scope from the 'HL perp' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus create_copy_trade, update_hl_copy_trade, or the related pause/resume tools, and no prerequisites are stated. The agent must discover on its own that this is the creation path for a new perp copy-trade subscription rather than a modification of an existing one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, but the description goes well beyond that: it states irreversibility ('Cannot be undone') and, critically, enumerates the side effects that do NOT occur (positions not sold, TP/SL orders not cancelled). That non-effect disclosure is genuinely load-bearing information an agent cannot infer from the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the irreversible nature and the verb in caps. Every sentence carries distinct information: scope, side-effect boundary, reversibility, and alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-required-parameter destructive tool with full schema coverage and annotations, this covers the gaps that matter: permanence, what survives the delete, and the safer alternative. No output schema is needed since there is no meaningful return to explain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the copyTradeId provenance ('from get_copy_trade_list') and the accountRef session mechanism are already documented in the schema. The description adds no parameter-level detail, which is acceptable given full schema coverage but earns only the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (PERMANENTLY delete) and a precisely scoped resource (a Solana copy trade configuration), and immediately disambiguates what is NOT touched (positions, TP/SL orders). An agent can distinguish this from pause_copy_trade or delete_hl_copy_trade without reading further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative for the 'stop copying' intent (pause_copy_trade instead) and states that positions and TP/SL orders must be managed separately, which is a real exclusion condition. Usage routing is fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_hl_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_hl_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say destructive=true; the description adds the critical blast radius — positions stay open, TP/SL orders are not cancelled, and the action is irreversible. This is exactly the behavioral detail an agent needs before calling a destructive delete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads PERMANENTLY, then separates consequences (positions/orders) from irreversibility and the alternative in distinct, waste-free sentences. Every sentence carries unique information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive delete with no output schema, the description covers purpose, irreversibility, side-effect boundaries, and the alternative. Nothing an agent needs for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all five parameters are already documented (copyTradeId even cites get_hl_copy_trade_list). The description adds no further parameter syntax or meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (delete) and resource (HL perp copy trade configuration) with explicit permanence emphasis. The distinction from pause_hl_copy_trade is named, so an agent can route without opening a sibling schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use routing: delete for permanent removal, pause_hl_copy_trade for temporary stop. Also directs the agent to the perp tools for closing positions/orders, covering the follow-up action.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

direct_cancel_orderB
Destructive

Cancel an open order directly with a private key on HyperLiquid.

NameRequiredDescriptionDefault
coinYesAsset symbol
orderIdYesOrder ID (numeric)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
privateKeyNoWallet private key (hex)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare the operation destructive, non-read-only, and open-world. The description adds useful auth context by saying the cancellation is performed directly with a private key on HyperLiquid, but it does not explain irreversibility, failure behavior, or why one would use privateKey versus accountRef.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence with no redundant words. Its brevity is appropriate, and any missing detail is a completeness issue rather than verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive trading mutation, the description gives the essential action, venue, and auth method. However, it omits important operational context such as when to use accountRef instead of privateKey, what kind of open order is meant, and what the agent should expect after cancellation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents coin, orderId, accountRef, and privateKey. The description only reinforces the private-key path and adds no syntax, constraints, or meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (cancel), resource (open order), platform (HyperLiquid), and auth method (private key), so the tool's basic purpose is clear. It does not explicitly differentiate itself from sibling cancellation tools such as cancel_perp_order, cancel_all_perp_orders, or hl_cancel_outcome_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no when-not-to-use guidance, and no named alternatives. The word 'directly' hints at a direct private-key signing path, but the agent must infer when to choose this over managed or session-based cancellation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_bridgeA
Read-only

Get a cross-chain bridge quote without executing. Returns estimated output, provider, and time.

NameRequiredDescriptionDefault
amountYesAmount in raw units
toChainIdYesDestination chain ID
fromChainIdYesSource chain ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so 'without executing' largely restates the safety profile. It does add useful return context (estimated output, provider, time) in the absence of an output schema, but says nothing about quote staleness, rate limits, or fees beyond the headline fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and scope, followed by return shape. No filler or redundant restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read tool with no output schema, the description covers purpose and return fields adequately. Minor gaps remain around quote validity/expiry and whether execution must follow promptly, which matter for a bridge quote workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (amount in raw units, source/destination chain IDs), so the schema does the parameter work. The description adds no unit conventions or constraints of its own, making baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get a cross-chain bridge quote') on a specific resource, and immediately scopes it as non-executing. The phrase 'without executing' implicitly separates it from the execute_bridge sibling, so an agent can pick between quote and execution without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition for use: fetching a quote when no execution is desired. The counterpart (executing a bridge) is implied rather than named, and no prerequisites or exclusions (e.g., quote expiry, minimum amounts) are stated, so it is clear but not fully routing-grade.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_bridgeA
Destructive

Execute a cross-chain bridge transaction. Requires managed-custody auth.

NameRequiredDescriptionDefault
amountYesAmount in raw units
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
toChainIdYesDestination chain ID
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
fromChainIdYesSource chain ID
sessionPrivateKeyNoSession private key

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds the managed-custody auth prerequisite, which is genuine extra context, but omits what funds movement is irreversible, failure/rollback behavior, and how the session-key vs apiKey paths differ.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, action first, prerequisite second. No waste whatsoever.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world, 7-parameter transaction with no output schema, the description is thin: no mention of required ordering with gdex_connect, no fee/slippage or irreversible-funds warning, and no guidance on the auth variants implied by apiKey/sessionPrivateKey. Schema and annotations cover the rest, so it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (7 params, all documented), so the schema itself carries the heavy lifting — including accountRef's explanation of how it supplies session key and API key without passing secrets in chat. The description adds no parameter meaning beyond the schema, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Execute a cross-chain bridge transaction'), which is clearly a mutating action. However it does not distinguish itself from near-identical siblings such as usdc_execute_bridge or estimate_bridge, so an agent must open the schema to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Requires managed-custody auth' gives a precondition, which is more than most mutating tools provide. But it never says when to use this bridge versus estimate_bridge (preview) or usdc_execute_bridge, nor what to do first (e.g. gdex_connect).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_cross_perpA
Destructive

Execute a cross-margin perpetual trade directly with a private key (no managed custody). Supports TP/SL and builder fees.

NameRequiredDescriptionDefault
coinYesAsset symbol, e.g. 'BTC'
priceYesPrice in USD
isLongYesTrue for long, false for short
isMarketNoTrue for market, false for limit
leverageNoLeverage for cross-margin (calls updateLeverage before placing)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
privateKeyNoWallet private key (hex)
reduceOnlyNo
positionSizeYesPosition size
stopLossPriceNoStop-loss price
builderFeeRateNoBuilder fee rate in basis points
stopLossTriggerNoStop-loss trigger price
takeProfitPriceNoTake-profit price
builderFeeAddressNoBuilder fee wallet address
takeProfitTriggerNoTake-profit trigger price

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, openWorld=true, and readOnly=false, so the safety profile is covered. The description adds useful context about custody mode (private key, no managed custody) and feature support (TP/SL, builder fees), but does not cover risk, reversibility, or auth flow details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and followed by key features. No wasted words, though the second sentence is a brief feature list rather than deeper guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive trade tool with 15 parameters and no output schema, the description is somewhat sparse. The schema covers parameter details, but the description does not clarify the relationship between privateKey and accountRef, nor what execution returns, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 93%, so the schema already documents nearly all parameters. The description mentions TP/SL and builder fees but adds no syntax or format guidance beyond what the schema provides; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Execute a cross-margin perpetual trade') and distinguishes itself from sibling execute_isolated_perp via 'cross-margin' and from managed tools via 'directly with a private key (no managed custody)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a usage condition (private key, no managed custody) but does not explicitly say when to choose this over alternatives like execute_isolated_perp, open_perp_position, or managed tools. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_isolated_perpC
Destructive

Execute an isolated-margin perpetual trade directly with a private key. Requires explicit leverage.

NameRequiredDescriptionDefault
coinYesAsset symbol
priceYesPrice in USD
isLongYesTrue for long, false for short
isMarketNo
leverageYesLeverage (required for isolated margin)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
privateKeyNoWallet private key (hex)
reduceOnlyNo
positionSizeYesPosition size
stopLossPriceNo
builderFeeRateNo
stopLossTriggerNo
takeProfitPriceNo
builderFeeAddressNo
takeProfitTriggerNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is known. The description adds the auth mechanism ('with a private key'), which is useful, but it omits critical trade behavior: irreversibility, funds at risk, how reduceOnly/stopLoss/takeProfit interact, and that accountRef is an alternative to passing a secret. Worse, saying it requires a private key conflicts with the schema, where privateKey is optional and accountRef can supply credentials instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the action, which is good. But for a 15-parameter destructive trading tool it is under-specified rather than truly concise, and the second sentence duplicates information already present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex, destructive, open-world trading tool with 15 parameters and no output schema. The description omits risk warnings, credential handling (privateKey vs accountRef from gdex_connect), order-type semantics (isMarket vs price), and any indication of what happens on success or failure, leaving the agent materially under-informed for a high-stakes call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 47% across 15 parameters, so the description is expected to compensate. Instead, its only parameter-related statement ('Requires explicit leverage') merely repeats the schema's own leverage description and says nothing about coin, isLong, price, positionSize, reduceOnly, stop-loss/take-profit, builder fee fields, or the privateKey-versus-accountRef choice.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Execute an isolated-margin perpetual trade'), and the 'isolated-margin' qualifier distinguishes it from execute_cross_perp. It does not, however, clarify how it relates to similarly named siblings such as open_perp_position, place_perp_order, or gdex_execute_trade, leaving ambiguity about which perp entry point to choose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Directly with a private key' and 'Requires explicit leverage' imply some preconditions, but there is no explicit guidance on when to use this tool versus execute_cross_perp, open_perp_position, or place_perp_order. The agent is left to infer the selection criteria from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_spotC
Destructive

Execute a spot trade directly on HyperLiquid with a private key.

NameRequiredDescriptionDefault
coinYesAsset symbol
sizeYesTrade size
isBuyYesTrue for buy, false for sell
priceYesPrice
isMarketNo
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
privateKeyNoWallet private key (hex)
builderFeeRateNo
builderFeeAddressNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the description's useful additions are limited to the fact that execution is direct/on-venue and requires a private key. It says nothing about irreversibility, fee handling (builderFeeRate), slippage or failure behavior, which matter for a destructive trade call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification for a destructive trading tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 9 parameters, two auth paths, no output schema and a destructive annotation, an agent still lacks guidance on order semantics (market vs limit), price handling for market orders, fees, and what the call returns. The description covers only the venue and the key requirement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% and the description adds no parameter meaning beyond the auth hint. It ignores the important nuance that accountRef is the secret-free alternative to passing privateKey in chat, and does not explain how isMarket (default true) interacts with the required price field or what builderFeeRate/builderFeeAddress do.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource+venue: 'Execute a spot trade directly on HyperLiquid'. This distinguishes it reasonably from execute_cross_perp / execute_isolated_perp, though it never explains how it relates to siblings like gdex_execute_trade, limit_buy or managed_purchase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'directly' hints at a self-custody path, but there is no explicit statement of when to use this instead of gdex_execute_trade, limit_buy/limit_sell, or the managed_* tools. No preconditions (funding, session key, whitelisting) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_workflowB
Read-only

Explain an end-to-end GDEX trading workflow with step-by-step instructions and code.

NameRequiredDescriptionDefault
workflowYesThe workflow to explain

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true and openWorldHint=false annotations already establish that this is a safe, closed-domain read, so the bar is lower. The description does add value beyond them by disclosing the shape of the return (step-by-step instructions plus code), which matters because there is no output schema. It stops short of stating length, depth, or how it differs from the other guide tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and resource, no filler and nothing redundant. Every clause (end-to-end, step-by-step, with code) adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-enum-parameter tool with no output schema, the definition is adequate: safety is covered by annotations, the enum is fully documented, and the return format is hinted at. The missing piece is routing context against the numerous sibling documentation tools, which leaves the agent guessing when to choose this one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage and a fully enumerated value set, so the schema carries the semantics. The description adds nothing about the enum values or what each workflow explanation contains, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Explain") and resource ("end-to-end GDEX trading workflow") plus what the output contains (step-by-step instructions and code). It does not, however, distinguish itself from the many adjacent guide/doc siblings such as get_trading_guide, get_copy_trade_guide, get_component_guide, and search_gdex_docs, so an agent cannot tell on description alone which documentation tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no named alternative, despite a crowded sibling space of overlapping guide tools. The eleven workflow enum values imply a scope but the description never says when this is preferable to get_trading_guide or search_gdex_docs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_accountsA
Read-only

List accounts connected on this machine (accountRef, control wallet, managed wallets, session age). No secrets are returned.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, closed-world safety profile, so the description's added disclosure that 'No secrets are returned' is genuine extra value for an agent handling credentials. It also enumerates what the response contains, which annotations alone would not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with the return fields in a tight parenthetical. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names the key returned fields and rules out secrets. A slightly fuller picture of the return shape (e.g. one vs many accounts, session-age units) would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so there is nothing to document and the baseline for a zero-param tool applies. The description correctly does not waste space on parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List accounts connected on this machine', then enumerates the returned fields (accountRef, control wallet, managed wallets, session age). This clearly separates it from sibling read tools like get_wallet_info or gdex_status, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'connected on this machine' implicitly scopes usage to local session state (presumably after gdex_connect), but there is no explicit when-to-use, when-not-to-use, or alternative tool named. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
createNoCreate and store a new local control wallet (it starts unfunded)
keyFileNoPath to a local JSON key file ({ privateKey } or { control: { privateKey } })
accountRefNoRefresh the session of an already connected account

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write/network profile is partially covered. The description adds meaningful context beyond that: it discloses the return payload (accountRef plus public addresses), explains that the credential stays local rather than in the conversation, and implies a persistent credential store. It does not describe failure modes or whether connectivity to the exchange is required at connect time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler; the security constraint and the three modes are front-loaded before the downstream routing advice. The long middle sentence is dense with necessary branching detail rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description compensates by stating what is returned (accountRef plus public addresses) and how to use it downstream. For a connection/auth tool with full annotation coverage and full schema coverage, nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by tying each parameter to a mutually exclusive intent (keyFile = sign in, create:true = make a new unfunded local wallet, accountRef = refresh an existing session) and by clarifying that accountRef is the token forwarded to all downstream trading tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (connect a GDEX trading account) and immediately names the three distinct modes of operation, which is enough for an agent to distinguish it from sibling auth tools such as auth_login, managed_sign_in, or generate_session_keypair. The security framing ('without putting any secret in the conversation') further separates it from tools that handle raw keys.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use guidance per parameter branch (keyFile to sign in from a key file, create:true for a new local wallet, accountRef to refresh) plus the routing rule that accountRef should be passed to any trading tool instead of sessionPrivateKey/privateKey. It also states a hard negative ('Never ask the user to paste a private key or seed phrase'). It stops short of explicitly contrasting against sibling connection tools like gdex_accounts or gdex_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_disconnectA
Destructive

Forget a connected account on this machine (deletes its stored keys). Funds are not affected; reconnect later with gdex_connect and the key file.

NameRequiredDescriptionDefault
accountRefYesAccount to forget

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and readOnlyHint=false, so the destructive nature is known. The description adds genuinely useful context beyond that: the destruction is scoped to local key material, funds are unaffected, and the action is reversible via gdex_connect. It does not cover error cases (e.g. unknown accountRef).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action, with a parenthetical that clarifies scope and a trailing clause that covers safety and recovery. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with annotations covering the safety profile and no output schema, the description supplies the key missing pieces: what is deleted, that funds are safe, and how to undo it. Minor gaps remain around failure behavior for an invalid accountRef.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ('Account to forget'), so the schema carries the semantics. The description adds no format or identifier guidance beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Forget') and resource ('a connected account on this machine') and immediately clarifies the mechanism (deletes its stored keys). It is easily distinguished from siblings like gdex_connect and gdex_accounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: use this to remove a locally stored account, and it names the follow-up path (reconnect later with gdex_connect and the key file). It does not state explicit exclusions or when-not-to-use, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_execute_tradeA
Destructive

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.

NameRequiredDescriptionDefault
previewIdYes
userApprovedNoTrue only if the user explicitly approved this exact preview

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint/openWorldHint annotations, it discloses non-obvious behavior: it re-quotes first, moved/expired terms return status 'revised' with a new preview instead of trading, and the outcome statuses (denied, revised, submission_unknown). These are real behavioral traits an agent needs to avoid double-submitting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core action and approval condition lead, followed by re-quote behavior and the follow-up/retry rules. Every clause carries information, though the single packed paragraph could be broken up for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so at a high level ('Returns an operation; follow it with gdex_operation') while enumerating the possible statuses. It is nearly complete for a 2-param mutation tool, missing only a fuller account of the success payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (previewId has no schema description), so the description must compensate. It clearly defines userApproved semantics ('only after the user approved THIS preview's terms'), adding meaning beyond the schema, and previewId's meaning is implied by the preview-flow context, though not spelled out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Execute a preview') and ties it to the preview-based flow, which distinguishes it from the direct execute_* siblings (execute_spot, execute_cross_perp) and from gdex_preview_trade that creates the preview. An agent can identify the tool's role without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use conditions: userApproved=true only after the user approved THIS preview, otherwise the delegated policy must allow it; and explicit follow-up ('follow it with gdex_operation') and a when-not rule ('Never call again for the same intent after submission_unknown'). This is actionable routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_manage_positionA
Read-only

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.

NameRequiredDescriptionDefault
dexNo
coinNoperp coin for close/reduce
sizeNoreduce: contracts to close
chainNosell: chain
actionYes
amountNosell: token amount
accountRefYes
slippagePctNo
tokenAddressNosell: token

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and the description is consistent with a non-mutating preview ('Returns a preview; execute it with gdex_execute_trade'). It adds real behavioral context beyond the annotations: the preview runs 'against its live state', the close/reduce is reduce-only, and it handles the correct side for both longs and shorts. It does not describe slippage handling or failure conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with the core purpose front-loaded and the execution handoff at the end. Every clause earns its place, though the density means no clause is elaborated enough to fully document the action branches.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema, the definition covers the high-level flow and confirms a preview is returned, which is the most important thing an agent needs to know. But it leaves half the parameters (dex, accountRef, slippagePct, amount/tokenAddress pairing) unexplained and gives no detail about the preview payload the agent must inspect before executing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 56%, so several parameters (dex, accountRef, slippagePct) are undocumented in both places. The description does map the action semantics (close/reduce -> perp, sell -> spot) which helps interpret the enum, but it adds no syntax or format detail beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Preview an exit for an existing position') and splits the two supported cases explicitly: close/reduce a perp vs sell a spot token back to USDC. It names the sibling that performs the follow-up action (gdex_execute_trade), so an agent can distinguish it from execution siblings without reading the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context: this is the preview step and execution belongs to gdex_execute_trade, giving the agent a workflow. It does not, however, tell the agent when to choose close vs reduce vs sell, nor how it relates to siblings like gdex_preview_trade or close_perp_position, so the routing is only partially resolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_operationA
Read-only

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.

NameRequiredDescriptionDefault
opIdNo
waitSecNoMax seconds to wait, default 60
accountRefNoList filter when no opId

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real behavioral context beyond the readOnly/openWorld annotations: the call blocks up to waitSec, it deliberately looks up the trade instead of resending when a submission is unknown, and it surfaces needs_retry rather than performing the sell itself. This is exactly the kind of disambiguation that prevents an agent from double-submitting, and nothing contradicts readOnlyHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the primary action, then layers the recovery semantics compactly in a single dense sentence plus a closing fallback clause. The nested parentheticals make it slightly hard to scan, but no clause is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a stateful polling/reconciliation tool with no output schema and no annotations covering semantics, the description covers both modes, the waiting behavior, and the notable terminal states (funded/filled, submission_unknown, needs_retry). It could still say more about what the listing mode returns, but the critical call-time information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

opId has no schema description, and the description compensates by explaining its dual role: with it the call follows/reconciles a specific operation, without it the call lists recent operations. waitSec and accountRef are already documented in the schema at 67% coverage, so the remaining gap is small.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('follow or recover an operation by opId') plus the alternate listing mode when opId is omitted, so the two shapes of the call are distinguishable. It does not, however, contrast itself with the many similar polling siblings (wait_for_trade, usdc_wait_for_trade, managed_trade_status), and the bare name gdex_operation carries no meaning on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection context: use it to follow funding/fill progress, to resolve a submission_unknown result, or to detect a needs_retry state, and use it without opId to list recent operations. It stops short of telling the agent when another polling tool (e.g. wait_for_trade) is the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_positionsA
Read-only

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.

NameRequiredDescriptionDefault
accountRefYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint, openWorldHint), so the description's job is to add non-obvious behavior — and it does: it discloses that each section reports ok or unavailable and that 'unavailable means unknown, not empty', which prevents the agent from misreading partial failures as zero balances. It still omits auth requirements, rate limits, and freshness/caching semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the resource contents and ending with the one caveat that changes how results must be interpreted. No filler or restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden well by enumerating sections and their status semantics, which is the most important thing for an open-world read tool. It falls short only on the required accountRef argument and on any mention of auth or scope of access.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required parameter accountRef, and the description never mentions it. The agent cannot tell from either source whether accountRef is a wallet address, an internal account id, or a session-scoped handle — a gap that matters for a tool that reads another account's holdings.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource precisely and enumerates its parts: unified USDC + gas balances per chain, Hyperliquid positions across every DEX, open orders, and unfinished operations. The aggregation scope ('unified', 'per chain', 'on every DEX') implicitly distinguishes it from narrower siblings such as get_perp_positions, usdc_get_balances, or get_hl_open_orders. An agent can tell what this returns without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no alternative is named, despite many overlapping siblings (get_balances, get_portfolio, get_account_state, get_perp_positions). The agent is left to infer that this is the aggregate snapshot. The second sentence describes output interpretation, not usage selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_preview_tradeA
Read-only

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.

NameRequiredDescriptionDefault
dexNoperp_close: builder DEX for a bare coin
coinNoperp: e.g. BTC, or xyz:TSLA for builder DEXes
kindYes
sideNospot: buy|sell; perp_open: long|short
sizeNoperp_close: contracts to close (omit = full)
chainNospot: chain name or id
amountNospot: USDC to spend (buy) or token amount (sell)
slPriceNoperp_open stop-loss
tpPriceNoperp_open take-profit
leverageNoperp_open: leverage (backend: cross on core perps, isolated on builder-DEX markets)
marginUsdNoperp_open: collateral in USD
orderTypeNo
accountRefYesFrom gdex_connect
limitPriceNoperp_open limit price
autoFundingNospot buy: bridge USDC/gas from other chains (default true)
notionalUsdNoperp_open: position size in USD
slippagePctNospot: max slippage %, default 1, max 5
tokenAddressNospot: token contract / mint

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds behavior beyond annotations: a 60-second expiry, the returned previewId, and confirmation that no trade occurs. These are concrete, useful traits for an agent planning a trade.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose and return value. Dense but every clause contributes needed information. Slightly run-on first sentence, but no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 18 parameters and no output schema, the description covers the return value (previewId) and the most ambiguous parameter choices (kind, notionalUsd vs marginUsd). The schema carries the rest, so the description is sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, so the baseline is 3. The description adds critical guidance that isn't fully captured in the schema: it distinguishes notionalUsd (position size) from marginUsd (collateral) for perps and warns 'never guess which,' and clarifies the meaning of kind values (spot uses USDC wallet).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb-and-resource: 'Turn an explicit trade intent into exact executable terms without trading.' Explicitly distinguishes itself from the execution sibling by noting it returns a previewId for gdex_execute_trade. An agent can immediately tell this is a preview/simulation tool, not an execution tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (gdex_execute_trade) and implies the workflow: preview first, then execute. Provides kind options (spot, perp_open, perp_close) and a rule for perps (give notionalUsd or marginUsd, never guess which). Lacks an explicit 'when not to use' exclusion, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gdex_statusA
Read-only

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true) and external reach (openWorldHint=true), so the description only needs to add context. It does: it discloses that account data is returned without secrets, that policy is reported per account, and that pending operations and setup guidance are included. It omits auth/prerequisite or failure-mode notes, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the routing cue 'Start here' followed by a tight enumeration. Every clause carries information and nothing is repeated from structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the burden of describing what comes back, and it does so field by field. An agent knows what it will receive and why to call it first, so nothing material is missing for a zero-arg read-only status tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so per the rubric the baseline is 4. The description correctly does not invent parameter semantics and instead describes the response content, which is the right use of space here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Reports') and enumerates exactly what the status covers: version, connected accounts, API reachability, delegated trading policy, pending operations, supported trade kinds, and the next setup step. The opening 'Start here' positions it as the entry-point diagnostic and cleanly separates it from action siblings like gdex_connect, gdex_accounts, and gdex_execute_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Start here' gives an explicit trigger for when to call the tool (before doing anything else), and 'the next setup step' hints at the onboarding flow it feeds. It does not name when-not-to-use or a specific alternative diagnostic, so it stops short of the full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_evm_walletA
Read-only

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.

NameRequiredDescriptionDefault
revealSecretsNoReturn privateKey and mnemonic too (they then appear in the conversation)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint, openWorldHint=false), and the description adds real behavioral detail: it runs offline with no network call, returns only the address by default, and reveals secrets only when asked. It doesn't state whether the wallet is persisted or discarded, which is the one gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero waste, with the defining constraint (offline) front-loaded before the alternative and return behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description tells the agent exactly what comes back (address only, or privateKey/mnemonic with revealSecrets) and when to use a sibling instead. Nothing essential is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents revealSecrets including its side effect. The description reinforces the same fact ('Returns only the address unless revealSecrets is true') but adds no new syntax or format detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate a new EVM wallet') plus a distinguishing qualifier ('offline (no network call)'). It clearly separates itself from gdex_connect, which is the persistence/trading path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use this for an offline throwaway wallet, but 'use gdex_connect { create: true } instead' when you need to trade with it. When-to-use and the alternative are both named directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_pnlC
Read-only

Trigger backend PnL generation for a wallet.

NameRequiredDescriptionDefault
chainNo
endTimeNo
startTimeNo
walletAddressYes

TDQS

C2.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'Trigger backend PnL generation', an action verb implying server-side state change or job creation, while the annotations declare readOnlyHint=true. That mismatch is exactly the kind of conflict the annotations are meant to rule out, so it reads as an annotation contradiction rather than added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though it is short by omission rather than by disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should carry more of the load, yet it omits return shape, whether generation is synchronous or polled, and the meaning of the three optional parameters. For a four-parameter, zero-coverage tool it is not complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for four parameters, and the description only alludes to walletAddress. It says nothing about what chain accepts (the schema allows string or number), whether startTime/endTime are unix seconds or milliseconds, whether they are optional, or what window is used by default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (trigger/generate), resource (PnL), and scope (a wallet), so the agent understands it produces a PnL report for one address. It does not distinguish itself from nearby siblings such as hl_list_user_copy_pnl, get_wallet_performance, or get_nof1_analytics, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives even though several siblings return PnL/performance data. The agent is left to infer that this is a generation trigger rather than a read of already-computed PnL.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_session_keypairA
Read-only

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.

NameRequiredDescriptionDefault
revealPrivateKeyNoReturn sessionPrivateKey too (it then appears in the conversation)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: only the public key is returned by default, and the private key would end up visible in the conversation. A minor gap remains — it never states explicitly that the key is not persisted locally (only implied by contrast with gdex_connect) nor whether the keypair can be reused after the session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, and the routing constraint ('Advanced/manual signing only') plus the preferred alternative are front-loaded. Nothing would be lost by trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does state what is returned (public sessionKey, or the private key when opted in), which is the key fact for a caller. It stops short of covering persistence or lifetime of the generated keypair, a small omission for a security-sensitive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single optional boolean, and the schema already explains that revealing it puts the key in the transcript. The description restates that consequence without adding syntax or format detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('generate a secp256k1 session keypair') and immediately scopes it ('Advanced/manual signing only'), which separates it from signing siblings. It also names the sibling it is not (gdex_connect), so an agent can choose without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Advanced/manual signing only') and an explicit preferred alternative ('Prefer gdex_connect, which signs in and keeps keys on this machine'). The tradeoff that selects the alternative is stated, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_account_stateA
Read-only

Get full HyperLiquid account state: positions, margin, balance, withdrawable amount. No auth required.

NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds a genuinely useful trait not present in structured data — 'No auth required' — and, in the absence of an output schema, enumerates what the returned state contains. It does not mention freshness/caching or rate limits, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero filler; the resource scope and returned fields lead, and the auth note is relegated to a short trailing clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-parameter read tool with no output schema, the description covers both what comes back and the auth posture, which is sufficient to call it correctly. The missing piece is routing versus the many sibling account/state tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already explains walletAddress. The description adds no format, chain, or validation detail beyond implying the account belongs to a wallet — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get full HyperLiquid account state') and enumerates the returned content (positions, margin, balance, withdrawable amount). However, it does not distinguish itself from close siblings such as get_hl_clearinghouse_state, get_hl_spot_state, or get_perp_positions, which plausibly return overlapping data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to prefer this over the several sibling state/balance tools (get_hl_clearinghouse_state, get_usdc_balance, get_portfolio). Usage must be inferred from the resource name alone; 'No auth required' is context, not a selection criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_all_mid_pricesA
Read-only

Get all current mid prices across all HyperLiquid assets. No auth required.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful operational fact, 'No auth required', but says nothing about response shape, freshness/staleness of prices, rate limits, or whether assets with no mid price are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the scope ('all HyperLiquid assets') is front-loaded before the operational note about auth. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read tool with annotations covering safety and no output schema, this covers the core need: what it returns, over what universe, and that no credentials are needed. A brief note on return format or price staleness would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4; the schema is an empty object and there is nothing for the description to document. No misleading parameter discussion is present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get all current mid prices') plus an explicit scope ('across all HyperLiquid assets'), so an agent knows exactly what the call returns. It stops short of distinguishing itself from the closely named sibling get_mark_price, so an agent comparing the two still has to infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'all current' signals a bulk price snapshot, which suggests calling it when you want a market-wide view rather than a single-asset quote. No explicit when-to-use, when-not, or named alternative (e.g. get_mark_price for a single asset) is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_api_infoA
Read-only

Get GDEX API endpoint details — URL, method, parameters, and response format.

NameRequiredDescriptionDefault
endpointYesEndpoint name or keyword (e.g., "buy_token", "hl_create_order", "deposit", "portfolio")

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully discloses the shape of the returned data (URL, method, parameters, response format), which goes slightly beyond annotations, but adds nothing about caching, coverage limits, or whether unknown endpoint names error out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the resource and the returned fields come first, and nothing is repeated from title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with one fully documented parameter and no output schema, the description compensates by naming the return contents (URL, method, parameters, response format), which is roughly what an agent needs to decide to call it. Minor gap: no hint about endpoint-name coverage or failure behavior for unknown keywords.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single endpoint parameter is documented in the schema with concrete examples ("buy_token", "hl_create_order", "deposit", "portfolio"). The description adds no syntax or matching guidance beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (GDEX API endpoint details) and enumerates the returned fields (URL, method, parameters, response format). It is clearly distinct from execution tools like execute_spot, though it does not explicitly contrast itself with sibling doc-lookup tools such as search_gdex_docs or get_sdk_pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it should call this when it needs to know how to call a GDEX endpoint. No when-to-use condition, prerequisites, or alternative (e.g., search_gdex_docs, get_skill_file) is named, even though several documentation-style siblings exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balancesA
Read-only

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.

NameRequiredDescriptionDefault
dataNoEncrypted session data, instead of sessionPrivateKey + apiKey
chainYesChain identifier
apiKeyNoGDEX API key (with sessionPrivateKey)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressNoOptional token filter
walletAddressNoControl wallet address (the GDEX userId), not the managed trading wallet
sessionPrivateKeyNoSession private key from sign-in (with apiKey)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds real behavioral detail beyond that: '[] means the backend reported no holdings; a failed read errors' discloses empty-result and failure semantics. It stops short of describing auth requirements or what the returned balance fields look like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded statements with no filler: the scope comes first, then empty/error semantics, then the sibling hand-off. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully covers return-shape expectations (empty array) and failure behavior, and it disambiguates the managed trading wallet from the control wallet. The auth/session path is left entirely to the schema, which is acceptable given 100% coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all seven parameters are already documented in the schema; the description only restates the chain and token filters implicitly. Baseline 3 is appropriate since the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: token balances of the managed GDEX wallet on one chain, optionally filtered to one token. It also names the sibling it is not (native balance -> get_trading_funds), so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear when-to-use context (managed wallet, single chain, optional token filter) and explicitly routes native-balance queries to get_trading_funds. It does not address other balance-adjacent siblings like usdc_get_balances or get_wallet_info, so no full exclusion set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bigbuysC
Read-only

"Big buy" alert feed for a chain — recent large buy transactions.

NameRequiredDescriptionDefault
limitNo
chainIdYesChain id, e.g. 622112261 for Solana

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered and the bar is lower. The description adds that results are a 'recent' feed of 'large' buys for a single chain, but leaves the threshold defining 'big,' ordering, and result volume undefined.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler and the key scoping fact (per-chain, recent, large buys) front-loaded. It is efficient, though the brevity leaves real gaps rather than being deliberately minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations covering semantics, the description should explain what qualifies as a 'big buy,' how many records come back, and how ordering works. None of that is present, so an agent cannot predict the result shape or size beyond 'some large recent buys.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: chainId is documented in the schema (with a Solana example) but `limit` has no description anywhere. The description's 'for a chain' merely restates chainId and says nothing about the limit parameter, its default, or valid range.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb+resource framing ('Big buy' alert feed) and specifies that it returns recent large buy transactions for a chain, so an agent can tell it apart from generic trade-history tools like get_token_trades or get_hl_trade_history. It stops short of naming any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this feed versus related siblings such as get_token_trades, get_top_traders, or get_token_details, and no prerequisites or exclusions are given. The agent must infer usage from the one-line purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_bridge_ordersC
Read-only

Get bridge order history for a user. Requires session-key auth.

NameRequiredDescriptionDefault
dataNoEncrypted session key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds one useful fact — session-key auth is required — but says nothing about result scope, ordering, or pagination for a history endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose and followed by the auth constraint. Nothing is padded, though the content is thin rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All parameters are optional yet the description doesn't explain what happens when userId/accountRef/data are omitted, nor how the accountRef bundle relates to the other two. With no output schema and a confusing sibling name, that omission leaves real ambiguity, though the full schema coverage keeps it adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters are documented in-schema (data as encrypted session key, userId as control wallet address, accountRef as the gdex_connect-supplied bundle). The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb and resource are clear ('Get bridge order history'), but the tool is nearly indistinguishable from the sibling 'usdc_get_bridge_orders', and the description never explains the difference. An agent reading only this line cannot confidently choose between the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states a prerequisite ('Requires session-key auth') but gives no when-to-use guidance and no comparison to the near-identical 'usdc_get_bridge_orders' or to 'usdc_get_bridge_status'. The only routing signal is an auth requirement, not a task condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_chain_infoA
Read-only

Get supported chains, chain IDs, DEXes, and capabilities.

NameRequiredDescriptionDefault
chainNoOptional: filter by chain name (e.g., "solana", "base", "arbitrum"). Omit for all chains.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the useful fact that the payload includes DEXes and capabilities, but discloses nothing further about rate limits, caching, or freshness of the chain list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is appropriately sized for a simple no-argument discovery tool, though it is terse enough that it offers little structure beyond the enumeration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-optional-param discovery tool with annotations covering safety and no output schema, the description covers what the agent needs to decide to call it. Missing only minor details such as whether the result is static or refreshed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional 'chain' filter is fully documented in the schema, including examples and the 'omit for all chains' behavior. The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and enumerates the resource contents: supported chains, chain IDs, DEXes, and capabilities. An agent immediately knows this is a reference/discovery tool. It does not explicitly contrast with siblings, but no sibling overlaps this purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the enumeration of what it returns – an agent can infer it should call this when it needs to know supported chains or DEXes before trading. However, there is no explicit when-to-use, no prerequisites, and no mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_commentsC
Read-only

Get comments for a token.

NameRequiredDescriptionDefault
pageNo
chainYes
limitNo
tokenAddressYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds almost no behavioral context beyond the annotations: it does not explain pagination, ordering, rate limits, authentication needs, or what kind of comments are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words, but it is arguably under-specified for a tool with four parameters and no schema descriptions. The concision is appropriate in form but leaves important gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, open-world tool with four parameters, no output schema, and zero schema description coverage, the description is too thin. Annotations cover the safety profile, but the description does not provide enough detail about required inputs, pagination, or returned data for an agent to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for four undocumented parameters. It only indirectly implies the tokenAddress parameter via 'for a token' and says nothing about the required chain, page, or limit parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get comments for a token.' It is clear enough to distinguish reading comments from the sibling write tool add_comment, but it does not explicitly differentiate itself from other comment- or sentiment-related siblings such as vote_sentiment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives, nor does it mention prerequisites such as required chain selection or pagination. Usage is only implied by the tool name and one-line description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_guideB
Read-only

Get React UI component patterns for GDEX trading interfaces.

NameRequiredDescriptionDefault
componentYesComponent name or category (e.g., "SpotTradeForm", "PositionTable", "portfolio", "theming", "wallet", "page-layouts")

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already establish that this is a safe, closed-domain read operation. The description adds no behavioral detail beyond annotations, such as what kind of content is returned, whether it includes code examples, or how the component parameter is interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is a single front-loaded sentence with no wasted words. It states the action and subject immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with annotations, the description is minimally adequate but leaves gaps. It does not explain the return format or clarify when to choose it over other documentation-oriented siblings, and no output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, including examples for the single 'component' parameter. The description does not add parameter meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb ('Get') and a specific resource ('React UI component patterns') scoped to 'GDEX trading interfaces.' It is understandable without opening the schema, though it does not explicitly distinguish itself from sibling documentation tools such as get_sdk_pattern or get_trading_guide.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The intended use is only weakly implied by the phrase 'React UI component patterns.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_custom_walletsA
Read-only

Get top 300 wallets ranked by net received. No auth. Cached 2 min.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, but the description adds two facts the annotations do not carry: no authentication is required and results are cached for 2 minutes, which matters for freshness expectations. It stops short of clarifying what 'net received' is denominated in or whether the list is stable across calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, with the core operation front-loaded and the operational caveats (auth, cache) trailing. Nothing repeats the tool name or restates structured data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument read tool this covers the essentials, but with no output schema the agent gets no sense of the return shape — identifier format, whether labels/PnL accompany each wallet, or list ordering ties. The undefined term 'custom wallets' also limits confidence in interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero-parameter tool, so the baseline is 4; there is nothing for the description to disambiguate. The description correctly implies the ranking window is fixed rather than caller-controlled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get top 300 wallets') plus the ranking metric ('ranked by net received'), so the agent knows exactly what comes back. It does not, however, distinguish itself from the closely named sibling get_copy_trade_wallets or explain what makes these wallets 'custom'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_copy_trade_wallets, get_copy_trade_gems, or get_top_traders, all of which sit in the same copy-trade/trader-discovery cluster. The agent must infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_dexesA
Read-only

List supported DEXes for a chain (e.g. Raydium, Pumpfun on Solana). No auth.

NameRequiredDescriptionDefault
chainIdYesChain ID (622112261 for Solana)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, openWorldHint), so the bar is lower, yet the description adds a genuinely useful behavioral fact not present in the annotations: 'No auth'. It also implies a static supported-list rather than live data. It stops short of saying whether the list varies by chain deployment or is cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the scope constraint, examples folded inline, and no filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-required-param read-only lookup with no output schema, the description is nearly sufficient: purpose, scope, examples, and auth status are all present. Slightly more (e.g. the return shape of the DEX list) would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents chainId with an example value (622112261 for Solana). The description only restates 'for a chain' and adds no format, range, or fallback semantics beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (supported DEXes) scoped by chain, with concrete examples (Raydium, Pumpfun on Solana) that make the domain unambiguous. It does not explicitly distinguish itself from the nearby sibling get_hl_perp_dexes, which lists a similar-but-different DEX set, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is a reference lookup used before creating or configuring a copy trade, but the description never says when to call it, what precedes it, or how it differs from get_hl_perp_dexes. No exclusions or alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_gemsA
Read-only

Get hot new tokens heavily traded by top wallets. No auth. Cached 20s.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and openWorldHint. The description adds two concrete traits the annotations do not carry: no authentication required and a 20-second cache TTL, both directly relevant to how an agent should call and rate-limit this tool. It does not describe the response shape, but that is a minor omission for a read-only discovery endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero waste, and the core purpose is front-loaded before the operational notes. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param, read-only, no-output-schema tool, the description tells the agent what it returns conceptually, that no auth is needed, and that results are cached. The one gap is any hint about the fields or ranking in the response, which an agent might want when deciding between this and its trending peers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to add; the baseline for a zero-param tool is 4. Schema coverage is reported at 100% for an empty property set, so nothing is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get hot new tokens heavily traded by top wallets'), which distinguishes it in spirit from siblings like get_newest_tokens, get_trending_tokens, and get_bigbuys. 'Gems' is jargon, but the description immediately defines it, so an agent can infer the resource without opening the schema. No sibling is named explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'No auth. Cached 20s.' notes imply this is a lightweight discovery/read call, and 'hot new tokens heavily traded by top wallets' suggests a signal-screening use case. But there is no explicit when-to-use versus get_trending_tokens / get_newest_tokens / get_bigbuys, which occupy very similar territory. Usage is inferable but not directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_guideB
Read-only

Get a copy trading guide for Solana spot or HyperLiquid perp copy trading.

NameRequiredDescriptionDefault
chainYesPlatform: solana (spot copy) or hyperliquid (perp copy)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe, static nature of the call is covered. The description adds nothing behavioral beyond that — no mention of what the guide contains, whether it is cached/versioned, or how large the payload is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; the verb and resource come first and the platform scope follows. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-param guide lookup with annotations covering safety, this is roughly adequate. However, with no output schema and no statement of what the guide covers or returns, an agent cannot anticipate the response shape before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'chain' param has an enum with a per-value description, so the schema carries the load. The description's phrase 'Solana spot or HyperLiquid perp copy trading' restates the enum semantics (spot vs perp) but adds no new format or constraint detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a copy trading guide') and scopes it to Solana spot vs HyperLiquid perp copy trading, so an agent knows exactly what comes back. It does not explicitly distinguish itself from adjacent guide-style siblings such as get_trading_guide, get_component_guide, or get_skill_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to reach for this guide rather than the many other copy-trade tools (get_copy_trade_list, create_copy_trade, get_copy_trade_wallets) or the other guide tools. No prerequisites, no exclusions, no alternatives named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_listA
Read-only

List all copy trade configurations for a user. Requires session-key auth.

NameRequiredDescriptionDefault
dataNoAES-encrypted session key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the session-key auth requirement, which is useful and not in the annotations, but says nothing about the shape, size, or pagination of the returned list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, front-loaded with the operation and followed by the one constraint that matters. Nothing to trim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list with full schema coverage and no output schema, the description is minimally sufficient. It nonetheless omits any differentiation from the many sibling copy-trade and HL copy-trade tools, which is the main gap an agent would need filled for confident selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (data, userId, accountRef all documented in the schema, including the note that accountRef supplies secrets so no secret is passed in chat). The description adds no parameter detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (copy trade configurations) scoped to a user, which is clear on its own. However, it does not differentiate from the crowded sibling family (get_copy_trade_wallets, get_copy_trade_gems, get_copy_trade_dexes, get_copy_trade_tx_list, and especially the parallel get_hl_copy_trade_list), so an agent cannot tell which 'copy trade list' this is without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Requires session-key auth' gives one usage precondition, which is real context. But there is no explicit when-to-use vs the other copy-trade list tools, no exclusions, and no named alternative, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_tx_listB
Read-only

List copy trade transaction history with PnL. Requires session-key auth.

NameRequiredDescriptionDefault
dataNoAES-encrypted session key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external reach are covered. The description adds the session-key auth requirement and the fact that PnL is included in results, which is useful context, but says nothing about pagination, ordering, or result limits for what is likely a long transaction history.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero padding, and the core capability ('List copy trade transaction history with PnL') is front-loaded ahead of the auth caveat. It is efficient, though the auth note could have been paired with more useful scoping detail for the same token cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, no-output-schema list tool with 100% schema coverage, the description covers capability and auth prerequisite adequately. It is still thin on what the transaction list contains beyond PnL, how many records come back, and how it differs from the Hyperliquid-flavored sibling of the same name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only 3 parameters, so the schema already explains data, userId and accountRef in detail (including which fields accountRef supplies). The description's mention of session-key auth loosely maps to `data`/`accountRef` but adds no new parameter semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List copy trade transaction history') and adds the payload detail 'with PnL', so the agent knows what it returns. It does not distinguish itself from the sibling variants get_hl_copy_trade_tx_list or get_copy_trade_list, leaving the agent to infer which copy-trade chain/scope applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Requires session-key auth' is a genuine precondition and better than nothing, but there is no explicit when-to-use guidance and no routing against the nearly identical siblings (get_copy_trade_list, get_hl_copy_trade_tx_list). Usage is only implied by the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_copy_trade_walletsA
Read-only

Get top 300 wallets ranked by totalPnl for Solana spot copy trade leaderboard. No auth. Cached 2 min.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and openWorld, and the description adds real behavioral facts: no auth required, 2-minute cache, and a hard cap of 300 results. It doesn't say whether refresh is possible or what the result ordering/liveness guarantees are past the cache window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all load-bearing, with the identity of the tool front-loaded ahead of the operational caveats (no auth, cache). Nothing is repeated from structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param, no-output-schema read tool this covers what an agent needs to call and interpret it: known size cap, cache staleness, and ranking criterion. A hint about what each wallet entry contains would close the last gap, but with no output schema that is the only omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline applies; there is nothing for the description to disambiguate. The description's note that ranking is by totalPnl is the only knob-like semantic and is already implied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (top 300 wallets), ranking criterion (totalPnl), and venue scope (Solana spot copy trade leaderboard). That scope implicitly separates it from get_hl_top_traders and get_top_traders, but it doesn't name those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The domain wording ('Solana spot copy trade leaderboard') implies when it's relevant, and 'no auth' removes a prerequisite question. However, there is no explicit statement of when to prefer this over get_top_traders or get_copy_trade_custom_wallets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_currently_liveC
Read-only

Currently-livestreaming token launches.

NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds nothing beyond that: no pagination behavior, no result ordering, no freshness semantics for 'currently-live', which is the single most ambiguous term in the definition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but this is under-specification rather than conciseness: a single fragment with no verb and no actionable detail. Brevity here removes information an agent needs rather than trimming waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter, zero-coverage query tool with no output schema, the description should at minimum clarify what 'live' means, how results are scoped, and how paging works. None of that is present, leaving the agent to guess at invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions page, chain, or limit. The most important parameter, chain, accepts a union of string and number with no explanation, and the description does nothing to compensate for that gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The noun phrase identifies the resource ('currently-livestreaming token launches'), so an agent can infer this returns a set of live token launches. However, it lacks a verb, states no scope, and offers zero differentiation from near-siblings like get_live_status, get_newest_tokens, or get_trending_tokens, which an agent cannot distinguish from this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives. The description gives no hint whether this is preferred over get_live_status or get_newest_tokens for a given need.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_all_assetsA
Read-only

Get all tradeable assets on HyperLiquid with max leverage info. No auth.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true (an external network read), and the description adds the genuinely useful 'No auth' detail. It stops there — no mention of whether results are cached, how large the list is, or whether it can fail/rate-limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses with zero filler: the resource and its key attribute are front-loaded, and the auth precondition trails as a single token.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param read with annotations covering safety and no output schema, the description says what is returned (all tradeable assets, with max leverage) and that no auth is needed. Minor gap: it doesn't clarify perp vs spot coverage or the response shape, which an agent may need to pick among the many HyperLiquid read siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals a no-argument call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get all tradeable assets on HyperLiquid') plus the payload detail ('max leverage info'), so the agent knows exactly what comes back. It doesn't differentiate itself from closely related siblings like get_hl_meta_and_asset_ctxs or get_hl_perp_dexes, which also surface perp asset data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'No auth' gives one useful call precondition, but the description never says when to choose this over the sibling asset/meta endpoints, or whether it covers spot vs perp. Usage is only implied by the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_clearinghouse_stateA
Read-only

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 dex ("xyz") to see them. The default query does NOT show builder positions; an open builder position will look empty without dex.

NameRequiredDescriptionDefault
dexNoBuilder/HIP-3 dex prefix, e.g. "xyz". Omit for the default USDC dex.
userAddressYesEVM wallet address

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotation readOnlyHint=true already establishes the safe-read profile, and the description adds meaningful context beyond that: no authentication required, and the important trap that builder positions are silently hidden without `dex` — an agent could otherwise misread an empty result as a flat account.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded and every sentence carries information. The closing two clauses ('does NOT show builder positions' and 'will look empty without dex') restate the same caveat, which is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey what comes back; naming positions and margin covers the essentials for a read tool. It could say more about the shape or scope of the returned state, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by explaining the consequence of omitting `dex` (empty-looking result) and giving a concrete example format ('xyz'). That is semantics the schema's terse field description does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get account state (positions, margin) on a HyperLiquid DEX') and scopes it to the HyperLiquid DEX, which helps separate it from generic siblings like get_account_state or get_perp_positions. However, it never names which sibling to prefer when the agent wants spot state or perp positions specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context for the optional `dex` parameter: builder/HIP-3 positions live under their own dex and will appear empty without it. This is real when-to-use guidance, though it stops short of naming alternative tools for related queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_copy_trade_listA
Read-only

List all HL perp copy trade configurations for a user. Requires session-key auth.

NameRequiredDescriptionDefault
dataNoAES-encrypted session key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one piece of non-annotated context, the session-key auth requirement, which is genuinely useful, but it omits return shape and pagination behavior for a list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, and the core action is front-loaded ahead of the auth precondition. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully documented schema and no output schema, the definition covers purpose and the auth requirement adequately. It stops short of describing pagination or capacity, which for a 'list all' endpoint would have been the last useful addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented in the schema. The phrase 'for a user' loosely gestures at userId, but the description adds no format or syntax detail beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list), resource (HL perp copy trade configurations) and scope (for a user). This is clearly distinct from write siblings like create_hl_copy_trade and from get_hl_copy_trade_tx_list. However, it does not explicitly distinguish itself from the near-named sibling get_copy_trade_list, leaving the HL-vs-generic distinction to the agent to infer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (list a user's HL copy trade configs) and gives a precondition ('Requires session-key auth'), but offers no explicit when-to-use versus alternatives such as get_copy_trade_list or get_hl_copy_trade_tx_list. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_copy_trade_tx_listA
Read-only

Get HL copy trade fill history. Supports pagination (max 100 per page). Session-key auth. Cached 15s.

NameRequiredDescriptionDefault
dataNoAES-encrypted session key
pageNoPage number1
limitNoResults per page (max 100)10
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real operational context beyond that: session-key auth is required, results are cached for 15s, and page size caps at 100. It omits what happens with a missing/expired session key, but the added traits are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four terse sentences, front-loaded with the core purpose, followed by pagination, auth, and caching facts. No filler and nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, annotation-covered list tool with a fully documented schema and no output schema, the description supplies the missing operational pieces: auth requirement, cache window, and page cap. The main gap is the absence of routing guidance against the many similar history/list siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents data, page, limit, userId, and accountRef. The description only restates the limit cap ('max 100 per page') and adds no meaning about the encrypted session key or accountRef flow. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get HL copy trade fill history'. An agent can identify it as the HL copy-trade fill-history reader. It does not explicitly distinguish itself from near-neighbors such as get_copy_trade_tx_list, hl_tx_list, or get_hl_trade_history, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no named alternative. The agent gets no signal on when this beats get_hl_trade_history, hl_tx_list, or get_copy_trade_tx_list, which all live in the same sibling set. Only implicit usage is conveyed by the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_deposit_tokensB
Read-only

Get supported deposit tokens for HyperLiquid. No auth.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful trait beyond that – 'No auth' – telling the caller it can be invoked without a session, but says nothing about network scope, caching, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the resource named first and the auth constraint second. There is no filler and nothing that could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read tool with an output schema absent, the description covers what the tool returns only at a high level ('supported deposit tokens') without indicating the list's fields, whether it is mainnet-scoped, or how it differs from other asset-listing siblings. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The absence of parameters is consistent with the schema, which is empty.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get supported deposit tokens for HyperLiquid'), which is clear enough to distinguish from siblings on first read. It does not explicitly differentiate itself from near neighbors like get_hl_all_assets or get_hl_spot_state, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and does not name an alternative. An agent must infer on its own whether this or get_hl_all_assets is the right call when it needs asset/token data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_meta_and_asset_ctxsB
Read-only

Get market metadata and asset contexts from HyperLiquid. No auth.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network scope are covered. The description adds one genuinely non-structured fact — that no authentication is required — but says nothing about freshness, rate limits, or the shape of the returned metadata/contexts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, with the purpose front-loaded and the auth constraint appended. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool this is minimally viable, and annotations cover the safety profile. However, with no output schema, the description leaves the agent guessing at what 'asset contexts' actually contains (per-asset funding, open interest, oracle prices, etc.), which is a meaningful gap for callers consuming the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics for the description to carry and the baseline of 4 applies. Schema coverage is reported at 100% for an empty properties object, adding nothing to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('market metadata and asset contexts') along with the source ('HyperLiquid'), so the agent knows this is a market-data read. It does not, however, distinguish itself from nearby siblings such as get_hl_all_assets, get_hl_perp_dexes, or get_hl_clearinghouse_state, leaving the boundary unclear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'No auth' is a useful precondition, but the description never says when to reach for this tool versus the other HyperLiquid market-meta siblings, nor what situation it suits. There is no explicit when-to-use or when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_open_ordersB
Read-only

Get all open orders on HyperLiquid for a wallet. No auth required.

NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only, external-venue nature is covered. The description contributes one extra behavioral fact, 'No auth required,' which is genuinely useful for an agent deciding whether it can call this directly, but it omits return format or pagination behavior. A 3 is right given annotations carry most of the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero waste, and the core purpose is front-loaded before the auth note. Nothing to trim or reorganize.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only query with annotations covering the safety profile and a fully documented parameter, the description is serviceable. However, with no output schema, it says nothing about what an 'open order' record contains or whether results are paginated, which an agent would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema fully documents walletAddress as 'Wallet address to query.' The description's 'for a wallet' merely restates this and adds no format, chain, or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('open orders'), venue ('HyperLiquid') and scope ('for a wallet'), so the agent knows exactly what it retrieves. It does not, however, differentiate itself from similarly named siblings such as get_limit_orders or get_hl_trade_history, leaving the agent to infer which order-listing tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives like get_limit_orders, get_hl_trade_history, or the perp-position tools. The only usage signal is the implied 'wallet has open orders' condition, which the agent must infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_outcome_volumesA
Read-only

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.

NameRequiredDescriptionDefault
coinsYesOutcome side coins, e.g. ["#143150","#143151"]

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious behavior: data comes from a WS feed, and a missing coin means no reading rather than zero volume — a trap an agent would otherwise fall into.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then parameter sourcing, then return shape and the missing-vs-zero caveat, then the alternative. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by stating the return shape ({ coin: volume }) and the null-reading semantics. For a single-parameter read tool this leaves nothing an agent needs unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already includes the example array, so the schema carries the baseline. The description still adds provenance by telling the agent to source coins from hl_outcomes sides[].coin, which is meaning beyond the schema's type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 24h notional volume per outcome side coin from the Hyperliquid WS feed. It is clearly distinguishable from the sibling hl_outcomes, which the description itself names as the aggregate alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends preferring hl_outcomes withVolume=true, which reports coverage per market, giving the agent a clear routing rule toward the sibling. It stops short of saying exactly when this narrower tool is the right choice (e.g. after you already hold a coin list).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_perp_dexesB
Read-only

Get available perpetual DEX list on HyperLiquid. No auth.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description's one contribution is 'No auth,' which genuinely saves the agent an unnecessary login/session step, but it says nothing about rate limits, caching, or whether the list is static or live.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, resource identified first, with no filler. The 'No auth' fragment is terse but functional rather than wasted, so it sits just below a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read, the essentials are present. With no output schema, however, the description never indicates what the list contains or its shape (DEX names, objects, ordering), which is the one thing an agent cannot infer from structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter-level meaning is missing because no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get available perpetual DEX list on HyperLiquid.' An agent can distinguish it from neighbours like get_hl_all_assets or get_copy_trade_dexes, though it never names those siblings to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no alternative named. The only context is 'No auth,' which is a property of the call rather than a routing rule for choosing this tool over its many siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_spot_stateB
Read-only

Get HyperLiquid spot trading state for a wallet. No auth required.

NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond the annotations — 'No auth required' — but says nothing about what the returned 'state' contains, whether it is paginated, or how fresh it is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler, purpose front-loaded before the auth note. Every clause earns its place and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only getter the safety bar is low, and annotations plus a fully documented single parameter cover most of the ground. The gap is that with no output schema, the vague term 'state' never tells the agent what data actually comes back (balances, open orders, holdings), which is the main thing it needs to route correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter ('Wallet address to query'), so the schema already carries the parameter's meaning. The description adds no format, chain, or address-type detail beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and qualified resource ('HyperLiquid spot trading state for a wallet'), which is far clearer than a bare name. However, it does not differentiate itself from nearby siblings like get_hl_clearinghouse_state, get_hl_outcome_account, or get_account_state, leaving the agent to guess what 'spot trading state' uniquely returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternatives. The only routing-adjacent statement is 'No auth required', which is a constraint rather than usage direction, so the agent gets no help choosing between this and the many other HyperLiquid state readers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_top_tradersA
Read-only

Get top HyperLiquid perp traders by volume, trade count, or deposit. No auth. Cached 15 min.

NameRequiredDescriptionDefault
sortNoSort by: 'volume', 'tradeCount', or 'deposit'volume

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the bar is lower, and the description still adds two facts not in structured data: no authentication required and a 15-minute cache (meaning results can be stale). It omits how many traders are returned and what fields come back, but the caching disclosure is the operationally important one.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler: the action and scope come first, then the operational facts (auth, cache). Every clause carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-parameter lookup with annotations and no output schema, the description covers selection and invocation adequately. It leaves a meaningful gap on the result shape: it never says how many top traders are returned or what fields each entry has, which matters since there is no output schema to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional parameter with 100% schema description coverage, and the description's enumeration of the three sort values merely restates the schema's own 'volume', 'tradeCount', 'deposit' list. It adds no default behavior or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get top HyperLiquid perp traders') plus the three ranking dimensions, which separates it from get_hl_top_traders_by_pnl (PnL-ranked) by implication. It does not explicitly name the near-duplicate sibling get_top_traders, so an agent must infer the difference from the 'HyperLiquid perp' qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The sort options imply when to pick this tool (volume/count/deposit ranking) and 'No auth' tells the agent no credentials are needed. However, it never says when NOT to use it or points to get_hl_top_traders_by_pnl / get_top_traders as alternatives for different ranking or venue needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_top_traders_by_pnlA
Read-only

Get top 30 HyperLiquid perp traders ranked by PnL. Data by day/week/month. No auth. Cached 15 min.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld, so the description carries useful extra load: no auth required, a 15-minute cache (important for freshness expectations), and a hard cap of 30 results. The 'data by day/week/month' clause is unexplained behaviorally since no parameter selects the window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short clauses, front-loaded with purpose, then granularity, auth, and caching. Telegraphese but every clause carries information; only the ambiguous 'data by day/week/month' phrase costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read tool with no output schema, the description covers what is returned (top 30 perp traders, ranked by PnL), auth requirements, and cache freshness. The unresolved day/week/month wording is the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline would be 4, but the description claims 'Data by day/week/month' without any parameter to choose a period. That raises a question the schema cannot answer and slightly undermines confidence in what a call returns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'top 30 HyperLiquid perp traders ranked by PnL'. This clearly separates it from generic siblings like get_top_traders and get_top_tokens, though it never explicitly contrasts with the near-identical get_hl_top_traders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance beyond the implicit 'want top perp traders by PnL'. It does not address the obvious overlap with get_hl_top_traders or get_top_traders, which an agent must disambiguate on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_trade_historyB
Read-only

Get trade history on HyperLiquid for a wallet. No auth required.

NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful trait beyond annotations ('No auth required'), but says nothing about pagination, time-window limits, or result size for what is presumably a long historical list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the resource and venue; no filler and nothing buried. Every clause carries signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with annotations and no output schema, the description covers the essentials of calling it. However, with no output schema there is a real gap: it never indicates what a 'trade history' record contains or whether results are bounded, which an agent needs to consume the response sensibly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema fully documents walletAddress. The description's 'for a wallet' merely echoes that parameter without adding format or chain-specific details, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (trade history), venue (HyperLiquid) and scope (a wallet). This distinguishes it from the generic sibling get_trade_history, though the relationship between the two is left implicit rather than called out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no exclusions, and no routing between this and the near-identical sibling get_trade_history. 'No auth required' is context, not usage direction; the agent must infer that this is the HyperLiquid-specific variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_hl_user_statsA
Read-only

Get detailed trading stats for an HL user: daily PnL, volumes, trade counts, win rates. No auth. Cached 1 hr.

NameRequiredDescriptionDefault
userAddressYesEVM wallet address (managed wallet, not control wallet)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds value beyond them by disclosing auth requirements ('No auth') and a caching duration ('Cached 1 hr'), useful traits not present in structured fields. Return format is only partially touched on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and the metric list first, operational constraints last. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description sensibly enumerates the returned stats and notes auth and caching, which is most of what an agent needs. Minor gaps remain: no pagination, time-range, or formatting detail for the returned metrics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single userAddress parameter is already fully documented by the schema, including the managed-vs-control wallet distinction. The description's 'for an HL user' adds no syntax or format detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (trading stats for an HL user) and enumerates the returned metrics: daily PnL, volumes, trade counts, win rates. An agent can tell what it delivers, though it never names a sibling (e.g. get_wallet_performance, get_hl_trade_history) it should be preferred over.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'No auth. Cached 1 hr.' gives an operational precondition and freshness hint, implying the tool is a cheap, safe read. However, there is no explicit when-to-use or when-not-to-use guidance against the many overlapping stats/performance siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_limit_ordersB
Read-only

List active limit orders for a user on a specific chain. Requires session-key auth.

NameRequiredDescriptionDefault
dataNoEncrypted session key from buildGdexUserSessionData()
userIdNoControl wallet address
chainIdYesNumeric chain ID
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds the session-key auth requirement, which is real context, but says nothing about whether filled/cancelled orders are excluded, whether results are paginated, or what the response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the core scope front-loaded before the auth prerequisite, with no filler. It is appropriately sized for a simple read tool, though minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does not state what fields the list returns or how many. Combined with the lack of pagination/filtering notes, the definition is adequate but leaves gaps for a four-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters (data, userId, chainId, accountRef) are documented in the schema itself. The description only gestures at 'a user' and 'a specific chain', adding phrasing but no new semantics such as whether userId or accountRef takes precedence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List active limit orders') with clear scope ('for a user on a specific chain'). It implicitly separates itself from perp-oriented siblings like get_hl_open_orders, but never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Requires session-key auth' clause gives a usable prerequisite, so an agent knows a session must exist first. There is still no guidance on when to pick this over sibling reads such as get_hl_open_orders or get_hl_open_orders/cancel-order flows, leaving the choice to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_live_statusB
Read-only

Livestream status for a single token address.

NameRequiredDescriptionDefault
addressYesToken mint / contract address

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and external-access profile is covered. The description adds no behavioral detail such as freshness, error behavior, authentication needs, or what the status represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It communicates the tool's scope immediately and is appropriately sized for a one-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations, a fully documented schema, and no output schema, the definition is minimally adequate. However, it does not explain what the livestream status contains or how an agent should interpret the result, leaving a meaningful gap for a status-returning tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single address parameter is fully documented in the schema as the token mint/contract address. The description adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: livestream status for a single token address. This distinguishes it from list-oriented siblings such as get_currently_live, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The single-token scope is implied, but the description does not state when this lookup is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mark_priceB
Read-only

Get the current mark price for a HyperLiquid asset. No auth required.

NameRequiredDescriptionDefault
coinYesAsset symbol, e.g. 'BTC', 'ETH'

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered by structured data. The description adds one genuinely useful behavioral fact — no authentication is needed — which the annotations do not encode. It says nothing about rate limits, staleness of the mark price, or behavior for unknown symbols.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core purpose front-loaded and the auth note trailing. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, annotation-covered read with one fully documented parameter and no output schema, the description covers purpose and auth. Minor gaps remain — whether the price is perp vs spot and what happens on an invalid symbol — but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage, the schema already documents 'coin' with an example ('BTC', 'ETH'). The description adds no format, casing, or validity constraints beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('current mark price for a HyperLiquid asset'), so an agent knows exactly what it returns. It does not explicitly distinguish itself from the closely related sibling get_all_mid_prices (singular vs bulk), leaving that inference to the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance and names no alternatives, even though get_all_mid_prices and get_native_prices sit adjacent and overlap in intent. The only usage-adjacent signal is 'No auth required', which speaks to prerequisites rather than tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_native_pricesB
Read-only

Get current native token prices (ETH, SOL, SUI, BNB, ...) keyed by chain.

NameRequiredDescriptionDefault
chainIdsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, and "current" adds a freshness cue. But there is no disclosure of update latency, rate limits, or how chains without a price are handled, so the added behavioral context is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler, well matched to a one-parameter lookup tool. It is efficient rather than padded, though it is arguably terse enough to leave needed detail out.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with annotations covering safety, the description is mostly adequate, but with no output schema and zero parameter documentation an agent still lacks chain ID format, default/fan-out behavior, and the shape of the chain-keyed result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single chainIds parameter, so the description must compensate; "keyed by chain" hints that chains drive the result set, but it never states accepted chain ID formats (string vs number) or default behavior when omitted. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ("Get current native token prices") and scopes it with examples (ETH, SOL, SUI, BNB) plus "keyed by chain." It does not distinguish itself from price-adjacent siblings like get_all_mid_prices or get_mark_price, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this versus other price tools, no prerequisites, and no note on what happens if chainIds is omitted. The agent must infer usage entirely from the name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newest_tokensC
Read-only

Get newest tokens across all chains (or a specific chain).

NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only scoping info, disclosing nothing about pagination behavior, result ordering, result limits, or what 'newest' is measured against. It largely restates the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is tight, though the brevity comes partly from under-specification rather than disciplined concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations covering result shape, so the description should explain the return set and pagination but does not. For a discovery/list tool with three undocumented query parameters, this leaves the agent guessing at invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Three parameters (page, chain, limit) with 0% schema description coverage, so the description must carry the burden and does not. It never explains what 'page' does, the default/max for 'limit', or whether 'chain' is a name, id, or either despite the string|number type union.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (get) and resource (newest tokens) and states the scope (all chains, or one chain). 'Newest' gives it a distinct identity versus siblings like get_trending_tokens and get_top_tokens. However it never names or contrasts those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no alternatives mentioned, despite many overlapping token-discovery siblings (get_top_tokens, get_trending_tokens, get_bigbuys, get_xstocks). The parenthetical about a specific chain is the only hint about invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_nof1_analyticsC
Read-only

Get NoF1 advanced trader analytics for a wallet.

NameRequiredDescriptionDefault
chainNo
walletAddressYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is known. The description adds only a vague scope ('for a wallet') and does not disclose what analytics are returned, data freshness, rate limits, or any other behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. Its brevity is appropriate structurally, though the content is underspecified rather than overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With two undocumented parameters, no output schema, and no explanation of what 'NoF1 advanced trader analytics' includes, the definition is too thin for an agent to understand what it will receive or how to interpret the chain argument.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. The description mentions 'wallet' and thus partially implies walletAddress, but it says nothing about the optional chain parameter or accepted formats. It does not compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb and resource ('Get ... analytics') and a target ('for a wallet'), but 'NoF1 advanced trader analytics' is not defined and does not clearly distinguish it from sibling tools such as get_wallet_performance, get_hl_user_stats, or get_top_traders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, what prerequisites are needed, or what conditions make it appropriate. The phrase 'for a wallet' gives context but not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ohlcvB
Read-only

Get OHLCV candlestick data for a token. No auth.

NameRequiredDescriptionDefault
toNoEnd Unix timestamp
fromNoStart Unix timestamp
chainYesChain identifier
limitNoNumber of candles
resolutionYesCandle resolution
tokenAddressYesToken contract address

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a genuine behavioral fact – no authentication is required – but omits pagination, default limit, and how resolution interacts with the from/to range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the purpose before the auth note. Nothing is wasted, though the sparse content borders on under-specification for a six-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should carry return-shape context; it names 'OHLCV candlestick data' but says nothing about ordering, pagination, or default time ranges. The schema covers parameters, but time-series-specific behavior is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (tokenAddress, chain, resolution, from, to, limit) are already documented in the schema. The description adds no syntax, format, or default-value meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and a distinctive resource (OHLCV candlestick data) scoped to a token. No sibling exposes candlestick data, so the agent can differentiate it, though the description never says so explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal is 'No auth,' which is a precondition rather than guidance on when to use this tool versus alternatives like get_token_trades or get_mark_price. No when/when-not conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_perp_positionsB
Read-only

Get all open perpetual positions for a wallet on HyperLiquid. No auth required.

NameRequiredDescriptionDefault
coinNoOptional filter to specific asset, e.g. 'BTC'
walletAddressYesWallet address to query

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds a genuinely useful operational fact ('No auth required'), which lowers the barrier to calling it. It stops short of saying what an empty result means or whether closed positions are excluded over time.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core operation, and every clause carries information the agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with full schema coverage and no output schema, the description is nearly sufficient. A note that the coin filter narrows results would have made it complete, since a reader of the description alone would not know filtering is possible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both walletAddress and the optional coin filter are documented in the schema, including an example ('BTC'). The description adds nothing about them, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('open perpetual positions'), scope ('for a wallet') and venue ('HyperLiquid'). It does not explicitly differentiate from close-adjacent siblings like gdex_positions or get_hl_clearinghouse_state, but the read-only 'open positions for a wallet' framing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives such as gdex_positions, get_hl_clearinghouse_state, or get_account_state. Usage is only inferable from the wording 'for a wallet'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_portfolioA
Read-only

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.

NameRequiredDescriptionDefault
dataNoEncrypted session data, instead of sessionPrivateKey + apiKey
chainYesChain to read (holdings are per chain)
apiKeyNoGDEX API key (with sessionPrivateKey)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address (the GDEX userId), not the managed trading wallet
sessionPrivateKeyNoSession private key from sign-in (with apiKey)

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's added detail that it 'errors instead of returning an empty portfolio when the read fails' is genuine extra behavioral context an agent cannot get from the annotations. It also names the session requirement, adding useful operational transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the resource and scope, then return fields, then the session/error note. No filler, though the field enumeration is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the description adequately covers what is returned (raw/decimal balances, price, native value, P&L), the session prerequisite, and failure behavior. It stops short of noting pagination or chain-specific caveats, but it is largely complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all six parameters including accountRef and chain. The description reaffirms the accountRef/session requirement and per-chain scoping but adds no syntax or format detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific resource (token holdings) and scope (managed GDEX wallet, one chain) plus the endpoint /v1/portfolio, and enumerates returned fields. An agent can tell it reads portfolio holdings rather than order history or generic balances, though it never names the sibling tools it is distinct from (e.g., get_wallet_info, get_balances).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'Needs the session (accountRef)' and 'one chain' hint at prerequisites, but the description never says when to choose this over the many sibling read tools like get_balances or gdex_positions. No explicit when/when-not guidance or alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_retailersC
Read-only

List registered retailer integrations / branded onboarding partners.

NameRequiredDescriptionDefault
retailerNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-world behavior are covered. The description adds no further behavioral context such as authentication needs, pagination, or return characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. However, the slash-separated phrasing is slightly vague rather than tightly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with annotations covering safety and open-world behavior, the description is minimally adequate. It omits any explanation of the optional retailer parameter and offers no usage context, leaving clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one optional 'retailer' parameter with 0% description coverage, and the description does not explain its meaning, format, or filtering behavior. It fails to compensate for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource: 'List registered retailer integrations / branded onboarding partners.' It tells the agent this is a read/list operation over retailer integrations, though it does not differentiate from any sibling tool because none appears directly comparable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when not to use it, or which alternatives to prefer. The agent must infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sdk_patternB
Read-only

Get TypeScript code patterns for common GDEX SDK operations. Returns working code examples.

NameRequiredDescriptionDefault
operationYesThe SDK operation to get code patterns for

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=false, so safety and locality are covered. The description adds one useful behavioral fact beyond that — it returns executable code rather than prose — but says nothing about output shape (snippet vs. full file, imports included, TypeScript version) or whether results are cached/static.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, the purpose front-loaded before the return-value note, with no filler. It is efficient, though the second sentence is close to restating the first's implication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations covering return format, the description should carry that burden. It says 'working code examples' but not what those examples contain or how they relate to the sibling guide tools, so an agent knows what it will get only in outline.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'operation' parameter is a fully enumerated 12-value list, so the schema does the heavy lifting. The description adds nothing about the parameter — it does not clarify that the enum value selects which pattern family is returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete verb and resource: retrieve TypeScript code patterns for GDEX SDK operations, plus the return artifact (working code examples). It is clear on its own, but it never distinguishes itself from doc-shaped siblings such as search_gdex_docs, get_component_guide, or get_skill_file, leaving the agent to guess which reference source to reach for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no named alternative. In a sibling set containing at least four other documentation/guide tools, the absence of any routing rule is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_skill_fileA
Read-only

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.

NameRequiredDescriptionDefault
pathNoFile path relative to the skill directory, e.g. "scripts/hl_anomaly.py"
skillYesSkill name, e.g. "gdex-hl-anomaly"

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds one genuine behavioral detail beyond that: omitting path returns a listing rather than file contents. It says nothing about auth requirements, file size limits, or error behavior when a path doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, with the core purpose front-loaded and the optional-parameter behavior immediately after. No filler or restated schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with no output schema, the description covers what the tool returns (file contents, or a file listing when path is omitted). It is nearly complete; the only omission is any note about failure modes for invalid skill names or paths.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not: 'path' is optional and omitting it switches the tool into a directory-listing mode. That is a meaningful behavioral meaning layered on top of the schema's simple 'File path relative to the skill directory'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Read a file that ships with a GDEX skill', with a concrete example (gdex-token-risk scripts/token_risk.py). An agent can distinguish it from siblings like search_gdex_docs or get_sdk_pattern, though the description never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The conditional 'Omit path to list the skill's files' gives one clear behavioral rule, which is useful usage guidance. However, there is no explicit when-to-use-vs-alternatives guidance (e.g. how this differs from search_gdex_docs or get_component_guide), so the agent must infer the selection context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_detailsB
Read-only

Get detailed token info: price, market cap, liquidity, DEX pools, social links, security info. No auth.

NameRequiredDescriptionDefault
chainYesChain identifier
tokenAddressYesToken contract address

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond annotations by stating 'No auth,' but discloses nothing about rate limits, caching, or failure modes for unknown tokens/chains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the verb and packs the return fields compactly. Efficient, though the field list is a comma run rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns and does so by enumerating the info categories. For a simple two-parameter read tool this is largely complete, missing only error/edge-case behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (tokenAddress, chain) are already documented in the schema. The description adds no format hints (e.g. accepted chain identifiers) beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (token details) and enumerates the returned fields (price, market cap, liquidity, DEX pools, social links, security), which meaningfully separates it from narrow siblings like get_token_image or get_token_trades. It doesn't explicitly name those alternatives, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of the many sibling token tools (get_token_trades, get_token_image, get_top_tokens). The agent must infer applicability from the field list alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_imageC
Read-only

Get server-rendered token social-card image metadata.

NameRequiredDescriptionDefault
chainYes
tokenAddressYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description's 'server-rendered ... image metadata' subtly clarifies that this returns metadata rather than a raw image, which is useful, but it says nothing about the response shape, whether an image URL is included, or CDN/caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with no filler and the key qualifier ('server-rendered', 'metadata') up front. Nothing wasted, though it is arguably too terse to carry the tool's semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-required-parameter tool with no output schema and zero schema description coverage, the description leaves both parameter semantics and return content unexplained. Only the annotations carry the operational profile, and the gaps are material.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither parameter is described in the description. The tool requires tokenAddress and chain, yet the description never mentions either, and notably does not clarify the accepted chain identifier format (string or number per the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and a precise resource ('server-rendered token social-card image metadata'), which is distinctive among the get_* token siblings. It does not explicitly contrast itself with any sibling, but the resource is narrow enough to be unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this tool versus alternatives such as get_token_details or get_token_trades, no prerequisites, and no exclusions. The agent is left to infer usage entirely from the resource name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_tradesC
Read-only

Recent trades for a specific token.

NameRequiredDescriptionDefault
pageNo
chainYes
limitNo
tokenAddressYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds only that results are 'recent', with no statement about ordering, whether results span all chains or the required one, pagination behavior despite page/limit params, or result volume. With annotations carrying the safety burden, the marginal behavioral contribution here is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is good structurally. However, at this length it reads as under-specification rather than economy — the brevity is not compensating for real gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Incorrect assessment placeholder removed — see revised: For a 4-parameter read-only query with no output schema and 0% schema coverage, the description leaves the agent without the chain requirement, pagination contract, or result shape. It is not sufficient to call the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it does not. It only hints at tokenAddress; the required 'chain' parameter, its accepted string/number union, and the page/limit pagination semantics are entirely undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a recognizable operation (fetch recent trades) scoped to a token, so the core purpose is inferable. But with many siblings in the trade-history space (get_trade_history, get_hl_trade_history, get_hl_tx_list, get_token_details), the one-liner gives no basis for distinguishing this from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative-naming guidance is present. The agent is left to guess how this differs from get_trade_history or get_token_details on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_tokensC
Read-only

Get top tokens by volume / market cap.

NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered, but the description adds nothing beyond that: no pagination behavior, no chain scoping, no indication of how results are ranked or how many are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, and the resource is front-loaded. It is efficiently sized, though the brevity comes at the cost of the missing detail scored elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With three undocumented parameters, no output schema, and a large sibling set of token-listing tools, the description is too thin. An agent cannot tell which ranking is used, whether results are paginated, or how to scope by chain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description names none of the three parameters (page, chain, limit). The 'chain' parameter in particular is never hinted at, so an agent has no guidance that results can be scoped to a specific chain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a verb and resource ('Get top tokens') and names two possible ranking criteria, but leaves it ambiguous which one actually governs the ordering. It does not distinguish itself from siblings like get_trending_tokens or get_newest_tokens, which an agent would need to choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the closely related siblings (get_trending_tokens, get_newest_tokens, get_token_trades). The agent must infer from the name alone when this list is the right one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_tradersC
Read-only

Get top performing trader wallets ranked by P&L, win rate, volume, or trade count.

NameRequiredDescriptionDefault
chainNo
limitNo
periodNo7d
sortByNopnl

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. Beyond that the description adds nothing behavioral: no data source, freshness, pagination, or chain coverage. For a ranking/analytics tool with zero schema documentation, this leaves real gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the resource and ranking criteria front-loaded. No wasted words, though it is arguably too terse given the undocumented parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 undocumented parameters, no output schema, and no annotations covering return behavior, the description is too thin: it never explains what a 'top trader' record contains, how many are returned, or what chain accepts. An agent can call it, but cannot predict the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It names the sort dimensions (P&L, win rate, volume, trade count) but ignores chain, limit, and period entirely, and adds no format or constraint detail beyond the enum values already visible in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (top performing trader wallets) plus the ranking dimensions. It is clear what the tool returns, though it never distinguishes itself from close siblings like get_hl_top_traders or get_hl_top_traders_by_pnl, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g. which chains are supported), and no routing to alternatives such as get_hl_top_traders or get_wallet_performance. The agent must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trade_historyA
Read-only

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.

NameRequiredDescriptionDefault
chainYesChain identifier
limitNoTrades per page, 1-50 (default 50)
cursorNonextCursor from the previous page
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address (the GDEX userId)
sessionPrivateKeyNoNot needed (history is keyed by the control wallet); present so accountRef can fill walletAddress

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/openWorld, so the bar is low; the description still adds real behavior — results are filtered to successful trades only, ordered newest first, scoped to a single chain, and keyed by the control wallet. It also clarifies that sessionPrivateKey is not required, which is non-obvious. It stops short of describing pagination termination or result fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned before pagination mechanics, and every clause carries information. Minor density from stacked parentheticals (endpoint path, keying note, page parameters) keeps it from being perfectly clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list with no output schema and fully documented parameters, the description covers scope, filtering, ordering, and pagination adequately. It leaves out how pagination ends (e.g., null nextCursor) and what fields each trade contains, which an agent would otherwise have to discover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents chain, limit, cursor, accountRef, walletAddress, and sessionPrivateKey. The description's limit/cursor statements largely restate the schema; its only genuine addition is explaining that history is keyed by the control wallet, which is why the private key is unnecessary. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (spot trades of a GDEX account), plus meaningful qualifiers — 'successful', 'on one chain', 'newest first' — that scope the result precisely. The GDEX/spot framing also implicitly separates it from the Hyperliquid sibling get_hl_trade_history, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives operational guidance for retrieval (keyed by control wallet, page with limit and cursor) but never states when to choose this over get_hl_trade_history, get_token_trades, or get_portfolio, nor any prerequisites such as needing a connected account first. Usage is implied by the resource, not spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trader_leverageA
Read-only

Get the active leverage setting a trader uses for a specific coin on HyperLiquid.

NameRequiredDescriptionDefault
coinYesAsset symbol
traderWalletYesTrader wallet address

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only that the leverage setting is 'active' and scoped to a specific coin on HyperLiquid; it does not disclose what happens if the trader has no position or how errors are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no redundant or filler content. It is appropriately sized for a simple getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with annotations and a fully described two-parameter schema, the description is largely complete. It could say more about the returned leverage value, but no output schema exists and the core operation is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the two required parameters are already documented. The description reinforces that the query is for a specific coin and trader but adds no syntax, format, or validation detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: getting a trader's active leverage setting for a specific coin on HyperLiquid. It is clear enough to distinguish from the sibling set_leverage by implication, but it does not explicitly name or contrast with that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the read-only getter phrasing, but the description gives no explicit guidance on when to use this versus set_leverage or other account-state tools, and no prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trading_fundsA
Read-only

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.

NameRequiredDescriptionDefault
dataNoEncrypted session data, instead of sessionPrivateKey + apiKey
chainYesChain identifier
apiKeyNoGDEX API key (with sessionPrivateKey)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address (the GDEX userId), not the managed trading wallet
sessionPrivateKeyNoSession private key from sign-in (with apiKey)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's added value is the disclosure that the balance is approximate because it comes from a backend float, and that the response bundles a wallet address. That is genuine context beyond structured fields; it just doesn't cover auth/session requirements, which the params handle.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the primary return value, followed by the precision caveat and the sibling pointer. The endpoint token '(/v1/user)' is borderline noise but not harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of explaining returns and does so (balance plus per-family managed wallet address, approximate value). An agent has enough to call and interpret it; only auth/session mechanics are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all six parameters including accountRef and walletAddress are already documented. The description reinforces that chain is a single identifier and that the returned address is the managed wallet, not the control wallet, but adds little beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific resource (native balance tradable by the managed GDEX wallet) and adds a second returned value (managed wallet address per chain family). It is clearly distinguishable from usdc_get_balances, though the boundary with get_balances/get_usdc_balance/get_wallet_info is not addressed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes cross-chain USDC lookups to usdc_get_balances and scopes this tool to a single chain. It stops short of saying when to prefer this over get_balances or get_wallet_info, so it is clear context without full exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_trading_guideB
Read-only

Get a complete trading guide for spot, perp, or limit order trading.

NameRequiredDescriptionDefault
typeYesTrading type: spot, perp, or limit

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the word 'complete' and the three trading types, but does not say what the guide contains (steps, code samples, required accounts) or how it is shaped. Marginal value beyond structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no filler and the resource named upfront. It is efficient, though its brevity comes at the cost of detail rather than being a model of front-loaded information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool with full schema coverage this is close to adequate. However, with no output schema, the agent still does not know what a 'guide' returns — markdown text, ordered steps, code — which matters for deciding whether to call it during a trading workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single fully-documented enum parameter, so the schema carries the burden. The description merely repeats 'spot, perp, or limit' without adding guidance on which type to choose or how the guide differs per type. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a complete trading guide') and scopes it to spot, perp, or limit via the enum. It is clearly a documentation/instruction tool, distinct from execution siblings like execute_spot or limit_buy. It does not, however, differentiate itself from other guide-type siblings such as get_component_guide or get_copy_trade_guide.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this should be called before trading to learn the flow, and the type enum hints at picking a modality. There is no explicit when-to-use, no prerequisites, and no statement of when a different guide or docs tool is the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usdc_balanceB
Read-only

Get USDC balance on HyperLiquid for a wallet. No auth required.

NameRequiredDescriptionDefault
walletAddressYesWallet address to query

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is mostly covered structurally. The description adds 'No auth required,' which is helpful behavioral context, but it does not discuss return freshness, wallet-not-found behavior, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the key scope and auth constraint front-loaded. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool, the description plus annotations are enough to call it correctly. It would be slightly stronger if it clarified the returned balance format or missing-wallet behavior, since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and walletAddress already has a schema description. The tool description adds no parameter-level detail beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: get USDC balance on HyperLiquid for a wallet. The purpose is clear, but it does not distinguish itself from nearby siblings such as usdc_get_balances, get_balances, or get_hl_spot_state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives like usdc_get_balances or get_balances. 'No auth required' is useful context, but it is not usage guidance or an exclusion rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wallet_infoA
Read-only

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.

NameRequiredDescriptionDefault
dataNoEncrypted session data, instead of sessionPrivateKey + apiKey
chainYesChain identifier
apiKeyNoGDEX API key (with sessionPrivateKey)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address (the GDEX userId), not the managed trading wallet
sessionPrivateKeyNoSession private key from sign-in (with apiKey)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and openWorldHint, but the description adds substantive behavior: the native balance is approximate, the data is sourced from two distinct endpoints (/v1/user and /v1/portfolio), and a session is mandatory. The one unexplained behavior is why a session is required for a read-only summary, but overall this is well beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the returned fields front-loaded, followed by the session requirement and the address-only exclusion. Every clause carries information; nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of naming the return fields (address, approximate native balance, token count, USD total), which is exactly what an agent needs. It covers the mandatory session requirement and the key limitation; a brief note on staleness or refresh behavior would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description's note that accountRef carries the session and that walletAddress alone cannot be used does add a bit of semantic value, but it doesn't explain the chain parameter or the data/apiKey/sessionPrivateKey alternatives beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names the specific resource — a summary of the managed GDEX wallet on one chain — and enumerates exactly what is returned (managed address, native balance, token count, USD total), which tells an agent what it gets without opening the schema. It does not explicitly differentiate itself from siblings like get_balances, get_portfolio or get_trading_funds, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides one real usage constraint — a session/accountRef is required and there is no address-only read — which is genuinely useful gating information. However, it never says when to prefer this over get_balances, get_portfolio or get_account_state, so the agent must infer the choice among overlapping read tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_wallet_performanceC
Read-only

Get wallet performance / PnL summary across recent periods.

NameRequiredDescriptionDefault
chainNo
periodNo
walletAddressYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds some behavioral context with "PnL summary across recent periods," but does not explain authentication needs, period boundaries, rate limits, or what the summary contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though the brevity comes at the cost of missing operational detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has three undocumented parameters, no output schema, and no description of what a performance/PnL summary returns. For an analytics query with 0% schema coverage, the description leaves too much for the agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It vaguely implies a period parameter via "recent periods" and a wallet via "wallet performance," but never explains chain, walletAddress format, or valid period values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: getting wallet performance or PnL summary. It is clear what data class is being retrieved, but it does not distinguish itself from nearby analytics siblings like generate_pnl, get_portfolio, or get_hl_user_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives no explicit guidance on when to use this tool versus alternatives, nor any prerequisites such as whether the wallet must be authenticated or indexed. The phrase "across recent periods" implies a time-scoped query but does not specify when this is the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchlistC
Read-only

Fetch the user's watchlist.

NameRequiredDescriptionDefault
dataNo
userIdNo
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare `readOnlyHint: true` and `openWorldHint: true`, so safety and open-world behavior are covered. The description adds no further behavioral context, such as whether authentication is required, what the watchlist contains, or whether results are paginated. It merely restates the read action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with zero wasted words. It is concise and easy to parse, though its terseness contributes to gaps covered in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three parameters and no output schema, the description should at least clarify the opaque `data` parameter and the authentication role of `accountRef`. It provides none of that, nor does it describe what the returned watchlist includes. The annotations help with safety, but the description is not complete enough to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, with `data` and `userId` undocumented and only `accountRef` described. The description does not compensate by explaining `data`, `userId`, or how `accountRef` supplies session credentials, apart from the weak implication of "user's" watchlist. It adds almost no parameter meaning beyond the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Fetch" the "watchlist." It is clearly a read operation and is distinguishable from the sibling `change_watchlist` by verb. It does not explicitly mention that it is user-scoped beyond the possessive "user's," but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives, nor any prerequisites such as being connected via `gdex_connect`. It only states what the tool does, leaving all usage decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_xstocksC
Read-only

List tokenised equities (xStocks).

NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and openness profile is covered. The description adds nothing beyond that: it does not mention pagination behaviour, whether the list is exhaustive, how chain filtering affects results, or any rate/coverage caveats that would matter for an open-world directory listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler and the key noun front-loaded, which is efficient. But the brevity crosses into under-specification for a tool with filtering and paging behaviour that the reader needs to know about.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so return values are undocumented, and the three request parameters are undocumented in both schema and description. For a list/pagination tool with an openWorld annotation, the definition omits what the agent needs in order to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and none of the three parameters (page, limit, chain) are explained in the description, not even their existence. With three fully undocumented parameters the description should carry the burden and does not, so this is worse than the baseline for fully documented or zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and a specific resource ('tokenised equities (xStocks)'), so the agent knows exactly what is returned. It does not, however, contrast itself with the many other token-listing siblings such as get_trending_tokens, get_top_tokens, or get_zora_tokens, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, no prerequisites, and no pointer to alternatives among the many list-style siblings. An agent must guess whether this is a full directory listing or a filtered one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zora_tokensC
Read-only

List Zora-protocol tokens.

NameRequiredDescriptionDefault
pageNo
chainNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds nothing beyond that. It does not mention pagination behavior, chain support, result ordering, or what the open-world listing actually returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. Although terse, it is structurally clean and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three undocumented parameters, no output schema, and open-world listing behavior, the description is too incomplete. It omits key operational details like pagination, chain filtering, and expected return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain any of the three parameters ('page', 'chain', 'limit'). An agent receives no guidance on accepted chain formats, pagination semantics, or limit bounds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('Zora-protocol tokens'), making the basic operation clear. However, it does not distinguish this from sibling token-listing tools such as get_top_tokens, get_newest_tokens, or get_trending_tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, nor any mention of prerequisites or exclusions. The agent must infer usage entirely from the name and sparse description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_builder_referralC
Read-only

Get builder-referral metadata for a wallet.

NameRequiredDescriptionDefault
userAddressYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that—no auth expectations, rate limits, caching behavior, or what kind of referral metadata is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no wasted words. It is appropriately concise, though the brevity leaves the purpose underspecified rather than over-explained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read this is still thin: there is no output schema, and the description does not clarify what 'builder-referral metadata' contains or what address format userAddress expects. An agent can call it, but cannot confidently predict what it will receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has only one parameter, userAddress, with 0% description coverage. The phrase 'for a wallet' weakly maps this to a wallet address, but the description does not specify format, chain, or validation expectations, so it does not compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and resource ('builder-referral metadata') scoped to a wallet. It is clear what the tool does, but it does not distinguish this from nearby siblings such as hl_ref_info or hl_ref_claim.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The agent must infer usage solely from the one-line purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_cancel_outcome_orderA
Destructive

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.

NameRequiredDescriptionDefault
coinNoSide coin "#<assetId>" of the order
apiKeyNoStructured mode: API key
orderIdNoNumeric Hyperliquid oid
outcomeIdNo
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
computedDataNoPre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields).
walletAddressNoStructured mode: CONTROL wallet address from sign-in (not the managed address)
sessionPrivateKeyNoStructured mode: session private key

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true, so safety is partly covered. The description adds real behavioral context beyond annotations: partial fills before the cancel remain in the position, and it enumerates the auth inputs (apiKey, sessionPrivateKey, control walletAddress) required in structured mode. It does not describe the response or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then mode-specific requirements and the partial-fill caveat. Dense but every sentence carries information. Slightly run-on, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, 0-required mutation tool with no output schema, the description covers mode selection, credential requirements, parameter provenance, and post-cancel state. It lacks any note on error conditions or confirmation behavior, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 88%, so the baseline is 3, but the description adds meaning the schema lacks: coin 'must belong to outcomeId', orderId's origin and numeric-oid nature, walletAddress as the control wallet, and the mutual exclusivity of computedData vs. structured fields. That is meaningful guidance beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Cancel a resting HIP-4 outcome order.' That is far more precise than the bare name. However, it never contrasts itself with the closely-named sibling hl_close_outcome_order, so an agent must infer that 'cancel' (resting order) differs from 'close' (position).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the two invocation modes (structured vs. pre-built with computedData alone) and where orderId comes from (hl_create_outcome_order or hl_outcome_account openOrders), which is genuinely useful routing. But there is no explicit when-to-use-this-vs-alternative guidance, especially against hl_close_outcome_order and the generic cancel/update order tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_close_outcome_orderA
Destructive

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.

NameRequiredDescriptionDefault
coinNoSide coin "#<assetId>" from hl_outcomes sides[].coin. Give exactly one of coin / sideIndex / sideLabel.
sizeNoContracts to sell; omit for the full position
priceNoLimit price (omit for isMarket)
apiKeyNoStructured mode: API key
isMarketNo
outcomeIdNo
sideIndexNoSide index in sides[] (sides are NOT always Yes/No; read the labels)
sideLabelNoExact side label from sides[].label, e.g. "No" or a team name
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
computedDataNoPre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields).
walletAddressNoStructured mode: CONTROL wallet address from sign-in (not the managed address)
managedAddressNoManaged wallet; enables position-aware partial-exit checks
sessionPrivateKeyNoStructured mode: session private key

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructive/openWorld annotations, it discloses important behavior: the backend always sells and cannot short, size is capped to the held position, omitting size exits fully, managedAddress partial exits must leave both parts >= 11 quote, and settled markets have no book. These are material operational constraints not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the action and constraint, then moves into structured-mode and pre-built-mode requirements. Despite covering many constraints for a 13-parameter tool, every clause carries operational meaning and there is no obvious filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 13-parameter tool with no output schema, the description covers mode selection, required field combinations, partial-exit limits, and the settled-market caveat. It leaves some gaps around accountRef-based credential flow and error/return behavior, but annotations and schema cover part of that ground.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high at 85%, so the baseline is 3, but the description adds useful semantics: size is in whole contracts, omit size for a full exit, the backend caps size, and exactly one of coin/sideIndex/sideLabel is needed. It also groups structured vs pre-built mode parameters. It does not mention every schema field, such as accountRef, so it is strong but not exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource: 'Exit a HIP-4 outcome position by SELLING held side tokens.' It also clarifies the critical sell-only constraint, which separates it from opening or shorting. It does not explicitly name sibling alternatives, so it falls just short of the highest clarity tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational context: use structured mode with the listed fields, or pre-built mode with computedData alone. It also explains the settled-market case ('GDEX has no claim endpoint, check the HL spot balance instead'), which is a useful when-not alternative. It does not explicitly route against hl_create_outcome_order or hl_cancel_outcome_order, so 4 rather than 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_create_outcome_orderA
Destructive

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.

NameRequiredDescriptionDefault
coinNoSide coin "#<assetId>" from hl_outcomes sides[].coin. Give exactly one of coin / sideIndex / sideLabel.
sizeNoWhole contracts, e.g. "30"
isBuyNoStructured mode: true buys side tokens; false sells held tokens
priceNoLimit price, e.g. "0.42" (omit for isMarket)
apiKeyNoStructured mode: API key
isMarketNoTake the book at ±5% of top of book
outcomeIdNoStructured mode: outcome market id
sideIndexNoSide index in sides[] (sides are NOT always Yes/No; read the labels)
sideLabelNoExact side label from sides[].label, e.g. "No" or a team name
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
reduceOnlyNoIgnored by the backend
computedDataNoPre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields).
walletAddressNoStructured mode: CONTROL wallet address from sign-in (not the managed address)
managedAddressNoManaged wallet; enables position-aware sell checks
sessionPrivateKeyNoStructured mode: session private key

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations flag destructive/openWorld, and the description goes well beyond them: it discloses that orders are validated against the live market (side belongs to outcomeId, whole-contract size, price bounds and decimals, minimum notional, expired/settled rejection), that reduceOnly is ignored by the backend, and that the return status is resting/filled/rejected. That is substantial behavioral context an agent could not get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and mode split, and every clause carries validation detail. The structured-mode sentence is long and dense with nested constraints, which slightly hurts scannability, but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation with no output schema and no required fields declared, it covers mode selection, validation rules, and return statuses. It is only mildly incomplete: it does not spell out the accountRef-vs-explicit-secrets alternative or the prerequisite lookup for sides[], which an agent would need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot express: the walletAddress-is-control-address distinction, 'one of coin/sideIndex/sideLabel', 'price unless isMarket', and the full-position sell exemption tied to managedAddress.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: 'Place an order on a Hyperliquid HIP-4 outcome market.' This clearly separates it from siblings like hl_cancel_outcome_order, hl_close_outcome_order, and limit_buy, which are cancellation/close/CEX-style equivalents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names two operational modes (structured vs pre-built with computedData alone) and explains the structured path. It does not explicitly say when to prefer this over sibling order tools (limit_buy, execute_spot) or what precondition fetches (hl_outcomes sides[]) must precede it, so it is clear but lacks explicit alternatives/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
apiKeyNo
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
computedDataNo
walletAddressNoCONTROL wallet address from sign-in
sessionPrivateKeyNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so this is a known non-destructive write. The description adds that the call is one-time and that secrets may be supplied either directly or via a connected account (implying no secret in chat), which is useful. It does not describe failure modes, permissions, or what state changes on success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence that front-loads the purpose and prerequisite before the parameter guidance. Slightly run-on with the semicolon clause, but every element (one-time, order gating, param list, computedData alternative) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param setup tool with no output schema, the description covers intent and the two input paths but leaves gaps: which params are actually required, what the call returns, and what happens if it is invoked twice or on an unmanaged wallet. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 40% schema coverage, the description carries real weight: it enumerates apiKey, walletAddress (clarified as the control address), sessionPrivateKey, and states that pre-built computedData is an accepted alternative input path. That meaningfully supplements the schema, though it doesn't clarify required-vs-optional among the 5 params (schema lists 0 required).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Enable HL trading') for a specific target ('managed wallet'), and immediately qualifies it as one-time and required before outcome/HIP-3 orders. That scope plus the prerequisite framing lets an agent distinguish it from siblings like execute_spot or gdex_execute_trade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it: one-time setup, required before outcome/HIP-3 orders. It does not name a preferred alternative or exclusion beyond that, but the trigger condition is stated clearly rather than implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_list_user_copy_pnlC
Read-only

Per-user realised PnL from HL copy-trading.

NameRequiredDescriptionDefault
pageNo
limitNo
userAddressYes

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the word "realised", with no disclosure of data freshness, whether PnL is aggregated per copy-trade or across all, or what happens with unknown addresses — for an open-world read against external data this is thin added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no waste and the core concept front-loaded, but its brevity comes from omission rather than efficiency — the space saved is not reinvested in the parameter or usage detail an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter, paginated, external-data query tool with no output schema, the description should at least sketch the return shape (per-coin? per-copy-trade?), pagination semantics, and address format. None of that is present, so an agent has to guess before invoking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about the three parameters. userAddress is required but its expected format is undocumented, and page/limit (pagination) are entirely unexplained in both schema and description, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Per-user realised PnL from HL copy-trading" names the resource (PnL) and the domain (HL copy-trading), and "realised" mildly differentiates it from hypothetical/unrealised PnL tools. But it is close to a restatement of the tool name and does not clarify the unit, time window, or aggregation level versus siblings like get_hl_user_stats or get_copy_trade_tx_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this instead of the many sibling analytics tools (get_hl_user_stats, get_portfolio, get_wallet_performance, get_hl_copy_trade_list). No prerequisites, no mention of whether the user address must be an HL copy-trade participant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_outcome_accountA
Read-only

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.

NameRequiredDescriptionDefault
rawNo
outcomeIdYesOutcome market id from hl_outcomes
userAddressYesMANAGED wallet address (outcome balances live there)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful behavioral detail that raw=true returns the backend payload and that the default is a normalised shape. It says nothing about auth requirements for the managed wallet, error states, or freshness/latency, which keeps it at a solid 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource, then a dense but useful enumeration of the payload sections, then two short directive sentences. The parenthetical field lists are long but earn their place by standing in for the absent output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden and does so thoroughly by naming positions, openOrders, fills, and historicalOrders. Combined with readOnly annotations and mostly-covered params, an agent has enough to call and interpret it; only auth/error specifics for the managed wallet are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: the schema documents outcomeId and userAddress but leaves raw bare. The description compensates by explaining raw=true returns the backend payload, giving the one undocumented parameter concrete meaning. It does not restate the managed-wallet provenance for userAddress beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (normalised state of a MANAGED wallet on one HIP-4 outcome market) and enumerates the returned sections, so an agent knows exactly what comes back. It does not explicitly contrast itself with other read tools like hl_outcomes or get_hl_open_orders, but the wallet-scoped, per-market framing is distinctive enough to separate it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to reconcile after create/cancel/close' gives a clear when-to-use condition tied to the mutation siblings (hl_create_outcome_order, hl_cancel_outcome_order, hl_close_outcome_order). No explicit exclusions or alternative read tools are named, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_outcome_check_collateralA
Read-only

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.

NameRequiredDescriptionDefault
sizeNoIntended contracts
priceNoIntended limit price
quoteTokenNoMarket quoteToken from hl_outcomes (default USDC)
managedAddressYesMANAGED wallet address

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context: that this checks SPOT collateral (not the perp account) and that outcome buys draw on that spot balance, which explains the tool's role in a workflow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with the operation front-loaded and the rationale parenthetically attached. No wasted filler, though the parenthetical makes it slightly hard to parse on first read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description could ideally say what the check returns (e.g., sufficient/insufficient), which is a small gap. Otherwise it is complete enough: the agent knows what is being compared and which balance is relevant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are already documented in the schema. The description adds only a marginal hint that the check compares against size × price, but gives no syntax, defaults, or edge-case guidance beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Check) and resource (managed wallet's Hyperliquid SPOT balance of a market's quoteToken), and explains the semantic framing (collateral for outcome buys). An agent can identify the operation, though it does not name or contrast itself with any sibling like usdc_get_balances or hl_outcome_account.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through the parenthetical that outcome buys draw on spot collateral rather than the perp account, which hints this is a pre-trade sufficiency check. However, there is no explicit when-to-use, when-not-to-use, or named alternative, so the agent must infer the trigger condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_outcomesA
Read-only

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.

NameRequiredDescriptionDefault
rawNoReturn the raw backend payload instead
limitNoMarkets per page, default 20
queryNoCase-insensitive text match on title / side labels / params, or an exact outcomeId
stateNoFilter by trading state, e.g. "active"
detailNoFull market records (rules, params, settlement). Default: compact rows
offsetNoPagination offset (use nextOffset)
sortByNovolume: highest 24h volume first (implies withVolume); expiry: soonest first
withVolumeNoAttach 24h volume (bounded by volumeTimeoutMs, default 2500)
excludeFallbackNoHide "none of the listed outcomes" legs
volumeTimeoutMsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds genuinely new behavior: that withVolume performs a bounded wait, that raw returns the backend payload unchanged, that quoteToken collateral sits in the HL spot balance, and that settlement cannot be claimed via GDEX. It stops short of stating rate limits, pagination limits, or auth prerequisites, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose then return shape, with no filler sentences. It is a single dense paragraph rather than structured bullets, which marginally hurts scannability for ten parameters, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly shoulders the return-value burden and enumerates fields, states, rules, and settlement semantics, which is what an agent needs for a discovery tool. It leaves minor gaps around auth/preconditions and explicit sibling routing, but is otherwise complete for a read-only listing call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 90%, so baseline is 3, but the description goes beyond the schema by explaining what the returned fields mean (outcomeId, sides, price = current mid, tick size, min order notional) and by clarifying the effect of withVolume, raw, and detail. The interaction note that sortBy=volume implies withVolume is a useful cross-parameter semantic the schema does not state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Discover Hyperliquid HIP-4 outcome markets') and immediately differentiates scope by noting GDEX has no Polymarket/Kalshi, which separates it from siblings like hl_outcome_account or hl_create_outcome_order. An agent knows this is the market-discovery call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (browse/filter outcome markets) and the GDEX-vs-competitors note gives context, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative such as get_hl_outcome_volumes for volume-only queries. The agent must infer selection from the parameter list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_ref_claimB
Destructive

Submit a claim request for accrued HL referral rewards. Requires pre-built computedData.

NameRequiredDescriptionDefault
computedDataYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true and readOnlyHint=false, so the safety profile is covered by structured data. The description adds the prerequisite that computedData must be pre-built, but says nothing about irreversibility of the claim, auth requirements, or failure modes beyond what annotations supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the action front-loaded and the precondition second; no filler. It is efficient, though the extreme brevity is part of why other dimensions are thin.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation with an undocumented single required parameter and no output schema, the definition omits how to obtain computedData, what the claim actually does, and whether it can be undone. An agent has no basis for calling it correctly from this text alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter is an untyped string, so the description carries the full burden. 'Pre-built computedData' hints the value is derived elsewhere, but it never explains the format, source, or content of that blob, which is the one thing an agent must get right to call this tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Submit a claim request') and resource ('accrued HL referral rewards'), so an agent can tell it apart from siblings like hl_ref_info or hl_builder_referral. It stops short of explicitly contrasting those siblings, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states one real precondition ('Requires pre-built computedData'), which is a genuine usage constraint. However, it gives no guidance on when to claim versus checking eligibility via hl_ref_info, nor how or where computedData is produced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_ref_infoB
Read-only

Get HyperLiquid referral info (earned, eligibility, code).

NameRequiredDescriptionDefault
userAddressYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the shape of the returned info (earned, eligibility, code), but says nothing about auth requirements, freshness, or whether data is cached. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence with no filler, and the resource is front-loaded. It could be marginally improved but wastes nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the field enumeration (earned, eligibility, code) usefully hints at the return payload, but the undocumented parameter and absence of usage context leave gaps for a tool that depends on a user address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter userAddress has 0% schema description coverage, and the description does not compensate by explaining that the referral info is scoped to a user address. The reader must infer the link between the parameter and the result.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Get' plus a well-scoped resource 'HyperLiquid referral info', with the returned fields (earned, eligibility, code) enumerated. It is clearly a read of referral state, distinct in intent from the mutation sibling hl_ref_claim, though the description never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. The description does not explain that this should be called before hl_ref_claim, nor does it mention any prerequisites or alternatives. Usage is only inferable from the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_swap_collateralB
Destructive

Swap collateral between HL clearinghouses/perp DEXes (HIP-3). Pass apiKey, walletAddress, sessionPrivateKey, fromToken, toToken, amount or a pre-built computedData.

NameRequiredDescriptionDefault
toDexNo
amountNo
apiKeyNo
fromDexNo
toTokenNo
fromTokenNo
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
computedDataNo
walletAddressNo
sessionPrivateKeyNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the agent knows this is an irreversible-looking write in an open world. The description adds that credentials (apiKey, walletAddress, sessionPrivateKey) are needed and that a pre-built computedData path exists, which is useful beyond the annotations, but it says nothing about what collateral movement actually occurs, atomicity, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded ahead of the input instructions, with no filler. The second sentence is essentially a parameter list, but it is compact and does carry information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation tool with ten parameters and no output schema, the description is too thin: it does not explain the mechanics of the clearinghouse/DEX swap, whether the operation is atomic or reversible, or how fromDex/toDex should be chosen. It also mildly conflicts with the schema's accountRef guidance, which steers users away from passing secrets in chat while the description tells them to pass apiKey and sessionPrivateKey.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 10% (only accountRef is documented), so the description must compensate, and it does name seven of the ten parameters and clarifies the two mutually exclusive input modes (individual fields vs computedData). However fromDex, toDex and accountRef are left unexplained, and it never mentions that no parameters are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (swap) plus resource (collateral) and scope (between HL clearinghouses/perp DEXes, HIP-3), which distinguishes it from sibling flows like perp_deposit and perp_withdraw. It stops short of naming a sibling alternative, so it is clear but not maximally differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternative among the many deposit/withdraw/bridge siblings. The only directive is about how to supply inputs, which is parameter guidance rather than usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hl_tx_listC
Read-only

Get HL transaction list (fills / orders) for a wallet.

NameRequiredDescriptionDefault
dexNo
pageNo
limitNo
userAddressYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally. The description adds almost nothing beyond that: it does not state pagination/ordering behavior, default page size, or whether fills and orders are merged or returned separately. For a list tool with four inputs, this leaves the agent under-informed about how results arrive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the resource front-loaded and no filler. It is efficiently structured, though terseness here contributes to the specification gaps noted elsewhere rather than being purely a virtue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Four undocumented parameters, no output schema, and minimal annotations mean the description carries a large burden and does not meet it. An agent lacks guidance on pagination, dex scoping, and result shape before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only covers the required userAddress implicitly via "for a wallet". The dex, page, and limit parameters — including the pagination semantics that materially affect usage — receive no explanation anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get HL transaction list (fills / orders) for a wallet"), which is more informative than a bare name. However, it does not distinguish itself from close siblings such as get_hl_trade_history, get_hl_open_orders, or get_hl_copy_trade_tx_list, which an agent could easily confuse it with. Purpose is inferable but not sharply scoped.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many alternatives, no prerequisites, and no exclusions. The agent must guess its place among get_hl_trade_history, get_hl_open_orders, and get_trade_history on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

import_tokenB

Import a user-defined custom token into the platform via managed custody. Requires pre-built encrypted computedData.

NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the mutation/external-effect safety profile is carried by structured data. The description adds useful context beyond that – 'managed custody' for how the token is held and the need for a pre-built encrypted payload – but says nothing about permissions required, idempotency, or what happens to the token after import.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, with the prerequisite second. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation whose safety profile is covered by annotations, the description conveys the action, custody model, and the key prerequisite. It leaves the post-import result (where the token surfaces, whether re-import is idempotent) implicit, which is a minor gap given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (computedData, chainId) are already documented in the schema. The description adds no format, encoding, or provenance detail for computedData beyond what the schema field text provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (import) and resource (user-defined custom token) plus the mechanism (managed custody), which is enough to distinguish it from read-only token tools like get_token_details or buy_token. It does not, however, reference any sibling that might be confused with it, so it stops short of the top tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no named alternative. The only precondition mentioned ('Requires pre-built encrypted computedData') is a prerequisite, not usage routing, and it restates the required-parameter fact already visible in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

limit_buyB
Destructive

Create a limit buy order — buy a token when price drops to target. Uses ABI-encoded + AES-encrypted computedData.

NameRequiredDescriptionDefault
amountYesNative token to spend in raw units (wei/lamports), a positive integer string
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address (NOT managed wallet)
chainIdYesNumeric chain ID (e.g. 622112261 for Solana)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
lossPercentNoStop-loss % below trigger, whole number under 100 (e.g. '25'), '0' to skip0
tokenAddressYesToken address to buy
triggerPriceYesUSD price at which to trigger the buy (plain decimal)
profitPercentNoTake-profit % above trigger, whole number (e.g. '50'), '0' to skip0
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnly=false and openWorld=true, so the mutation risk is covered by structured data. The description adds useful context that the order payload is ABI-encoded and AES-encrypted and that execution is conditional on price, but it omits whether funds are reserved, whether auth must be established first, and that the opaque "computedData" fragment is never explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action, with no filler. The closing "ABI-encoded + AES-encrypted computedData" phrase is jargon that doesn't help an agent decide or invoke anything, so it's slightly below fully earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world trading order with 10 parameters and no output schema, the description is minimally adequate: the action and trigger are clear, but the auth path (accountRef supplying the key vs. passing secrets directly), order persistence, and cancellation route are left entirely to the schema and sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters including the accountRef/sessionPrivateKey auth choice and the loss/profit percentage semantics. The description adds nothing beyond that, which is the baseline case when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a limit buy order") and immediately glosses the semantics ("buy a token when price drops to target"), which cleanly separates it from a market buy like buy_token and mirrors limit_sell. It stops short of naming sibling tools explicitly, so it misses the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The trigger condition implies the usage case relative to an immediate buy, but there is no explicit when/when-not guidance, no mention of prerequisites (gdex_connect / accountRef vs. sessionPrivateKey), and no pointer to get_limit_orders or direct_cancel_order for lifecycle management.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

limit_sellB
Destructive

Create a limit sell order — sell a token when price reaches target. Auto-classifies as TP or SL.

NameRequiredDescriptionDefault
amountYesToken amount in raw units (token decimals), a positive integer string
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
chainIdYesNumeric chain ID
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressYesToken address to sell
triggerPriceYesUSD price at which to trigger the sell (plain decimal)
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is covered. The description adds one genuine behavioral detail — the order is auto-classified as TP or SL — but says nothing about credential/auth paths, whether funds are escrowed, or how to cancel the resulting order.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the action and trigger front-loaded and zero filler. Nothing is repeated unnecessarily and every clause carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world mutation tool with three competing credential parameters and no output schema, the description is thinner than it should be. It omits what the call returns (order id?), how the TP/SL classification is decided, and what lifecycle follow-up (get_limit_orders / direct_cancel_order) applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 8 parameters, including amount, triggerPrice, and the three credential fields, so the schema carries the load. The description only restates 'sell a token' and 'price reaches target' without adding format or ordering semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a limit sell order") plus the triggering condition ("sell a token when price reaches target"), which is enough to distinguish it from limit_buy. It does not, however, name the market-sell or managed alternatives it competes with, so sibling differentiation is implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The description never tells the agent how this differs from sell_token, managed_sell, gdex_execute_trade, or place_perp_order, nor what prerequisites (accountRef vs apiKey vs sessionPrivateKey) must be satisfied before calling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

managed_purchaseB
Destructive

Submit an encrypted managed-custody buy trade via the GDEX backend.

NameRequiredDescriptionDefault
tipNoOptional priority fee
chainIdYesChain ID for the trade
slippageNoMax slippage %. Default: 1
computedDataYesAES-encrypted trade payload with signed data

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a destructive, open-world write, so the safety bar is lower. The description adds conceptual context ('encrypted', 'managed-custody', 'via backend') that helps an agent understand it's submitting a pre-signed encrypted payload, but it does not explain what gets consumed/destroyed or auth prerequisites beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, tight sentence with the resource and mechanism front-loaded, zero filler. It could be slightly more informative without losing concision, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive write tool with no output schema, the description should explain what happens after submission (e.g., that managed_trade_status tracks the result) and any auth/session preconditions. Neither is present, leaving the agent unsure about follow-up and prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters including computedData and slippage. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Submit an encrypted managed-custody buy trade via the GDEX backend' tells the agent this is a buy execution path. However, it does not distinguish this from siblings like managed_sell, buy_token, limit_buy, or execute_spot, so the agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of the alternative 'managed' tools. The agent is left to guess why it should pick this over limit_buy or execute_spot, or whether managed_trade_status is the follow-up.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

managed_sellB
Destructive

Submit an encrypted managed-custody sell trade via the GDEX backend.

NameRequiredDescriptionDefault
tipNoOptional priority fee
chainIdYesChain ID for the trade
slippageNoMax slippage %. Default: 1
computedDataYesAES-encrypted trade payload with signed data

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this is an irreversible external-facing write. The description adds useful context that the payload is encrypted and submitted through the GDEX backend, but says nothing about what gets destroyed, confirmation requirements, or rate limits beyond what annotations cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, but the terseness is partly why usage and prerequisite context are missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, external, payload-driven mutation with no output schema, the description omits how computedData is produced, what response to expect, and how status is checked (managed_trade_status). Annotations carry the safety profile but the operational gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so tip, chainId, slippage and computedData are already documented. The description's only addition is the word 'encrypted', which loosely reinforces computedData; it adds no format or construction detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (submit), resource (managed-custody sell trade), and mechanism (encrypted, via GDEX backend). An agent can distinguish it from a plain sell_token or limit_sell, though the description never names the sibling it is the counterpart of (managed_purchase) to reinforce the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no named alternatives. With siblings like sell_token, limit_sell, managed_purchase and gdex_execute_trade all in scope, the agent is left to infer that this is the managed-custody path and that it needs a pre-built encrypted payload.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

managed_sign_inB

Sign in to GDEX managed-custody system using encrypted computedData payload.

NameRequiredDescriptionDefault
chainIdYesChain ID (622112261=Solana, 42161=Arbitrum for HL perps)
computedDataYesAES-256-CBC encrypted sign-in payload

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose the operation is not read-only, is open-world, and is non-destructive, so the safety profile is covered. The description adds only that the payload is encrypted, and omits any behavioral context such as what session state is established, whether prior payload construction is required, or how failures are surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is tight, though this brevity is partly what leaves the usage and prerequisite gaps unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a sign-in entry point with no output schema, the description should indicate what a successful call yields (e.g., session/auth token) and that build_sign_in_payload likely precedes it; neither is covered. Annotations and the schema carry the rest, so this is adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema documents both computedData (AES-256-CBC encrypted payload) and chainId (with concrete chain values). The description's phrase 'encrypted computedData payload' simply restates the schema wording and adds no format, ordering, or value guidance beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (sign in) and a named target (GDEX managed-custody system), which distinguishes it from generic siblings like auth_login, oauth_login and build_sign_in_payload. However, the description never explicitly contrasts itself with those sibling auth tools, so an agent must infer which sign-in path applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of the adjacent auth tools (auth_login, oauth_login, generate_session_keypair, build_sign_in_payload) that a caller would have to choose between. The agent gets no explicit cue for selecting this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

managed_trade_statusB
Read-only

Poll the status of a managed-custody trade by requestId.

NameRequiredDescriptionDefault
requestIdYesRequest ID returned from purchase/sell submission

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds only that this is a polling operation, but says nothing about polling cadence, terminal statuses, whether status can be pending, or what happens if the requestId is unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler. The key action and identifier are stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no description of returned statuses, terminal states, or relationship to the submission/wait tools, an agent cannot fully know how to interpret results or when to stop polling. Given the simple one-parameter read-only nature, annotations cover some context, but important status semantics are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema description coverage is 100%, so the schema already documents requestId well. The description mentions 'by requestId' but adds no format, source, or validation detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Poll') and resource ('managed-custody trade') and names the key lookup parameter ('requestId'). It is clear what the tool does, though it does not explicitly distinguish itself from nearby tools such as 'wait_for_trade' or the managed_purchase/managed_sell submission tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied by 'Poll the status' and 'by requestId', which suggests calling it after a managed purchase or sell submission. However, it does not state when to use this versus polling alternatives or waiting tools, nor any conditions for stopping.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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.

NameRequiredDescriptionDefault
chainIdNoOptional chain id hint for wallet resolution.
idTokenYesGoogle-issued OIDC ID token (JWT).

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (not read-only, open-world, non-destructive), and the description adds a non-obvious failure mode with a specific HTTP status and internal error code plus remediation. That is meaningful behavioral disclosure beyond the annotations, though it says nothing about token lifetime, response payload, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, then the scope constraint, then the edge case. Every sentence carries distinct, actionable information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter auth tool with no output schema, the description covers the credential type, the provider limitation, and the main recovery path. It leaves the success response shape and token persistence unstated, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in-schema, so the schema already carries the semantics. The description only adds that the same idToken is reused for associate_email; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('log in or sign up') and the credential type (Google ID token), plus an explicit scope limitation ('Google OIDC only — no Apple/GitHub branch'). It doesn't explicitly differentiate itself from the sibling auth_login or managed_sign_in, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete conditional flow: on 404/internal code 108, call associate_email first with the same idToken before retrying. That is real when-to-use guidance. It does not, however, say when to pick this over auth_login or managed_sign_in.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

open_perp_positionB
Destructive

Open a perpetual futures position on HyperLiquid with leverage, TP/SL. Supports market and limit orders.

NameRequiredDescriptionDefault
coinYesAsset symbol, e.g. 'BTC', 'ETH', 'SOL'
sizeYesPosition size in contracts
priceYesPrice in USD
apiKeyNoGDEX API key for AES encryption
isLongYesTrue for long, false for short
slPriceNoStop-loss price in USD, '' to skip
tpPriceNoTake-profit price in USD, '' to skip
isMarketNoTrue for market order, false for limit
leverageNoLeverage 1-50 (sent top-level; HL defaults to 20x if omitted)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
reduceOnlyNoReduce-only order
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=true, and openWorld=true, so the safety profile is covered. The description adds HyperLiquid venue context and market/limit, TP/SL, and leverage support, but does not add auth/session requirements or side-effect details beyond annotations and schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted text. Every clause contributes to scope or capability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, a destructive trading action, no output schema, and many sibling tools, the description is somewhat thin on account/session flow and alternative selection. Schema and annotations cover much structured detail, but the description does not fully compensate for the missing usage/output context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions leverage, TP/SL, and market/limit orders, but adds no syntax or constraints beyond what the schema already documents for all 13 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource (open perpetual futures position) plus venue and order features (HyperLiquid, leverage, TP/SL, market/limit). It does not differentiate itself from sibling order-entry tools such as place_perp_order or execute_cross_perp/execute_isolated_perp, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States what the tool does but gives no explicit when-to-use or when-not-to-use guidance and does not route between alternatives. An agent can infer it opens positions, but must choose between open_perp_position, place_perp_order, execute_cross_perp, and execute_isolated_perp without help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the read-before-write pattern, no-op-if-already-paused semantics, and precisely what survives the pause (open positions and their TP/SL orders stay in place). It also enumerates three error codes with meanings, including PAUSE_STATE_UNVERIFIED meaning nothing was sent. The 'WITHOUT deleting it' framing sits in mild tension with destructiveHint=true, but pausing does mutate stored state, so this is not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the key constraint, then the state behavior, then the error taxonomy in one compact sentence. Four sentences, each carrying distinct decision-relevant information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the state outcome, the no-op case, and failure modes well enough to call it safely. It does not say what a successful response returns or whether the pause is idempotent beyond the already-paused case, which is a minor residual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so copyTradeId, accountRef, apiKey, userId and sessionPrivateKey are all documented in the schema itself, including the hint that the ID comes from get_copy_trade_list. The description adds no parameter-level detail (e.g., accountRef vs apiKey/sessionPrivateKey precedence), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Pause a Solana copy trade') and immediately scopes it against the obvious sibling alternative by saying it happens 'WITHOUT deleting it'. The parenthetical (isActive=false) pins the exact state change, so an agent can distinguish it from delete_copy_trade and resume_copy_trade without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for use: pause rather than delete when positions should be kept, and it explicitly notes the no-op path when already paused, which prevents redundant calls. It does not name the concrete alternatives (resume_copy_trade, delete_copy_trade) by name, so routing is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pause_hl_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_hl_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, it discloses the exact resulting state (isActive=false), the no-op-if-already-paused behavior, the read-before-write step, and the critical side effect that copied positions stay open and will NOT follow trader exits with TP/SL left in place. It also enumerates failure modes (PAUSE_STATE_UNVERIFIED, PAUSE_UNSUPPORTED, COPY_TRADE_NOT_FOUND), which is far richer than the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the non-deletion distinction, then layers side effects and error codes. Dense but every clause carries actionable information; only the error-code list is slightly list-like.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is present, and the description compensates by covering behavior, side effects, idempotency, and named error conditions. For a state-mutation tool, nothing an agent needs to invoke or interpret it correctly appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all five parameters including copyTradeId. The description adds the correct conceptual state (isActive=false) but no parameter-level detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Pause) and resource (HL perp copy trade), and explicitly contrasts with delete ('WITHOUT deleting it'). This distinguishes it from sibling resume_hl_copy_trade and delete_hl_copy_trade without requiring the agent to open either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly establishes when to use it ('pause ... WITHOUT deleting'), and notes the idempotent read-first behavior. It does not explicitly name delete_hl_copy_trade as the alternative when a permanent stop is intended, so routing is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

perp_depositC
Destructive

Deposit USDC into the HyperLiquid perpetual account from Arbitrum.

NameRequiredDescriptionDefault
amountYesUSDC amount to deposit, e.g. '100'. Min 10 USDC.
apiKeyNoGDEX API key for AES encryption
chainIdNoChain ID (must be 42161 = Arbitrum)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressYesUSDC token address on Arbitrum
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a non-read-only, destructive, open-world operation, so the safety profile is covered structurally. The description adds only the source chain (already encoded as chainId default 42161 in the schema) and does not disclose that funds leave the Arbitrum wallet irreversibly, that a session/API-key context is required, or what follows a successful deposit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence naming verb, asset, destination and source chain, with no redundant restatement of the name. It is efficient, though its terseness is part of why coverage elsewhere is thin.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, real-money funding operation with no output schema, one sentence is inadequate: prerequisites (accountRef/session key, trading enabled), the minimum amount, bridge/settlement behavior and failure modes are all absent. The agent knows what it does but not how to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 7 fully documented parameters, so the schema carries the load and baseline 3 applies. The description contributes no parameter detail beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Deposit), asset (USDC), destination (HyperLiquid perpetual account) and source chain (Arbitrum) are all stated, which cleanly pairs it against the sibling perp_withdraw. It does not, however, explicitly distinguish itself from adjacent funding paths like execute_cross_perp or hl_swap_collateral, so an agent operating near those tools gets no routing cue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (e.g. that an accountRef from gdex_connect or a session key is expected), and no mention of the 10 USDC minimum enforced by the schema. The agent must infer all preconditions from sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

perp_withdrawC
Destructive

Withdraw USDC from the HyperLiquid perpetual account.

NameRequiredDescriptionDefault
amountYesUSDC amount to withdraw
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds no behavioral context beyond that: it doesn't say where the USDC goes (control wallet vs. elsewhere), whether partial withdrawals are allowed, fees, minimums, or irreversibility. For a fund-moving mutation, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient but under-specified rather than padded, so it earns a 4 rather than a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a destructive, five-parameter financial mutation with no output schema, so the description should carry the auth/session requirements and the destination of withdrawn funds. Instead it only restates the name, leaving the agent to reverse-engineer requirements from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is documented in the schema, including the amount string and the credential fields. The description adds nothing beyond restating USDC and the account, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: withdraw USDC from the HyperLiquid perpetual account. Clear on its own, but it does not distinguish itself from neighboring money-movement tools such as perp_deposit, transfer_native, or usdc_convert_native, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus perp_deposit, transfer_native, or the bridge tools, and no mention of prerequisites (a gdex_connect session, API key, signing). The schema hints at these, but the description itself routes nothing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

place_perp_orderA
Destructive

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 price via /hl/place_order, which the backend currently accepts only with reduceOnly=true.

NameRequiredDescriptionDefault
coinYesAsset symbol
sizeYesPosition size in contracts
priceYesPrice in USD ('0' with isMarket=true uses the mark price)
apiKeyNoGDEX API key for AES encryption
isLongYesTrue for long, false for short
isMarketNoTrue for market (via create_order), false for limit
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
reduceOnlyNo
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the existing destructiveHint and openWorldHint annotations, the description discloses backend routing details: market orders go via /hl/create_order, while limit orders go via /hl/place_order and are currently accepted only with reduceOnly=true. It still omits authentication/session requirements and any response behavior, but the added backend constraint is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two efficient sentences, front-loading the purpose and then the key branching behavior. Every sentence carries relevant information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive trading tool, the description covers the critical behavioral nuance and a current backend limitation. The input schema documents most parameters, but no output schema exists and the description does not explain return values or session/auth expectations, leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already high at 90%, so the baseline is 3. The description adds useful meaning for isMarket, price, and reduceOnly by explaining the market-vs-limit path and the backend restriction on limit orders.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: placing a HyperLiquid perp order without TP/SL. It adds meaningful scope, but does not explicitly differentiate itself from siblings such as open_perp_position or execute_cross_perp/execute_isolated_perp.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains the isMarket=true vs isMarket=false branch and the current reduceOnly constraint for limit orders. However, it does not explicitly say when to choose this tool over sibling perp-order or position-management tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resume_copy_tradeA
Destructive

Resume a paused Solana copy trade (isActive=true). No-op if already active. Trades made while paused are not replayed.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=true, openWorld=true). The description adds genuinely useful behavior beyond that: idempotency ('No-op if already active') and the important fact that 'Trades made while paused are not replayed'. It does not explain that resuming re-enables live fund-spending execution, a minor gap given destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place, with the core action front-loaded. No redundant restatement of the title or name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers the key state transition, idempotency, and the non-replay rule, while annotations carry the safety profile. It stops short of noting auth/session prerequisites or the fund-spending implication of resuming, but is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (including copyTradeId and accountRef) are already documented in the schema. The description's mention of isActive=true is a state note rather than parameter guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Resume a paused Solana copy trade') and includes the resulting state (isActive=true). The 'Solana' qualifier distinguishes it from the sibling resume_hl_copy_trade (Hyperliquid), so an agent can route correctly without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Resume a paused ... trade', but the description never states when to prefer this over pause_copy_trade/update_copy_trade or what prerequisite state is required. No explicit when-not or alternative guidance is given, so this is minimum viable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resume_hl_copy_tradeA
Destructive

Resume a paused HL perp copy trade (isActive=true). No-op if already active. Fills made while paused are not replayed.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_hl_copy_trade_list)
sessionPrivateKeyNoSession private key

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the safety bar is lower. The description still adds genuine non-obvious behavior: the call is idempotent ('No-op if already active') and missed fills are not replayed — both affect whether an agent should call it. It does not explain why the operation is flagged destructive (resumed copying places live trades), which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and its precondition, followed by the two edge-case behaviors. No filler and no repetition of name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter and a fully documented schema, the main gaps an agent faces are state preconditions and side effects, both of which are addressed (no-op, no replay). It omits any mention of the auth/session parameters (accountRef, sessionPrivateKey) needed for a live-money operation and gives no sense of the success response, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the hint that copyTradeId comes from get_hl_copy_trade_list, so the schema already carries parameter meaning. The description adds nothing about parameters beyond the state reference '(isActive=true)', which is a state flag rather than a parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Resume a paused HL perp copy trade') with the target state (isActive=true), which distinguishes it from pause_hl_copy_trade, create_hl_copy_trade, and the generic resume_copy_trade. An agent can identify the correct tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'a paused HL perp copy trade' establishes the precondition clearly, and 'No-op if already active' tells the agent it is safe to call without checking state first. It stops short of naming the alternative (pause_hl_copy_trade) or saying when to prefer update_hl_copy_trade_settings instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_gdex_docsA
Read-only

Search GDEX documentation and skill files by keyword. Returns matching skill sections.

NameRequiredDescriptionDefault
queryYesSearch query — keywords to find across all GDEX skills and documentation

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish that this is a read-only, non-open-world operation. The description adds useful scope and a brief return statement ('Returns matching skill sections'), but does not disclose ranking, result limits, pagination, or whether the search covers all docs or only selected sections.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and scope, and the return behavior follows immediately. There is no filler or redundant explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with complete schema coverage and annotations, the description is minimally adequate. However, it does not help the agent choose between this search tool and the several sibling documentation retrieval tools, which is the main contextual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single parameter is already documented as a keyword query across GDEX skills and documentation. The description's phrase 'by keyword' mirrors the schema without adding syntax, matching behavior, or formatting details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Search GDEX documentation and skill files by keyword,' and adds the return scope ('matching skill sections'). It is clearly distinct from trading siblings, but it does not explicitly differentiate itself from nearby documentation siblings such as get_skill_file, get_sdk_pattern, or get_api_info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'by keyword' and the return of matching sections, but there is no explicit when-to-use guidance or comparison against direct-fetch documentation tools like get_skill_file. An agent can infer this is the search entry point, but the routing decision is left largely unstated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sell_tokenA
Destructive

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.

NameRequiredDescriptionDefault
dexNoNot supported: the backend picks the route. Rejected when set.
chainYesChain identifier
amountYesAmount to sell, e.g. '100' or '50%'
apiKeyNoGDEX API key used to encrypt the signed trade
referrerNoNot supported by purchase_v2/sell_v2. Rejected when set.
slippageNoSlippage percent, Solana and Sui only (sent as bps, max 50). Rejected on EVM, where the account's stored slippage applies. Omit to use the stored setting.
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
outputTokenNoOmit, or the chain's native token. Anything else is rejected (use usdc_sell for USDC).
priorityFeeNoSolana priority fee in lamports (integer, max 50000000 = 0.05 SOL). Solana only.
tokenAddressYesContract address of the token to sell
tokenDecimalsNoOnly for an absolute amount of a token missing from the managed holdings
walletAddressNoControl wallet address (the GDEX userId)
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructive=true, readOnly=false, openWorld=true, so the safety profile is covered. The description adds value beyond that: it is session-signed, amounts are resolved against managed holdings, it returns a requestId that must be polled with wait_for_trade. Minor gap: no note on failure modes or whether the sell can partially fill.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action, then amount semantics, then output/next-step routing. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation tool with no output schema, the description covers the essentials: what it sells into, amount forms, return handle, and the follow-up tool. It leaves auth/session sourcing and rejection cases to the schema, which handles them, so remaining gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3. The description still adds meaning by explaining that amount may be absolute ('100') or a percentage of held balance ('50%') resolved from managed holdings, which is not fully spelled out in the schema's terse pattern text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: sell a token for the chain's native token from the managed GDEX wallet, using session-signed sell_v2. It also explicitly distinguishes itself from the sibling usdc_sell for USDC output, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (usdc_sell) and the condition that selects it ('To receive USDC'), and prescribes the follow-up step ('Returns a requestId; follow it with wait_for_trade'). Provides both when-to-use and what-to-do-next guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_leverageA
Destructive

Set leverage for a specific asset on HyperLiquid. Known broken: /hl/update_leverage has returned 404 in live tests. Pass leverage on open_perp_position instead (sent with the order).

NameRequiredDescriptionDefault
coinYesAsset symbol
apiKeyNoGDEX API key for AES encryption
isCrossNoTrue for cross margin, false for isolated
leverageYesLeverage multiplier (1-50)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the mutation risk profile is known. The description adds a genuinely non-obvious behavioral fact: the underlying /hl/update_leverage endpoint returns 404, which no structured field conveys. It stops short of explaining failure modes or requirements for the working path (e.g. whether leverage must be set before opening).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, zero filler, and the actionable redirect is placed immediately after the purpose statement rather than buried. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a broken mutation tool with no output schema, the description covers what an agent most needs: what it nominally does and where to go instead. The remaining gap is that it doesn't say whether calling it is still safe to attempt in any environment or whether it is deprecated entirely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all seven parameters (coin, leverage, isCross, apiKey, accountRef, sessionPrivateKey, walletAddress) are already documented in the schema. The description only reinforces that `leverage` is the operative value and should instead be attached to the order, which adds marginal meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource ('Set leverage for a specific asset on HyperLiquid'), so an agent knows the operation immediately. It does not contrast with the sizing/margin siblings like execute_cross_perp or execute_isolated_perp, but naming open_perp_position as the substitute covers the key differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the tool is known broken (404 in live tests) and directs the agent to pass `leverage` on open_perp_position instead. This is exactly the when/when-not/alternative guidance the dimension asks for, and it prevents a wasted failing call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_nativeA
Destructive

Transfer native asset (ETH, SOL, SUI, BNB, ...) via managed custody. Requires pre-built encrypted computedData.

NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the destructive, on-chain nature is covered. The description adds genuine context beyond that — "via managed custody" and the mandatory pre-built encrypted payload — but it does not say how to obtain computedData, what auth is needed, or whether the transfer is irreversible once submitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core action front-loaded and the precondition following it. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, custodial transfer with no output schema and no annotations beyond the safety hints, the description leaves open how the required computedData is constructed (a build_trade_payload-style sibling exists) and what the chainId hint affects. It is minimally adequate but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (chainId, computedData) are documented in the schema, so the baseline of 3 applies. The description only restates that computedData is required and pre-built; it adds no format, encoding, or chainId semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Transfer native asset") and enumerates example assets (ETH, SOL, SUI, BNB), which clearly distinguishes it from the ERC-20-oriented sibling transfer_token. It never names that sibling explicitly, so the differentiation is inferable rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The prerequisite "Requires pre-built encrypted computedData" is a useful precondition, and "native asset" implicitly scopes usage versus token transfers. However, there is no explicit when-to-use/when-not guidance and no pointer to the alternative (transfer_token) or to how the computedData should be produced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transfer_tokenA
Destructive

Transfer ERC20 / SPL token via managed custody. Requires pre-built encrypted computedData.

NameRequiredDescriptionDefault
chainIdNoOptional chain id hint
computedDataYesEncrypted computedData payload

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, destructive, open-world operation, so the safety profile is covered. The description adds the meaningful detail that the payload must be pre-built/encrypted and that custody is managed, but says nothing about irreversibility of the transfer, required auth/session state, fees, or failure/retry behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two terse sentences, zero filler, and the critical prerequisite is placed immediately after the action statement so an agent reads it before invoking.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive transfer tool with no output schema and no annotations gap, the description is minimally adequate. It omits how to construct computedData (a sibling like build_trade_payload likely exists for this) and what the tool returns on success, leaving the agent to guess at the pre-conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters, both already documented in the schema, so the baseline is 3. The description confirms computedData is required but adds no syntax, format, or how-to-obtain-the-payload detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (transfer) plus the resource class (ERC20 / SPL token) and the custody mode (managed custody). It implicitly distinguishes itself from the sibling transfer_native, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one hard prerequisite - 'Requires pre-built encrypted computedData' - which tells the agent this cannot be called standalone. But it offers no when-to-use-vs-alternatives guidance (e.g. versus transfer_native or build_trade_payload) and no exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
buyModeYes1 = fixed SOL amount, 2 = percentage of trader amount
chainIdYesMust be 622112261 (Solana)
copySellNoAlso copy sells
gasPriceNoPriority fee setting (default "0")
isDeleteNoPermanently delete the configuration (positions stay open)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID to modify
lossPercentYesStop-loss % (> 0, < 100)
traderWalletYesTrader wallet address
copyBuyAmountYesSOL amount (mode 1) or percentage 0-100 (mode 2)
copyTradeNameNoLabel
profitPercentYesTake-profit % (> 0)
isChangeStatusNoToggle active/paused relative to the stored state
sessionPrivateKeyNoSession private key
excludedDexNumbersNoDEX numbers to exclude
isBuyExistingTokenNoBuy tokens the trader already holds

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true, and the description adds genuinely non-obvious behavior: every field is rewritten so the full config must be passed, isDelete leaves positions open and does NOT cancel their TP/SL orders, isChangeStatus is a relative toggle (double-send resumes), and the two flags are mutually exclusive. This is exactly the extra context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the routing guidance and constraints, and every sentence carries weight. The parenthetical sibling list and dense constraint clauses make it somewhat run-on, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter mutation tool with no output schema, the description covers the high-risk behaviors and mutual-exclusion rules thoroughly. Auth/session handling is left to the 100%-covered schema, and return behavior is not described, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3; but the description adds semantics beyond the schema for the risky parameters (isDelete effect on open positions, isChangeStatus toggle direction, incompatibility of the two flags, full-payload rewrite requirement). It does not, however, clarify the apiKey/userId/accountRef auth interaction that a low-level call requires.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Solana copy trade update') and immediately scopes it as 'low-level' relative to named siblings (update_copy_trade_settings / pause_copy_trade / resume_copy_trade / delete_copy_trade). An agent can distinguish it from those alternatives without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to prefer the higher-level siblings and implicitly reserves this tool for low-level payload rewrites. Both the when-to-use (full config rewrite) and when-not-to-use (use the dedicated settings/pause/resume/delete tools) conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_copy_trade_settingsA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
buyModeNo1 = fixed SOL amount, 2 = percentage
copySellNoAlso copy sells
gasPriceNoPriority fee setting
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_copy_trade_list)
lossPercentNoStop-loss % (> 0, < 100)
traderWalletNoNew trader wallet to follow
copyBuyAmountNoRequired when buyMode changes
copyTradeNameNoNew label
profitPercentNoTake-profit % (> 0)
sessionPrivateKeyNoSession private key
excludedDexNumbersNoDEX numbers to exclude
isBuyExistingTokenNoBuy tokens the trader already holds

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the mutation and external-state profile is known. The description adds important behavioral details beyond annotations: it reads the current config first, omitted fields are preserved, and open positions are not resized. 'Never deletes' clarifies that destructiveHint does not imply structural deletion, though auth/session requirements remain implicit in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the main purpose and immediately followed by exclusions and update semantics. No filler, and every sentence adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter mutation tool with no output schema, the description covers the critical behavioral context: partial update, non-deletion, non-pausing, and no position resizing. It does not explain authentication requirements or expected return values, but the schema and annotations carry enough weight that these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds crucial semantics not captured by the schema: omitted fields keep current values, making it clear this is a partial update. It also notes open positions are not resized, which affects how copyBuyAmount and related fields should be interpreted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Change settings of an existing Solana copy trade.' It also explicitly clarifies what the tool does not do ('never deletes and never pauses/resumes'), which distinguishes it from sibling tools like delete_copy_trade and pause_copy_trade without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear usage context: use for changing settings, not for deletion or pause/resume. The partial-update rule ('omitted fields keep their current values') further guides invocation. It does not explicitly name the alternative 'update_copy_trade' sibling, but the exclusions are sufficient to route most calls correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_hl_copy_tradeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
copyModeYes1 = fixed USD per order, 2 = proportion
isDeleteNoPermanently delete the configuration (positions stay open)
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID to modify
lossPercentYesStop-loss % (> 0, < 100)
oppositeCopyNoTrade opposite to the trader
traderWalletYesTrader wallet address
copyTradeNameYesLabel
profitPercentYesTake-profit % (> 0)
isChangeStatusNoToggle active/paused relative to the stored state
sessionPrivateKeyNoSession private key
fixedAmountCostPerOrderYesUSD amount (mode 1) or ratio (mode 2)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, and the description goes well beyond that: it explains that the payload wholly rewrites every field, that isDelete leaves opened positions and their TP/SL orders intact, that isChangeStatus toggles relative to stored state, and that the two flags are mutually exclusive. This is substantial added context for a destructive mutation, though it does not describe the response or confirmation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the routing advice (prefer the specialized siblings), then layers the dangerous edge cases in short declarative clauses. No filler; every sentence conveys an operational constraint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter destructive mutation with no output schema, it covers the highest-risk behaviors (deletion side effects, toggle semantics, flag conflict, full-payload rewrite) thoroughly. It omits auth/permission prerequisites and return-value expectations, which we'd want but which are partially implied by accountRef/apiKey in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3; the description earns extra by stating the mutual-exclusivity constraint between isDelete and isChangeStatus and the full-rewrite requirement, neither of which is expressed in the schema. The rest of the flag semantics largely repeat the schema's own parameter descriptions, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Low-level HL perp copy trade update') and immediately qualifies it as low-level, distinguishing it from the specialized siblings. An agent can tell it apart from update_hl_copy_trade_settings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names four preferred alternatives (update_hl_copy_trade_settings / pause / resume / delete) in the opening sentence, making this the fallback when those don't apply. It also states the precondition that the full current config must be passed, which shapes correct invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_hl_copy_trade_settingsA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoAPI key
userIdNoControl wallet address
copyModeNo1 = fixed USD per order, 2 = proportion
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
copyTradeIdYesCopy trade ID (from get_hl_copy_trade_list)
lossPercentNoStop-loss % (> 0, < 100)
oppositeCopyNoTrade opposite to the trader
traderWalletNoNew trader wallet to follow
copyTradeNameNoNew label
profitPercentNoTake-profit % (> 0)
sessionPrivateKeyNoSession private key
fixedAmountCostPerOrderNoUSD amount (mode 1) or ratio (mode 2)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful behavior beyond annotations: it reads current config first, preserves omitted fields, and does not delete or pause/resume. The SDK repair note is valuable context for a mutation tool, though it does not cover authorization needs or whether changes affect live positions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then exclusions, merge behavior, and repair guidance in four tight sentences. Every sentence adds operational value without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters, mutation annotations, and no output schema, the description covers the most important operational behavior, exclusions, and legacy repair case. It leaves minor gaps around auth/accountRef expectations and the exact result shape, but remains sufficiently complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns extra credit by explaining merge semantics for omitted fields and by naming copyMode, fixedAmountCostPerOrder, and oppositeCopy as the explicit repair trio for invalid legacy configs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Change settings of an existing HL perp copy trade." It also distinguishes this from delete/pause/resume operations by explicitly saying it never performs those actions, so an agent can separate it from key siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly indicates this is a settings-change operation and explicitly excludes delete and pause/resume use cases. It also gives a concrete repair scenario, though it does not explicitly route pause/resume/delete callers to the named sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_orderA
Destructive

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.

NameRequiredDescriptionDefault
amountNoNew amount in raw units (required unless isDelete)
apiKeyNoAPI key for AES encryption
userIdNoControl wallet address
chainIdYesNumeric chain ID
orderIdYes64-char hex order ID from get_limit_orders
isDeleteNoSet true to cancel the order
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
lossPercentNoNew SL %, whole number under 100, '0' = none (required unless isDelete)
triggerPriceNoNew trigger price in USD (required unless isDelete)
profitPercentNoNew TP %, whole number, '0' = none; buy orders only, sell orders ignore it (required unless isDelete)
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true. The description adds genuinely non-obvious behavior beyond that: an update atomically replaces amount, triggerPrice and both TP/SL values rather than patching individual fields, and the delete path needs no payload. It doesn't address reversibility or confirmation requirements, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action, then the cancel branch, then the update requirement. No filler and no repetition of schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, 11-parameter mutation with no output schema, it covers both modes and the coupling of update fields. It leaves the credential path (accountRef vs apiKey vs sessionPrivateKey vs userId) to the schema and says nothing about what a successful update returns, but those are secondary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a cross-field rule the schema only states per-parameter: the four update fields must travel together, and isDelete short-circuits them. That is real value above the per-property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update or delete an existing limit order'), which separates it from creation siblings limit_buy/limit_sell. It does not explicitly name or contrast with direct_cancel_order, so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear conditional guidance: isDelete=true cancels with no other fields, while an update requires all four of amount, triggerPrice and TP/SL. No explicit 'when not to use' or alternate-tool routing, but the mode selection is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_buyA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
autoBridgeNoAutomatic funding (default true, as on gdex.pro): bridge USDC and top up native gas from the user's other chains, within maxSourceSpendRaw
tokenAddressYesToken to buy
usdcAmountRawYesUSDC to spend (6 decimals; 18 on BSC), raw integer units
walletAddressNoControl wallet address
minTokenOutRawYesMinimum token out (from usdc_get_trade_quote minus slippage), raw integer units
maxSourceSpendRawNoSigned cap on total source spend for auto-funding (default ceil(amount x 1.2)), raw integer units
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and openWorldHint=true, and the description adds genuinely new behavior: default cross-chain bridging/top-up from the user's other chains, a spend cap via maxSourceSpendRaw, and the pending/requestId asynchronous outcome. It does not say what gets destroyed or what the success (non-pending) response contains, which for a destructive swap tool is the remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler: action first, then the default funding behavior and its cap, then the pending-result follow-up. Each sentence carries distinct information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter destructive tool with no output schema, the description covers the two things an agent could not learn elsewhere: cross-chain funding side effects and the pending/requestId flow. It leaves the immediate-success return shape unstated, but the async path — the one that requires agent action — is covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters including decimals, defaults, and the minTokenOutRaw derivation. The description only re-emphasizes autoBridge's default and the maxSourceSpendRaw cap, adding little beyond what the schema states; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource ("Buy a token") plus the payment asset (USDC), which implicitly separates it from usdc_buy_with_native and generic buy_token. It never names a sibling explicitly, so an agent must infer the distinction from the payment-currency phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: automatic funding is on by default, and a pending result must be followed with usdc_wait_for_trade — an explicit next-step routing to a sibling. It lacks any 'when not to use this' guidance (e.g. versus usdc_buy_with_native or gdex_execute_trade) and states no prerequisite such as obtaining a quote first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_buy_with_nativeB
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
autoBridgeNoAutomatic funding (default true, as on gdex.pro): bridge USDC and top up native gas from the user's other chains, within maxSourceSpendRaw
tokenAddressYesToken to buy
walletAddressNoControl wallet address
minTokenOutRawYesMinimum token out, raw integer units
nativeAmountRawYesNative amount to spend (18 decimals EVM, 9 Solana), raw integer units
maxSourceSpendRawNoSigned cap on total source spend for auto-funding (default ceil(amount x 1.2)), raw integer units
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and openWorldHint=true, so the agent knows this is an irreversible spend. The description adds that auto-bridge is on by default and that behavior mirrors gdex.pro, which is useful context beyond the annotations, but says nothing about slippage protection, bridge failure, or how to disable auto-bridge beyond what the schema's autoBridge/maxSourceSpendRaw fields already state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and payment asset. 'as on gdex.pro' is a mildly external reference that earns little on its own, but nothing is bloated or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, real-funds destructive trade with no output schema, the description leaves failure modes, slippage/minTokenOut expectations, and the accountRef/gdex_connect prerequisite to the schema. The rich schema and destructive annotation keep it at minimum viable rather than inadequate, but a financial trade tool should do more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every one of the 10 parameters is documented inline, including accountRef's dependency on gdex_connect and the autoBridge cap semantics. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource+payment mode: buying a token funded by the chain's native token, with examples of which natives (ETH, BNB, SOL). It implicitly separates itself from USDC-funded siblings like usdc_buy, but never names those siblings, so an agent must infer the distinction rather than being told it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: pay with native instead of USDC. There is no explicit when-to-use/when-not statement and no mention of the closest alternatives (usdc_buy, buy_token, usdc_convert_native), nor any prerequisite such as connecting via gdex_connect. The auto-bridge default is a behavioral note, not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_convert_nativeA
Destructive

Convert the chain's native gas token to USDC, keeping a per-chain gas reserve. Get amounts from usdc_get_convert_quote.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
minUsdcOutRawYesMinimum USDC out, raw integer units
walletAddressNoControl wallet address
nativeAmountRawYesNative amount to convert, raw integer units
sessionPrivateKeyNoSession private key from sign-in

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating, potentially value-destroying operation. The description adds the useful non-obvious detail that a per-chain gas reserve is retained, but says nothing about irreversibility, the accountRef auth requirement, or slippage given minUsdcOutRaw. With the safety profile covered by annotations, this earns a moderate score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the core action and the gas-reserve behavior are front-loaded, and the quote-tool pointer follows. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive conversion tool with no output schema, the annotations carry the safety signal and the schema fully covers the parameters. The description adds the gas-reserve behavior and the quote prerequisite. The only gap is the absence of any mention of irreversibility or auth via accountRef, which is minor given annotation coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters, including chainId constraints and the raw-integer unit convention, are already documented in the schema. The description adds no syntax or unit clarification beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Convert the chain's native gas token to USDC,' plus a distinctive behavior (per-chain gas reserve). An agent can tell what it does, though it does not explicitly contrast itself with the nearby sibling usdc_buy_with_native, which superficially sounds related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Get amounts from usdc_get_convert_quote' is a genuine prerequisite pointer telling the agent which sibling to call first, which is valuable. However, it gives no guidance on when to prefer this over alternatives like usdc_buy_with_native or usdc_buy, so the when-to-use dimension is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_estimate_bridgeA
Read-only

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
gasTopUpNoDestination gas top-up; default on for EVM destinations, off for Solana. Its cost is in the estimate
amountRawYesUSDC to deliver on the destination, raw integer units
toChainIdYesDestination chain ID
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
fromChainIdYesSource chain ID
walletAddressNoControl wallet address
gasTopUpAmountUsdNoGas top-up in USD, up to 50 (default 1)
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful semantics beyond that: the quote is an estimate (not a state change), amountRaw is the delivered amount, and fromAmountRaw is the source spend cap for execution. It does not discuss quote expiry or rate limits, keeping it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero waste; the quote purpose and the destination-amount semantics are front-loaded, and the execution-cap guidance follows naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on explaining return values and does so for the critical field (fromAmountRaw) that chains into execution. It omits other likely quote fields (fees, ETA, rate), but covers what an agent needs to call it and use the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all nine parameters. The description reinforces amountRaw's meaning ('what arrives on the destination') but adds no format, default, or constraint detail beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Quote moving USDC between chains'), names the provider (Relay), and explicitly contrasts itself with the sibling usdc_execute_bridge that consumes its output. An agent can distinguish it from execute_bridge and usdc_execute_bridge without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the workflow role: this produces a quote, and its fromAmountRaw output is what you 'cap usdc_execute_bridge with'. That routes the agent to the right follow-up tool. It stops short of explicitly stating when not to use it, so it does not reach a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_execute_bridgeA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
gasTopUpNoDestination gas top-up; default on for EVM destinations, off for Solana. Its cost is in the estimate
amountRawYesUSDC to deliver on the destination, raw integer units
toChainIdYesDestination chain ID
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
fromChainIdYesSource chain ID
walletAddressNoControl wallet address
maxFromAmountRawYesSigned maximum source spend, raw integer units
gasTopUpAmountUsdNoGas top-up in USD, up to 50 (default 1)
sessionPrivateKeyNoSession private key from sign-in

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the IRREVERSIBLE/outward-facing nature is partly covered. The description adds the polling follow-up and the maxFromAmountRaw safety pattern, but does not state irreversibility, required auth (accountRef session), or failure/refund behavior beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, purpose front-loaded, then the non-obvious parameter derivation, then the required follow-up call. No filler; every sentence carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by noting the response carries an id used for polling. It covers purpose, the tricky parameter, and the workflow handoff; only the auth/precondition path is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning for maxFromAmountRaw — explaining it is a signed maximum derived from the estimate's fromAmountRaw plus small headroom — which the schema's bare 'Signed maximum source spend' does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Move USDC between chains.' This is clearly an execution/bridge action distinguishable from quote-type siblings in spirit, but it never names the estimate siblings (estimate_bridge, usdc_estimate_bridge) it pairs with, so the boundary is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an operational recipe (use the estimate's fromAmountRaw plus headroom; poll usdc_get_bridge_status), which implies estimate-first usage. However it never explicitly says when to use this versus estimate_bridge/usdc_estimate_bridge or what preconditions (connected account, funded source) must hold.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_balancesB
Read-only

Unified USDC wallet: the user's USDC and native gas balance on every supported chain, plus the cross-chain USDC total.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and open-world behavior are covered. The description adds aggregation scope (all supported chains and cross-chain total) but does not disclose auth/session requirements, rate limits, or the precise return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler that front-loads the unified multi-chain scope. It could be slightly clearer with an explicit verb, but it is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With readOnly/openWorld annotations, fully documented parameters, and no output schema, the description gives enough about what is returned: USDC, native gas, and cross-chain total. It stops short of specifying data format or handling of zero-balance chains, so it is strong but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are documented in the schema. The description adds no parameter-level meaning beyond that, which matches the baseline 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource (USDC and native gas balances) and scope (every supported chain plus a cross-chain total), making it distinguishable from single-chain balance tools. It lacks an explicit verb and does not name sibling alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over get_usdc_balance, get_balances, or get_portfolio, and no prerequisites or exclusions are stated. The multi-chain scope implies a use case but leaves alternatives to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_bridge_ordersC
Read-only

The user's USDC bridge history.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is covered. The description adds no behavioral context beyond restating that this returns history—it does not disclose authentication expectations, rate limits, or what the history includes. With annotations present, it fails to add meaningful value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a four-word fragment, which is under-specified for a tool with four parameters rather than appropriately concise. It is not front-loaded with action or scope information. The brevity reflects missing content, not efficient structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's read-only retrieval role, lack of output schema, and many sibling bridge/order tools, the description is incomplete. It does not explain what bridge orders are returned, how they relate to get_bridge_orders, or when to use it. An agent would need to infer nearly everything from the name and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (apiKey, accountRef, walletAddress, sessionPrivateKey) are documented in the schema itself. The description adds no additional parameter semantics. Baseline score of 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'The user's USDC bridge history' is effectively a noun-phrase restatement of the tool name usdc_get_bridge_orders. It does not state a verb or action and does not distinguish this tool from siblings such as get_bridge_orders or usdc_get_bridge_status. This qualifies as a tautology rather than a clear purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention get_bridge_orders, usdc_get_bridge_status, or any other sibling, nor does it state prerequisites or context for invocation. The description provides none of the usage routing an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_bridge_statusB
Read-only

Status of a USDC bridge by id. refresh=true polls the bridge provider once.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
refreshNo
bridgeIdYesBridge id from usdc_execute_bridge
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful behavioral detail that refresh=true polls the bridge provider once, but does not mention auth requirements, rate limits, or whether refresh introduces latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two compact sentences with no wasted wording, and the core purpose is front-loaded before the refresh behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status lookup with decent schema coverage, the definition is adequate to invoke the tool correctly. However, with no output schema, it does not describe the returned status shape or possible states, leaving a meaningful gap for an agent interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high at 83%, so the schema already documents most parameters. The description still adds value by clarifying that bridgeId identifies the bridge and that refresh=true triggers a single provider poll, which is more than the bare boolean schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (USDC bridge) and operation (get status by id), making the tool's purpose clear. It does not explicitly distinguish itself from nearby tools such as usdc_get_bridge_orders or usdc_execute_bridge, so it is clear but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool returns and how refresh works, but gives no explicit guidance on when to use it versus alternatives like usdc_get_bridge_orders or usdc_execute_bridge. Usage is only implied by the tool name and the word 'status'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_convert_quoteA
Read-only

Quote converting the chain's native gas token to USDC, keeping a gas reserve. amount is raw native or "max".

NameRequiredDescriptionDefault
amountYesRaw native amount, or "max"
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by stating that the quote keeps a gas reserve, which is non-obvious and directly affects how an agent should interpret or use the quote.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tightly written sentences with no filler. The core purpose and gas-reserve behavior are front-loaded, and the amount semantics are stated briefly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only quote tool with fully documented parameters and annotations, the description covers the essential purpose and gas-reserve behavior. However, with no output schema, it does not explain what the quote returns or how it should be used before execution, and it lacks guidance on when to choose it over sibling quote or conversion tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters including amount, chainId, accountRef, and session details. The description repeats the amount semantics ('raw native or "max"') but adds little beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it quotes converting the chain's native gas token to USDC. It clearly implies a read-only quote rather than execution, which helps distinguish it from siblings like usdc_convert_native, but it does not explicitly name or contrast those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the word 'Quote' and the reference to a gas reserve. There is no explicit guidance on when to use this instead of usdc_convert_native, usdc_get_trade_quote, or usdc_buy_with_native, and no stated exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_deferred_tradeB
Read-only

Status and funding steps of a deferred (auto-bridged) USDC trade, by tradeId.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
tradeIdYesDeferred trade id
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that it returns status and funding steps, but it does not explain authentication needs despite schema fields for apiKey, accountRef, and sessionPrivateKey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and contains no wasted words. It is appropriately compact for a status lookup, though the terseness contributes to the missing sibling and return-value context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

It identifies the input key and mentions output themes, status and funding steps, but there is no output schema and the description does not explain what those funding steps are or how this differs from related trade-status tools. It is minimally adequate but leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all five parameters are documented in the schema itself. The description only reinforces that tradeId identifies the deferred trade and adds no meaning beyond the schema for the authentication-related parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: retrieving status and funding steps for a deferred USDC trade by tradeId. It does not explicitly distinguish this from closely named siblings such as usdc_wait_for_trade, usdc_get_pending_trades, or usdc_get_funding_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives no guidance on when to use this tool versus alternatives. An agent must infer that this is for checking a known deferred tradeId, but the description never says so or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_funding_statusA
Read-only

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
requestIdYesrequestId returned by a USDC trade
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description still adds useful behavior: this is a polling endpoint, the return can include bridge legs, confirmation state, a failure reason, and a retry capability. No output schema exists, so a bit more return detail would help, but the added context is meaningful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, purpose front-loaded first, then the polling instruction, then the alternative routing. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only polling tool with no output schema, the description covers purpose, how to poll, and the retry escape hatch. It leaves the exact shape of the status payload only loosely described, but between annotations and the listed status components an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents apiKey, requestId, accountRef, walletAddress, and sessionPrivateKey. The description's only param-related statement (requestId comes from a trade) largely restates the schema's own 'requestId returned by a USDC trade', so it adds little beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get status) and resource (a USDC trade or its auto-funding), and enumerates what the status covers: bridge legs, confirmation, failure reason. It names one sibling (usdc_retry_sell), but does not differentiate from the many adjacent USDC polling tools like usdc_wait_for_trade, usdc_get_pending_trades, or usdc_get_bridge_status, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Poll with the requestId a trade returned" gives clear operating context, and the retry branch routes the agent to usdc_retry_sell when a stuck sell surfaces a retry capability. It lacks an explicit when-to-use-this-vs-usdc_wait_for_trade/pending-trades rule, so no exclusion guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_pending_tradesA
Read-only

Pending USDC trades on a chain. Check before resubmitting any trade whose outcome is unknown; never resubmit while one is pending.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a genuinely non-obvious operational constraint — do not resubmit while a trade is pending — which is the main reason to call it. It does not mention the auth material (apiKey/session key via accountRef) or what the response contains when nothing is pending.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero padding, and the safety rule is stated after the one-line purpose in the right order. Every clause is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, single-required-param query with full schema coverage and no output schema, this is close to sufficient: purpose and the safety rule are covered. A brief note on what an empty result means (no pending trades, safe to proceed) would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including the chainId enumeration and the accountRef indirection, so the schema carries parameter meaning. The description only implies chain scoping ('on a chain') and adds nothing about chainId, accountRef, or why apiKey/sessionPrivateKey are optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: pending USDC trades on a given chain. It is clear what the tool returns, but it does not name or distinguish itself from near-siblings like usdc_get_deferred_trade, usdc_wait_for_trade, or usdc_get_bridge_orders, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('check before resubmitting any trade whose outcome is unknown') and an explicit prohibition ('never resubmit while one is pending'), which is strong decision guidance. It stops short of naming the alternative tool to use when the check should be skipped or when a trade is confirmed pending and needs waiting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_get_trade_quoteA
Read-only

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.

NameRequiredDescriptionDefault
sideNoDefault buy
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
payAssetYesWhat the buy is paid with
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
amountInRawYesAmount in: USDC/native on a buy, token on a sell, raw integer units
tokenAddressYesToken to buy or sell
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered and the bar is lower. The description adds that the return is amountOutRaw and that slippage must be applied downstream, but says nothing about quote expiry/staleness or whether the apiKey/accountRef parameters are required for a read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with what the tool returns, followed by the one actionable next step. No filler and nothing important buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return contract; it names amountOutRaw and the slippage step, which is the essential part. It is slightly thin on auth requirements (apiKey, accountRef, sessionPrivateKey) and the full shape of the quote response, but the safety annotation covers the main risk.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter including side, payAsset, chainId and amountInRaw is already documented in the schema; the description only loosely restates payAsset via 'USDC- or native-paid'. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (quote for a USDC/native-paid buy or a sell to USDC) and names the downstream siblings usdc_buy / usdc_sell, so the agent can place it in the trade flow. It does not, however, distinguish itself from the sibling quote tool usdc_get_convert_quote, leaving one routing ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'apply slippage to get the minimum out for usdc_buy / usdc_sell' implies this is a pre-trade quote that feeds those tools, but it never says explicitly 'call this before usdc_buy/usdc_sell' or when NOT to use it. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_retry_sellA
Destructive

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
requestIdYesOriginal sell requestId
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
minUsdcOutRawYesMinimum USDC out (re-quote with usdc_get_trade_quote side sell), raw integer units
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a destructive, open-world write. The description adds genuinely non-obvious context: the retry is idempotent because the original nonce is reused, and token/amount/chain/nonce are sourced from the backend's retry capability rather than passed in. It does not address permissions/session requirements or what happens to the original pending sell, so it stops short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and its key guarantee, then the trigger condition. Dense but no filler; the second clause about re-quoting could be slightly clearer but every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive retry operation with no output schema, the description supplies the trigger, the safety guarantee, and the source of the non-parameter inputs. It lacks only failure/edge-case guidance (e.g. what if the nonce was already consumed or the retry window closed).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description adds real meaning: requestId refers to the original sell request, and minUsdcOutRaw must come from a fresh usdc_get_trade_quote side sell. It also clarifies that the other trade details are not parameters at all but read from backend retry state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (retry a stuck USDC sell) plus a distinguishing mechanism: in-place retry reusing the original transaction nonce so it cannot double-execute. This clearly separates it from usdc_sell and the other USDC siblings rather than restating the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition tied to named siblings: use when usdc_wait_for_trade returns needs_retry, or when usdc_get_funding_status shows retry.available. The agent knows exactly which prior observation selects this tool versus initiating a fresh sell.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_sellB
Destructive

Sell a token and receive USDC into the unified USDC wallet. Settles on its own chain (no auto-funding, as on gdex.pro).

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
chainIdYesChain ID: 1, 10, 56, 146, 8453, 42161 or 622112261 (Solana). No USDC on Robinhood 4663 or Fraxtal 252
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
autoBridgeNoDefault false: sells settle on their own chain and never auto-fund, as on gdex.pro
tokenAddressYesToken to sell
minUsdcOutRawYesMinimum USDC out (from usdc_get_trade_quote minus slippage), raw integer units
walletAddressNoControl wallet address
tokenAmountRawYesToken amount to sell, raw integer units
maxSourceSpendRawNoSigned cap on total source spend for auto-funding (default ceil(amount x 1.2)), raw integer units
sessionPrivateKeyNoSession private key from sign-in

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it non-read-only, destructive, and open-world. The description adds that settlement happens on the token's own chain with no auto-funding, which is useful behavioral context, but it omits failure modes, retry behavior (a sibling usdc_retry_sell exists), and slippage handling. Some value over annotations, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences, with the core action front-loaded. The 'as on gdex.pro' reference is slightly opaque but does not bloat the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 10-parameter mutation with no output schema, the description is thin: it does not cover prerequisites (apiKey/accountRef/session key auth flow), success/failure signaling, or how it relates to usdc_get_trade_quote and usdc_retry_sell. The rich schema carries most of the load, but the description leaves agent-facing gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail beyond what the schema already spells out (autoBridge, maxSourceSpendRaw, minUsdcOutRaw all documented there).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Sell a token and receive USDC into the unified USDC wallet') plus the settlement scope. However, it never distinguishes itself from close siblings like sell_token, managed_sell, or limit_sell, which an agent must choose between.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'no auto-funding, as on gdex.pro' clause implies a usage context that routes away from auto-funding flows, but it never explicitly says when to pick this over sell_token or managed_sell. No when-not guidance or alternative naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

usdc_wait_for_tradeA
Read-only

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.

NameRequiredDescriptionDefault
apiKeyNoGDEX API key for AES encryption
requestIdYesrequestId returned by the trade
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
timeoutSecNoMax seconds to wait, default 120
walletAddressNoControl wallet address
sessionPrivateKeyNoSession private key from sign-in

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description nonetheless adds real behavioral context beyond the annotations: a 3s polling cadence, the enumerated steps returned (bridge legs, gas top-up, approve, swap), the outcome vocabulary, and the resubmission prohibition. With annotations carrying the safety signal, a 4 is defensible, but the polling/timeout interaction details remain implicit, so a middling-to-good score is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool does, then the outcome semantics, then the caution. Dense and largely waste-free; the aside 'like gdex.pro's live progress note' is decorative rather than functional, a minor cost.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description is the sole source of return-value documentation, and it delivers: step-by-step results, outcome states, and the tx hash. Combined with the retry/pending semantics and the 3s poll interval, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies. The description adds genuine meaning by tying requestId to the specific producing tools, and by implying timeoutSec governs the pending-vs-timeout outcome; the remaining secret/session parameters are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('follow') and resource ('pending USDC trade') and identifies the requestId provenance (usdc_buy, usdc_buy_with_native, usdc_sell), which distinguishes it from the sibling wait_for_trade and the get/poll tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers the branch on outcome: 'needs_retry' routes to usdc_retry_sell, and 'pending after the timeout' carries an explicit 'never resubmit' prohibition. When-to-use and when-not-to-use are both spelled out with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vote_sentimentC

Cast a bullish/bearish sentiment vote on a token.

NameRequiredDescriptionDefault
dataNo
chainYes
userIdNo
sentimentYes'bullish' | 'bearish'
accountRefNoConnected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat
tokenAddressYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the write nature is known. The description adds no behavioral context beyond that – no auth/permission requirements, no indication whether a vote can be changed or is idempotent, and no rate-limit or side-effect details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is clean, though its brevity borders on under-specification for a 6-parameter write tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with 6 parameters, no output schema, and only 33% schema coverage, the description is inadequate. It omits the accountRef/session requirement, what the vote affects, and any outcome, leaving the agent without enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%; only the sentiment enum is documented. The description explains nothing about chain, tokenAddress, data, userId, or the accountRef parameter that supplies the session key and credentials. With low coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Cast a bullish/bearish sentiment vote on a token.' An agent can understand the action clearly, but the description offers no differentiation from any sibling (e.g., add_comment could plausibly overlap), so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The agent is left to infer when a sentiment vote is appropriate versus other actions in this large tool family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_tradeA
Read-only

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).

NameRequiredDescriptionDefault
requestIdYesrequestId returned by buy_token or sell_token
timeoutSecNoMax seconds to wait, default 120

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and openWorldHint, but the description adds meaningful context beyond them: the polling mechanism, the full set of outcome states (filled, failed, not_found, pending), and the safety caveat about pending/expired ids. Polling interval is not stated, but with no output schema the outcome enumeration carries the key behavioral weight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and followed by the outcome states. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param wait tool with no output schema, the description supplies the outcome values an agent would otherwise lack and clarifies the pending/expired edge case. Nothing essential for correct invocation or interpretation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents both requestId and timeoutSec (default 120). The description repeats 'requestId from buy/sell' without adding syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (follow/poll) and resource (a trade request's result via /v1/trade-status), and anchors itself to buy_token/sell_token requestIds. This distinguishes it from unrelated read tools and clarifies it is the polling step of the trade lifecycle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It establishes the precondition (a requestId from buy_token or sell_token) and a key when-not rule ('never resubmit' on pending). It does not explicitly distinguish from the sibling usdc_wait_for_trade, which is a minor omission.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 35 tool updatesv5.1.0
    • Changedbuy_token13 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"Amount of native token to spend, e.g. '0.1' for 0.1 SOL"New value: +"Native token to spend, e.g. '0.1' for 0.1 SOL; converted exactly to native decimals"
      • changedInput schema / properties / apiKey / description
        Previous value: -"GDEX API key for managed-custody buys (with sessionPrivateKey)."New value: +"GDEX API key used to encrypt the signed trade"
      • changedInput schema / properties / chain / description
        Previous value: -"Chain: 'solana', 'sui', or ChainId number (1=ETH, 8453=Base, 42161=Arbitrum)"New value: +"Chain: 'solana', 'base', or a chain id (8453=Base, 42161=Arbitrum)"
      • changedInput schema / properties / dex / description
        Previous value: -"Preferred DEX (raydium, orca, uniswap-v3, cetus, odos, etc.)"New value: +"Not supported: the backend picks the route. Rejected when set."
      • changedInput schema / properties / inputToken / description
        Previous value: -"Override input token address (default: native)"New value: +"Omit, or the chain's native token. Anything else is rejected (use usdc_buy for USDC)."
      • changedInput schema / properties / priorityFee / description
        Previous value: -"Solana priority fee in lamports (integer, Solana only)"New value: +"Solana priority fee in lamports (integer, max 50000000 = 0.05 SOL). Solana only."
      • changedInput schema / properties / priorityFee / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / referrer / description
        Previous value: -"Referral address"New value: +"Not supported by purchase_v2/sell_v2. Rejected when set."
      • changedInput schema / properties / sessionPrivateKey / description
        Previous value: -"Managed-custody session private key (from sign-in). Required for EVM managed swaps — routes through the session-signed purchase_v2 flow."New value: +"Session private key from sign-in"
      • removedInput schema / properties / slippage / default
        Removed value: -1
      • changedInput schema / properties / slippage / description
        Previous value: -"Max slippage tolerance in percent. Default: 1"New value: +"Slippage percent, Solana and Sui only (sent as bps, max 50). Rejected on EVM, where the account's stored slippage applies. Omit to use the stored setting."
      • changedInput schema / properties / tokenAddress / description
        Previous value: -"Contract address of the token to buy"New value: +"Contract address (mint on Solana) of the token to buy"
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address to trade from"New value: +"Control wallet address (the GDEX userId)"
    • Addeddelete_copy_trade
    • Addeddelete_hl_copy_trade
    • Addedgdex_execute_trade
    • Addedgdex_manage_position
    • Addedgdex_operation
    • Addedgdex_positions
    • Addedgdex_preview_trade
    • Addedgdex_status
    • Changedget_balances6 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "GDEX API key (with sessionPrivateKey)",
        +  "type": "string"
        +}
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Encrypted session data, instead of sessionPrivateKey + apiKey",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionPrivateKey
        Added value: +{
        +  "description": "Session private key from sign-in (with apiKey)",
        +  "type": "string"
        +}
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address"New value: +"Control wallet address (the GDEX userId), not the managed trading wallet"
      • changedInput schema / required
        Previous value: -[
        -  "walletAddress",
        -  "chain"
        -]New value: +[
        +  "chain"
        +]
    • Changedget_hl_outcome_volumes1 field changed
      • changedInput schema / properties / coins / description
        Previous value: -"Outcome coin names, e.g. [\"#1010\",\"#1011\"]"New value: +"Outcome side coins, e.g. [\"#143150\",\"#143151\"]"
    • Changedget_portfolio7 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "GDEX API key (with sessionPrivateKey)",
        +  "type": "string"
        +}
      • changedInput schema / properties / chain / description
        Previous value: -"Optional chain filter"New value: +"Chain to read (holdings are per chain)"
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Encrypted session data, instead of sessionPrivateKey + apiKey",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionPrivateKey
        Added value: +{
        +  "description": "Session private key from sign-in (with apiKey)",
        +  "type": "string"
        +}
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address to query"New value: +"Control wallet address (the GDEX userId), not the managed trading wallet"
      • changedInput schema / required
        Previous value: -[
        -  "walletAddress"
        -]New value: +[
        +  "chain"
        +]
    • Addedget_skill_file
    • Changedget_trade_history12 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / properties / chain / description
        Previous value: -"Optional chain filter"New value: +"Chain identifier"
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "nextCursor from the previous page",
        +  "type": "number"
        +}
      • removedInput schema / properties / endTime
        Removed value: -{
        -  "description": "End Unix timestamp",
        -  "type": "number"
        -}
      • removedInput schema / properties / limit / default
        Removed value: -20
      • addedInput schema / properties / limit / description
        Added value: +"Trades per page, 1-50 (default 50)"
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "type": "number"
        -}
      • addedInput schema / properties / sessionPrivateKey
        Added value: +{
        +  "description": "Not needed (history is keyed by the control wallet); present so accountRef can fill walletAddress",
        +  "type": "string"
        +}
      • removedInput schema / properties / startTime
        Removed value: -{
        -  "description": "Start Unix timestamp",
        -  "type": "number"
        -}
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address"New value: +"Control wallet address (the GDEX userId)"
      • changedInput schema / required
        Previous value: -[
        -  "walletAddress"
        -]New value: +[
        +  "chain"
        +]
    • Addedget_trading_funds
    • Changedget_wallet_info6 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "GDEX API key (with sessionPrivateKey)",
        +  "type": "string"
        +}
      • addedInput schema / properties / data
        Added value: +{
        +  "description": "Encrypted session data, instead of sessionPrivateKey + apiKey",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionPrivateKey
        Added value: +{
        +  "description": "Session private key from sign-in (with apiKey)",
        +  "type": "string"
        +}
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address"New value: +"Control wallet address (the GDEX userId), not the managed trading wallet"
      • changedInput schema / required
        Previous value: -[
        -  "walletAddress",
        -  "chain"
        -]New value: +[
        +  "chain"
        +]
    • Changedhl_cancel_outcome_order7 fields changed
      • addedInput schema / properties / apiKey / description
        Added value: +"Structured mode: API key"
      • addedInput schema / properties / coin / description
        Added value: +"Side coin \"#<assetId>\" of the order"
      • addedInput schema / properties / computedData / description
        Added value: +"Pre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields)."
      • removedInput schema / properties / dex
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / orderId / description
        Added value: +"Numeric Hyperliquid oid"
      • addedInput schema / properties / sessionPrivateKey / description
        Added value: +"Structured mode: session private key"
      • addedInput schema / properties / walletAddress / description
        Added value: +"Structured mode: CONTROL wallet address from sign-in (not the managed address)"
    • Changedhl_close_outcome_order11 fields changed
      • addedInput schema / properties / apiKey / description
        Added value: +"Structured mode: API key"
      • addedInput schema / properties / coin / description
        Added value: +"Side coin \"#<assetId>\" from hl_outcomes sides[].coin. Give exactly one of coin / sideIndex / sideLabel."
      • addedInput schema / properties / computedData / description
        Added value: +"Pre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields)."
      • removedInput schema / properties / dex
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / managedAddress
        Added value: +{
        +  "description": "Managed wallet; enables position-aware partial-exit checks",
        +  "type": "string"
        +}
      • addedInput schema / properties / price / description
        Added value: +"Limit price (omit for isMarket)"
      • addedInput schema / properties / sessionPrivateKey / description
        Added value: +"Structured mode: session private key"
      • addedInput schema / properties / sideIndex
        Added value: +{
        +  "description": "Side index in sides[] (sides are NOT always Yes/No; read the labels)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / sideLabel
        Added value: +{
        +  "description": "Exact side label from sides[].label, e.g. \"No\" or a team name",
        +  "type": "string"
        +}
      • addedInput schema / properties / size / description
        Added value: +"Contracts to sell; omit for the full position"
      • addedInput schema / properties / walletAddress / description
        Added value: +"Structured mode: CONTROL wallet address from sign-in (not the managed address)"
    • Changedhl_create_outcome_order15 fields changed
      • addedInput schema / properties / apiKey / description
        Added value: +"Structured mode: API key"
      • changedInput schema / properties / coin / description
        Previous value: -"Outcome asset id, e.g. \"#1010\" (outcome 101 Yes)"New value: +"Side coin \"#<assetId>\" from hl_outcomes sides[].coin. Give exactly one of coin / sideIndex / sideLabel."
      • addedInput schema / properties / computedData / description
        Added value: +"Pre-built mode ONLY: encrypted payload. Must be sent alone (no structured fields)."
      • removedInput schema / properties / dex
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / isBuy / description
        Added value: +"Structured mode: true buys side tokens; false sells held tokens"
      • addedInput schema / properties / isMarket / description
        Added value: +"Take the book at ±5% of top of book"
      • addedInput schema / properties / managedAddress
        Added value: +{
        +  "description": "Managed wallet; enables position-aware sell checks",
        +  "type": "string"
        +}
      • addedInput schema / properties / outcomeId / description
        Added value: +"Structured mode: outcome market id"
      • changedInput schema / properties / price / description
        Previous value: -"Limit price in [0,1]; pass \"0\" for market"New value: +"Limit price, e.g. \"0.42\" (omit for isMarket)"
      • addedInput schema / properties / reduceOnly / description
        Added value: +"Ignored by the backend"
      • addedInput schema / properties / sessionPrivateKey / description
        Added value: +"Structured mode: session private key"
      • addedInput schema / properties / sideIndex
        Added value: +{
        +  "description": "Side index in sides[] (sides are NOT always Yes/No; read the labels)",
        +  "type": "integer"
        +}
      • addedInput schema / properties / sideLabel
        Added value: +{
        +  "description": "Exact side label from sides[].label, e.g. \"No\" or a team name",
        +  "type": "string"
        +}
      • changedInput schema / properties / size / description
        Previous value: -"Order size in contracts"New value: +"Whole contracts, e.g. \"30\""
      • changedInput schema / properties / walletAddress / description
        Previous value: -"CONTROL wallet address from sign-in"New value: +"Structured mode: CONTROL wallet address from sign-in (not the managed address)"
    • Changedhl_outcome_account3 fields changed
      • changedInput schema / properties / outcomeId / description
        Previous value: -"Outcome market id, e.g. 101"New value: +"Outcome market id from hl_outcomes"
      • addedInput schema / properties / raw
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / userAddress / description
        Added value: +"MANAGED wallet address (outcome balances live there)"
    • Addedhl_outcome_check_collateral
    • Changedhl_outcomes12 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "Full market records (rules, params, settlement). Default: compact rows",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / dex
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / excludeFallback
        Added value: +{
        +  "description": "Hide \"none of the listed outcomes\" legs",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Markets per page, default 20",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Pagination offset (use nextOffset)",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Case-insensitive text match on title / side labels / params, or an exact outcomeId",
        +  "type": "string"
        +}
      • addedInput schema / properties / raw
        Added value: +{
        +  "description": "Return the raw backend payload instead",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / sortBy
        Added value: +{
        +  "description": "volume: highest 24h volume first (implies withVolume); expiry: soonest first",
        +  "enum": [
        +    "volume",
        +    "expiry"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / state
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "active",
        +        "pre_launch",
        +        "expired",
        +        "settled"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "$ref": "#/properties/state/anyOf/0"
        +      },
        +      "type": "array"
        +    }
        +  ],
        +  "description": "Filter by trading state, e.g. \"active\""
        +}
      • removedInput schema / properties / status
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / volumeTimeoutMs
        Added value: +{
        +  "maximum": 10000,
        +  "minimum": 100,
        +  "type": "integer"
        +}
      • changedInput schema / properties / withVolume / description
        Previous value: -"Include 24h volume per market (slower)"New value: +"Attach 24h volume (bounded by volumeTimeoutMs, default 2500)"
    • Changedlimit_buy4 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"Native token to spend in raw units (wei/lamports)"New value: +"Native token to spend in raw units (wei/lamports), a positive integer string"
      • changedInput schema / properties / lossPercent / description
        Previous value: -"Stop-loss % below trigger (e.g. '25'), '0' to skip"New value: +"Stop-loss % below trigger, whole number under 100 (e.g. '25'), '0' to skip"
      • changedInput schema / properties / profitPercent / description
        Previous value: -"Take-profit % above trigger (e.g. '50'), '0' to skip"New value: +"Take-profit % above trigger, whole number (e.g. '50'), '0' to skip"
      • changedInput schema / properties / triggerPrice / description
        Previous value: -"USD price at which to trigger the buy"New value: +"USD price at which to trigger the buy (plain decimal)"
    • Changedlimit_sell2 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"Token amount in raw units"New value: +"Token amount in raw units (token decimals), a positive integer string"
      • changedInput schema / properties / triggerPrice / description
        Previous value: -"USD price at which to trigger the sell"New value: +"USD price at which to trigger the sell (plain decimal)"
    • Addedpause_copy_trade
    • Addedpause_hl_copy_trade
    • Addedresume_copy_trade
    • Addedresume_hl_copy_trade
    • Changedsell_token12 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / apiKey
        Added value: +{
        +  "description": "GDEX API key used to encrypt the signed trade",
        +  "type": "string"
        +}
      • changedInput schema / properties / dex / description
        Previous value: -"Preferred DEX"New value: +"Not supported: the backend picks the route. Rejected when set."
      • changedInput schema / properties / outputToken / description
        Previous value: -"Override output token address"New value: +"Omit, or the chain's native token. Anything else is rejected (use usdc_sell for USDC)."
      • changedInput schema / properties / priorityFee / description
        Previous value: -"Solana priority fee in lamports (integer, Solana only)"New value: +"Solana priority fee in lamports (integer, max 50000000 = 0.05 SOL). Solana only."
      • changedInput schema / properties / priorityFee / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / referrer / description
        Previous value: -"Referral address"New value: +"Not supported by purchase_v2/sell_v2. Rejected when set."
      • addedInput schema / properties / sessionPrivateKey
        Added value: +{
        +  "description": "Session private key from sign-in",
        +  "type": "string"
        +}
      • removedInput schema / properties / slippage / default
        Removed value: -1
      • changedInput schema / properties / slippage / description
        Previous value: -"Max slippage tolerance in percent"New value: +"Slippage percent, Solana and Sui only (sent as bps, max 50). Rejected on EVM, where the account's stored slippage applies. Omit to use the stored setting."
      • addedInput schema / properties / tokenDecimals
        Added value: +{
        +  "description": "Only for an absolute amount of a token missing from the managed holdings",
        +  "type": "integer"
        +}
      • changedInput schema / properties / walletAddress / description
        Previous value: -"Wallet address to trade from"New value: +"Control wallet address (the GDEX userId)"
    • Changedupdate_copy_trade12 fields changed
      • changedInput schema / properties / buyMode / description
        Previous value: -"1 = fixed, 2 = percentage"New value: +"1 = fixed SOL amount, 2 = percentage of trader amount"
      • changedInput schema / properties / copyBuyAmount / description
        Previous value: -"Amount or percentage"New value: +"SOL amount (mode 1) or percentage 0-100 (mode 2)"
      • addedInput schema / properties / copySell
        Added value: +{
        +  "default": false,
        +  "description": "Also copy sells",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / copyTradeName / description
        Previous value: -"Updated label"New value: +"Label"
      • addedInput schema / properties / excludedDexNumbers
        Added value: +{
        +  "description": "DEX numbers to exclude",
        +  "items": {
        +    "type": "number"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / excludedProgramIds
        Removed value: -{
        -  "description": "Program IDs to exclude",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • addedInput schema / properties / gasPrice
        Added value: +{
        +  "description": "Priority fee setting (default \"0\")",
        +  "type": "string"
        +}
      • addedInput schema / properties / isBuyExistingToken
        Added value: +{
        +  "default": false,
        +  "description": "Buy tokens the trader already holds",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / isChangeStatus / description
        Previous value: -"WARNING: Also permanently deletes"New value: +"Toggle active/paused relative to the stored state"
      • changedInput schema / properties / isDelete / description
        Previous value: -"Permanently delete the copy trade"New value: +"Permanently delete the configuration (positions stay open)"
      • changedInput schema / properties / lossPercent / description
        Previous value: -"Stop-loss %"New value: +"Stop-loss % (> 0, < 100)"
      • changedInput schema / properties / profitPercent / description
        Previous value: -"Take-profit %"New value: +"Take-profit % (> 0)"
    • Addedupdate_copy_trade_settings
    • Changedupdate_hl_copy_trade7 fields changed
      • changedInput schema / properties / copyMode / description
        Previous value: -"1 = fixed, 2 = proportion"New value: +"1 = fixed USD per order, 2 = proportion"
      • changedInput schema / properties / fixedAmountCostPerOrder / description
        Previous value: -"Amount or ratio"New value: +"USD amount (mode 1) or ratio (mode 2)"
      • changedInput schema / properties / isChangeStatus / description
        Previous value: -"WARNING: Also permanently deletes"New value: +"Toggle active/paused relative to the stored state"
      • changedInput schema / properties / isDelete / description
        Previous value: -"Permanently delete"New value: +"Permanently delete the configuration (positions stay open)"
      • changedInput schema / properties / lossPercent / description
        Previous value: -"Stop-loss %"New value: +"Stop-loss % (> 0, < 100)"
      • addedInput schema / properties / oppositeCopy / description
        Added value: +"Trade opposite to the trader"
      • changedInput schema / properties / profitPercent / description
        Previous value: -"Take-profit %"New value: +"Take-profit % (> 0)"
    • Addedupdate_hl_copy_trade_settings
    • Changedupdate_order4 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"New amount in raw units"New value: +"New amount in raw units (required unless isDelete)"
      • changedInput schema / properties / lossPercent / description
        Previous value: -"New SL % (buy orders only)"New value: +"New SL %, whole number under 100, '0' = none (required unless isDelete)"
      • changedInput schema / properties / profitPercent / description
        Previous value: -"New TP % (buy orders only)"New value: +"New TP %, whole number, '0' = none; buy orders only, sell orders ignore it (required unless isDelete)"
      • changedInput schema / properties / triggerPrice / description
        Previous value: -"New trigger price in USD"New value: +"New trigger price in USD (required unless isDelete)"
    • Addedwait_for_trade
  2. 62 tool updatesv4.12.0
    • Changedadd_comment2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tokenAddress",
        -  "chain",
        -  "message",
        -  "userId"
        -]New value: +[
        +  "tokenAddress",
        +  "chain",
        +  "message"
        +]
    • Changedbuild_trade_payload2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "action",
        -  "userId",
        -  "tokenAddress",
        -  "amount",
        -  "nonce",
        -  "sessionPrivateKey"
        -]New value: +[
        +  "action",
        +  "tokenAddress",
        +  "amount",
        +  "nonce"
        +]
    • Changedbuy_token3 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / amount / pattern
        Added value: +"^\\d+(\\.\\d+)?$"
      • changedInput schema / properties / priorityFee / description
        Previous value: -"Solana priority fee in SOL"New value: +"Solana priority fee in lamports (integer, Solana only)"
    • Changedcancel_all_perp_orders2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey"
        -]
    • Changedcancel_perp_order2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "coin",
        -  "orderId"
        -]New value: +[
        +  "coin",
        +  "orderId"
        +]
    • Changedclose_all_positions2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey"
        -]
    • Changedclose_perp_position8 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / properties / coin / description
        Previous value: -"Asset symbol to close"New value: +"Asset symbol to close; builder-DEX assets as 'dex:ASSET', e.g. 'xyz:TSLA'"
      • addedInput schema / properties / dex
        Added value: +{
        +  "description": "Builder DEX for a bare coin, e.g. 'xyz' (omit for the default dex)",
        +  "type": "string"
        +}
      • addedInput schema / properties / positionAddress
        Added value: +{
        +  "description": "Address whose HL account holds the position — normally the MANAGED wallet from sign-in. Defaults to walletAddress.",
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Price for the close order"New value: +"Close price; omit or '0' to use the mark price"
      • changedInput schema / properties / size / description
        Previous value: -"Size to close (use full position size for 100% close)"New value: +"Size to close as a decimal string; omit to close the whole position"
      • addedInput schema / properties / szDecimals
        Added value: +{
        +  "description": "Market size decimals (HL meta szDecimals); rejects a size with more decimals",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "coin",
        -  "size",
        -  "price"
        -]New value: +[
        +  "coin"
        +]
    • Changedcreate_copy_trade2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "traderWallet",
        -  "copyTradeName",
        -  "chainId",
        -  "buyMode",
        -  "copyBuyAmount",
        -  "lossPercent",
        -  "profitPercent"
        -]New value: +[
        +  "traderWallet",
        +  "copyTradeName",
        +  "chainId",
        +  "buyMode",
        +  "copyBuyAmount",
        +  "lossPercent",
        +  "profitPercent"
        +]
    • Changedcreate_hl_copy_trade2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "traderWallet",
        -  "copyTradeName",
        -  "copyMode",
        -  "fixedAmountCostPerOrder",
        -  "lossPercent",
        -  "profitPercent"
        -]New value: +[
        +  "traderWallet",
        +  "copyTradeName",
        +  "copyMode",
        +  "fixedAmountCostPerOrder",
        +  "lossPercent",
        +  "profitPercent"
        +]
    • Changeddirect_cancel_order2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "privateKey",
        -  "coin",
        -  "orderId"
        -]New value: +[
        +  "coin",
        +  "orderId"
        +]
    • Changedexecute_bridge2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "fromChainId",
        -  "toChainId",
        -  "amount",
        -  "userId",
        -  "sessionPrivateKey",
        -  "apiKey"
        -]New value: +[
        +  "fromChainId",
        +  "toChainId",
        +  "amount"
        +]
    • Changedexecute_cross_perp2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "privateKey",
        -  "coin",
        -  "isLong",
        -  "price",
        -  "positionSize"
        -]New value: +[
        +  "coin",
        +  "isLong",
        +  "price",
        +  "positionSize"
        +]
    • Changedexecute_isolated_perp2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "privateKey",
        -  "coin",
        -  "isLong",
        -  "price",
        -  "positionSize",
        -  "leverage"
        -]New value: +[
        +  "coin",
        +  "isLong",
        +  "price",
        +  "positionSize",
        +  "leverage"
        +]
    • Changedexecute_spot2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "privateKey",
        -  "coin",
        -  "isBuy",
        -  "price",
        -  "size"
        -]New value: +[
        +  "coin",
        +  "isBuy",
        +  "price",
        +  "size"
        +]
    • Changedexplain_workflow1 field changed
      • changedInput schema / properties / workflow / enum
        Previous value: -[
        -  "spot-trade",
        -  "perp-trade",
        -  "copy-trade",
        -  "perp-copy-trade",
        -  "bridge",
        -  "auth",
        -  "limit-order",
        -  "perp-funding",
        -  "full-trading-app"
        -]New value: +[
        +  "spot-trade",
        +  "perp-trade",
        +  "copy-trade",
        +  "perp-copy-trade",
        +  "bridge",
        +  "auth",
        +  "limit-order",
        +  "perp-funding",
        +  "full-trading-app",
        +  "usdc-wallet"
        +]
    • Addedgdex_accounts
    • Addedgdex_connect
    • Addedgdex_disconnect
    • Changedgenerate_evm_wallet2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / revealSecrets
        Added value: +{
        +  "description": "Return privateKey and mnemonic too (they then appear in the conversation)",
        +  "type": "boolean"
        +}
    • Changedgenerate_session_keypair2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / revealPrivateKey
        Added value: +{
        +  "description": "Return sessionPrivateKey too (it then appears in the conversation)",
        +  "type": "boolean"
        +}
    • Changedget_bridge_orders2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId",
        -  "data"
        -]
    • Changedget_copy_trade_list2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId",
        -  "data"
        -]
    • Changedget_copy_trade_tx_list2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId",
        -  "data"
        -]
    • Changedget_hl_copy_trade_list2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId",
        -  "data"
        -]
    • Changedget_hl_copy_trade_tx_list2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId",
        -  "data"
        -]
    • Changedget_limit_orders2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "userId",
        -  "data",
        -  "chainId"
        -]New value: +[
        +  "chainId"
        +]
    • Changedget_sdk_pattern1 field changed
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "spot-trade",
        -  "perp-trade",
        -  "copy-trade",
        -  "perp-copy-trade",
        -  "bridge",
        -  "auth",
        -  "portfolio",
        -  "token-discovery",
        -  "limit-orders",
        -  "perp-funding",
        -  "wallet-setup"
        -]New value: +[
        +  "spot-trade",
        +  "perp-trade",
        +  "copy-trade",
        +  "perp-copy-trade",
        +  "bridge",
        +  "auth",
        +  "portfolio",
        +  "token-discovery",
        +  "limit-orders",
        +  "perp-funding",
        +  "wallet-setup",
        +  "usdc-wallet"
        +]
    • Changedget_watchlist2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "userId"
        -]
    • Changedhl_cancel_outcome_order1 field changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
    • Changedhl_close_outcome_order1 field changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
    • Changedhl_create_outcome_order1 field changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
    • Changedhl_enable_trading1 field changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
    • Changedhl_swap_collateral1 field changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
    • Changedlimit_buy2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "chainId",
        -  "tokenAddress",
        -  "amount",
        -  "triggerPrice"
        -]New value: +[
        +  "chainId",
        +  "tokenAddress",
        +  "amount",
        +  "triggerPrice"
        +]
    • Changedlimit_sell2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "chainId",
        -  "tokenAddress",
        -  "amount",
        -  "triggerPrice"
        -]New value: +[
        +  "chainId",
        +  "tokenAddress",
        +  "amount",
        +  "triggerPrice"
        +]
    • Changedopen_perp_position2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "coin",
        -  "isLong",
        -  "price",
        -  "size"
        -]New value: +[
        +  "coin",
        +  "isLong",
        +  "price",
        +  "size"
        +]
    • Changedperp_deposit2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "tokenAddress",
        -  "amount"
        -]New value: +[
        +  "tokenAddress",
        +  "amount"
        +]
    • Changedperp_withdraw2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "amount"
        -]New value: +[
        +  "amount"
        +]
    • Changedplace_perp_order4 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • addedInput schema / properties / isMarket / description
        Added value: +"True for market (via create_order), false for limit"
      • changedInput schema / properties / price / description
        Previous value: -"Price in USD"New value: +"Price in USD ('0' with isMarket=true uses the mark price)"
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "coin",
        -  "isLong",
        -  "price",
        -  "size"
        -]New value: +[
        +  "coin",
        +  "isLong",
        +  "price",
        +  "size"
        +]
    • Changedsell_token2 fields changed
      • addedInput schema / properties / amount / pattern
        Added value: +"^\\d+(\\.\\d+)?%?$"
      • changedInput schema / properties / priorityFee / description
        Previous value: -"Solana priority fee in SOL"New value: +"Solana priority fee in lamports (integer, Solana only)"
    • Changedset_leverage2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "walletAddress",
        -  "sessionPrivateKey",
        -  "coin",
        -  "leverage"
        -]New value: +[
        +  "coin",
        +  "leverage"
        +]
    • Changedtrending_register2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tokenAddress",
        -  "chain",
        -  "userId"
        -]New value: +[
        +  "tokenAddress",
        +  "chain"
        +]
    • Changedupdate_copy_trade2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "copyTradeId",
        -  "traderWallet",
        -  "chainId",
        -  "buyMode",
        -  "copyBuyAmount",
        -  "lossPercent",
        -  "profitPercent"
        -]New value: +[
        +  "copyTradeId",
        +  "traderWallet",
        +  "chainId",
        +  "buyMode",
        +  "copyBuyAmount",
        +  "lossPercent",
        +  "profitPercent"
        +]
    • Changedupdate_hl_copy_trade2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "copyTradeId",
        -  "traderWallet",
        -  "copyTradeName",
        -  "copyMode",
        -  "fixedAmountCostPerOrder",
        -  "lossPercent",
        -  "profitPercent"
        -]New value: +[
        +  "copyTradeId",
        +  "traderWallet",
        +  "copyTradeName",
        +  "copyMode",
        +  "fixedAmountCostPerOrder",
        +  "lossPercent",
        +  "profitPercent"
        +]
    • Changedupdate_order2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "apiKey",
        -  "userId",
        -  "sessionPrivateKey",
        -  "chainId",
        -  "orderId"
        -]New value: +[
        +  "chainId",
        +  "orderId"
        +]
    • Addedusdc_buy
    • Addedusdc_buy_with_native
    • Addedusdc_convert_native
    • Addedusdc_estimate_bridge
    • Addedusdc_execute_bridge
    • Addedusdc_get_balances
    • Addedusdc_get_bridge_orders
    • Addedusdc_get_bridge_status
    • Addedusdc_get_convert_quote
    • Addedusdc_get_deferred_trade
    • Addedusdc_get_funding_status
    • Addedusdc_get_pending_trades
    • Addedusdc_get_trade_quote
    • Addedusdc_retry_sell
    • Addedusdc_sell
    • Addedusdc_wait_for_trade
    • Changedvote_sentiment2 fields changed
      • addedInput schema / properties / accountRef
        Added value: +{
        +  "description": "Connected account from gdex_connect. Supplies session key, wallet address, API key and session data so no secret is passed in chat",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "tokenAddress",
        -  "chain",
        -  "sentiment",
        -  "userId"
        -]New value: +[
        +  "tokenAddress",
        +  "chain",
        +  "sentiment"
        +]
  3. 117 tool updatesv4.11.3
    • First observedadd_comment
    • First observedassociate_email
    • First observedauth_login
    • First observedbuild_sign_in_payload
    • First observedbuild_trade_payload
    • First observedbuy_token
    • First observedcancel_all_perp_orders
    • First observedcancel_perp_order
    • First observedchange_watchlist
    • First observedclose_all_positions
    • First observedclose_perp_position
    • First observedcreate_copy_trade
    • First observedcreate_hl_copy_trade
    • First observeddirect_cancel_order
    • First observedestimate_bridge
    • First observedexecute_bridge
    • First observedexecute_cross_perp
    • First observedexecute_isolated_perp
    • First observedexecute_spot
    • First observedexplain_workflow
    • First observedgenerate_evm_wallet
    • First observedgenerate_pnl
    • First observedgenerate_session_keypair
    • First observedget_account_state
    • First observedget_all_mid_prices
    • First observedget_api_info
    • First observedget_balances
    • First observedget_bigbuys
    • First observedget_bridge_orders
    • First observedget_chain_info
    • First observedget_comments
    • First observedget_component_guide
    • First observedget_copy_trade_custom_wallets
    • First observedget_copy_trade_dexes
    • First observedget_copy_trade_gems
    • First observedget_copy_trade_guide
    • First observedget_copy_trade_list
    • First observedget_copy_trade_tx_list
    • First observedget_copy_trade_wallets
    • First observedget_currently_live
    • First observedget_hl_all_assets
    • First observedget_hl_clearinghouse_state
    • First observedget_hl_copy_trade_list
    • First observedget_hl_copy_trade_tx_list
    • First observedget_hl_deposit_tokens
    • First observedget_hl_meta_and_asset_ctxs
    • First observedget_hl_open_orders
    • First observedget_hl_outcome_volumes
    • First observedget_hl_perp_dexes
    • First observedget_hl_spot_state
    • First observedget_hl_top_traders
    • First observedget_hl_top_traders_by_pnl
    • First observedget_hl_trade_history
    • First observedget_hl_user_stats
    • First observedget_limit_orders
    • First observedget_live_status
    • First observedget_mark_price
    • First observedget_native_prices
    • First observedget_newest_tokens
    • First observedget_nof1_analytics
    • First observedget_ohlcv
    • First observedget_perp_positions
    • First observedget_portfolio
    • First observedget_retailers
    • First observedget_sdk_pattern
    • First observedget_token_details
    • First observedget_token_image
    • First observedget_token_trades
    • First observedget_top_tokens
    • First observedget_top_traders
    • First observedget_trade_history
    • First observedget_trader_leverage
    • First observedget_trading_guide
    • First observedget_trending_tokens
    • First observedget_usdc_balance
    • First observedget_wallet_info
    • First observedget_wallet_performance
    • First observedget_watchlist
    • First observedget_xstocks
    • First observedget_zora_tokens
    • First observedhl_builder_referral
    • First observedhl_cancel_outcome_order
    • First observedhl_close_outcome_order
    • First observedhl_create_outcome_order
    • First observedhl_enable_trading
    • First observedhl_list_user_copy_pnl
    • First observedhl_outcome_account
    • First observedhl_outcomes
    • First observedhl_ref_claim
    • First observedhl_ref_info
    • First observedhl_swap_collateral
    • First observedhl_tx_list
    • First observedimport_token
    • First observedlimit_buy
    • First observedlimit_sell
    • First observedmanaged_purchase
    • First observedmanaged_sell
    • First observedmanaged_sign_in
    • First observedmanaged_trade_status
    • First observedoauth_login
    • First observedopen_perp_position
    • First observedperp_deposit
    • First observedperp_withdraw
    • First observedplace_perp_order
    • First observedsearch_gdex_docs
    • First observedsell_token
    • First observedset_leverage
    • First observedtransfer_native
    • First observedtransfer_token
    • First observedtrending_booking_status
    • First observedtrending_list
    • First observedtrending_options
    • First observedtrending_register
    • First observedupdate_copy_trade
    • First observedupdate_hl_copy_trade
    • First observedupdate_order
    • First observedvote_sentiment

TDQS

C2.7/5.0

Scored across 154 tools

Disambiguation2/5

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.

Naming Consistency2/5

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.

Tool Count1/5

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.

Completeness4/5

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.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server providing unified access to over 144 tools for lending, trading, and staking across six major DeFi protocols on the Stacks Bitcoin Layer 2. It enables AI agents to perform complex blockchain operations and interact with the DeFi ecosystem using natural language commands.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    AI-to-AI marketplace MCP server with 46 tools — swap 65+ crypto tokens on 7 chains, rent GPUs, trade 25 tokenized stocks, on-chain escrow (Solana + Base), DeFi yields, sentiment analysis, wallet monitoring, and image generation. Supports USDC payments across 14 blockchains.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP (Model Context Protocol) server for the MAIN DEX on Base. Provides AI agents (Claude, Cursor, etc.) with tools to interact with the protocol: swap tokens, manage liquidity, enter/exit ALM strategies(10% APY), and more.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server providing AI agents with native access to Jupiter's full DeFi stack on Solana. It offers 17 tools covering swaps, tokens, lending, limit orders, DCA, prediction markets, perpetuals, and portfolio management.
    16
    MIT